[
  {
    "path": "Check Maven Webapp/.classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" output=\"target/classes\" path=\"src/main/java\">\n\t\t<attributes>\n\t\t\t<attribute name=\"optional\" value=\"true\"/>\n\t\t\t<attribute name=\"maven.pomderived\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry excluding=\"**\" kind=\"src\" output=\"target/classes\" path=\"src/main/resources\">\n\t\t<attributes>\n\t\t\t<attribute name=\"maven.pomderived\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"src\" output=\"target/test-classes\" path=\"src/test/java\">\n\t\t<attributes>\n\t\t\t<attribute name=\"optional\" value=\"true\"/>\n\t\t\t<attribute name=\"maven.pomderived\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER\">\n\t\t<attributes>\n\t\t\t<attribute name=\"org.eclipse.jst.component.dependency\" value=\"/WEB-INF/lib\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER\">\n\t\t<attributes>\n\t\t\t<attribute name=\"maven.pomderived\" value=\"true\"/>\n\t\t\t<attribute name=\"org.eclipse.jst.component.dependency\" value=\"/WEB-INF/lib\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5\">\n\t\t<attributes>\n\t\t\t<attribute name=\"maven.pomderived\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"output\" path=\"target/classes\"/>\n</classpath>\n"
  },
  {
    "path": "Check Maven Webapp/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>Check Maven Webapp</name>\n\t<comment></comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.common.project.facet.core.builder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.validation.validationbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.maven.ide.eclipse.maven2Builder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>com.genuitec.eclipse.springframework.springbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.m2e.core.maven2Builder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>com.genuitec.eclipse.springframework.springnature</nature>\n\t\t<nature>org.maven.ide.eclipse.maven2Nature</nature>\n\t\t<nature>org.eclipse.m2e.core.maven2Nature</nature>\n\t\t<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>\n\t\t<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>\n\t\t<nature>org.eclipse.wst.common.project.facet.core.nature</nature>\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\n\t\t<nature>org.eclipse.wst.jsdt.core.jsNature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": "Check Maven Webapp/.settings/.jsdtscope",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src/main/webapp\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.JRE_CONTAINER\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.WebProject\">\n\t\t<attributes>\n\t\t\t<attribute name=\"hide\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.baseBrowserLibrary/StandardBrowser/html5\"/>\n\t<classpathentry kind=\"output\" path=\"\"/>\n</classpath>\n"
  },
  {
    "path": "Check Maven Webapp/.settings/com.genuitec.eclipse.core.prefs",
    "content": "clsCnt=57\neclipse.preferences.version=1\nlocCnt=5725\npkgCnt=19\nsTime=2017\\u5E743\\u670822\\u65E5 \\u661F\\u671F\\u4E09 \\u4E0B\\u534807\\u65F611\\u520623\\u79D2 GMT+08\\:00\nsrcCnt=3\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.core.resources.prefs",
    "content": "eclipse.preferences.version=1\nencoding//src/main/webapp/WEB-INF/pages/user/about.jsp=UTF-8\nencoding//src/main/webapp/WEB-INF/pages/user/index.jsp=UTF-8\nencoding//src/main/webapp/WEB-INF/pages/user/userinfo.jsp=UTF-8\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.jdt.core.prefs",
    "content": "eclipse.preferences.version=1\norg.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\norg.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\norg.eclipse.jdt.core.compiler.compliance=1.5\norg.eclipse.jdt.core.compiler.problem.assertIdentifier=error\norg.eclipse.jdt.core.compiler.problem.enumIdentifier=error\norg.eclipse.jdt.core.compiler.problem.forbiddenReference=warning\norg.eclipse.jdt.core.compiler.source=1.5\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.ltk.core.refactoring.prefs",
    "content": "eclipse.preferences.version=1\norg.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.m2e.core.prefs",
    "content": "activeProfiles=\neclipse.preferences.version=1\nresolveWorkspaceProjects=true\nversion=1\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.wst.common.component",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project-modules id=\"moduleCoreId\" project-version=\"1.5.0\">\n    <wb-module deploy-name=\"Check Maven Webapp\">\n        <wb-resource deploy-path=\"/WEB-INF/classes\" source-path=\"/src/main/java\"/>\n        <wb-resource deploy-path=\"/\" source-path=\"/target/m2e-jee/web-resources\"/>\n        <wb-resource deploy-path=\"/\" source-path=\"/src/main/webapp\" tag=\"defaultRootSource\"/>\n        <wb-resource deploy-path=\"/WEB-INF/classes\" source-path=\"/src/main/resources\"/>\n        <property name=\"context-root\" value=\"Check\"/>\n        <property name=\"java-output-path\" value=\"/Check Maven Webapp/target/classes\"/>\n    </wb-module>\n</project-modules>\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.wst.common.project.facet.core.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<faceted-project>\n  <fixed facet=\"wst.jsdt.web\"/>\n  <installed facet=\"jst.web\" version=\"2.3\"/>\n  <installed facet=\"maven\" version=\"1.0\"/>\n  <installed facet=\"wst.jsdt.web\" version=\"1.0\"/>\n  <installed facet=\"java\" version=\"1.6\"/>\n</faceted-project>\n"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.container",
    "content": "org.eclipse.wst.jsdt.launching.baseBrowserLibrary"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.name",
    "content": "Window"
  },
  {
    "path": "Check Maven Webapp/.settings/org.eclipse.wst.validation.prefs",
    "content": "disabled=06target\neclipse.preferences.version=1\n"
  },
  {
    "path": "Check Maven Webapp/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<groupId>edu.fjnu.online</groupId>\n\t<artifactId>Check</artifactId>\n\t<packaging>war</packaging>\n\t<version>0.0.1-SNAPSHOT</version>\n\t<name>Check Maven Webapp</name>\n\t<url>http://maven.apache.org</url>\n\n\t<properties>\n\t\t<org.springframework.version>3.2.2.RELEASE</org.springframework.version>\n\t</properties>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-webmvc</artifactId>\n\t\t\t<version>${org.springframework.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-orm</artifactId>\n\t\t\t<version>${org.springframework.version}</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.aspectj</groupId>\n\t\t\t<artifactId>com.springsource.org.aspectj.weaver</artifactId>\n\t\t\t<version>1.6.8.RELEASE</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis</artifactId>\n\t\t\t<version>3.2.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis-spring</artifactId>\n\t\t\t<version>1.2.0</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>c3p0</groupId>\n\t\t\t<artifactId>c3p0</artifactId>\n\t\t\t<version>0.9.1.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>mysql</groupId>\n\t\t\t<artifactId>mysql-connector-java</artifactId>\n\t\t\t<version>5.1.10</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>log4j</groupId>\n\t\t\t<artifactId>log4j</artifactId>\n\t\t\t<version>1.2.13</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.apache.poi</groupId>\n\t\t\t<artifactId>poi</artifactId>\n\t\t\t<version>3.9</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.apache.poi</groupId>\n\t\t\t<artifactId>poi-ooxml</artifactId>\n\t\t\t<version>3.9</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>jfree</groupId>\n\t\t\t<artifactId>jfreechart</artifactId>\n\t\t\t<version>1.0.13</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.9</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>commons-fileupload</groupId>\n\t\t\t<artifactId>commons-fileupload</artifactId>\n\t\t\t<version>1.2.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>commons-io</groupId>\n\t\t\t<artifactId>commons-io</artifactId>\n\t\t\t<version>2.0.1</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>javax.servlet.jsp.jstl</groupId>\n\t\t\t<artifactId>jstl-api</artifactId>\n\t\t\t<version>1.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.glassfish.web</groupId>\n\t\t\t<artifactId>jstl-impl</artifactId>\n\t\t\t<version>1.2</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>jexcelapi</groupId>\n\t\t\t<artifactId>jxl</artifactId>\n\t\t\t<version>2.4.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.codehaus.jackson</groupId>\n\t\t\t<artifactId>jackson-mapper-asl</artifactId>\n\t\t\t<version>1.9.11</version>\n\t\t</dependency>\n\t\t<!-- mybatis分页插件依赖 -->\n\t\t<dependency>\n\t\t\t<groupId>com.github.pagehelper</groupId>\n\t\t\t<artifactId>pagehelper</artifactId>\n\t\t\t<version>4.0.0</version>\n\t\t</dependency>\n\n\t</dependencies>\n\n\t<build>\n\t\t<finalName>Check</finalName>\n\t</build>\n</project>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/common/springdao/AppContext.java",
    "content": "package edu.fjnu.online.common.springdao;\n\nimport org.springframework.context.support.AbstractApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class AppContext {\n\tprivate static AppContext instance;\n\tpublic static String[] paths = {\"/nu-template-dao.xml\"};\t\t//指定自己的配置文件\n\tprivate AbstractApplicationContext appContext;\n\n\tpublic synchronized static AppContext getInstance() {\n\t\tif (instance == null) {\n\t\t\tinstance = new AppContext();\n\t\t}\n\t\treturn instance;\n\t}\n\n\tprivate AppContext() {\n\t\tthis.appContext = new ClassPathXmlApplicationContext(paths);\n\t}\n\n\tpublic AbstractApplicationContext getAppContext() {\n\t\treturn appContext;\n\t} \n\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/common/springdao/SQLDAO.java",
    "content": "package edu.fjnu.online.common.springdao;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.sql.DataSource;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.jdbc.core.JdbcTemplate;\n\nimport edu.fjnu.online.util.UtilFuns;\n\n/*\n * 执行sql语句类\n * 调用方法：\n * 引入配置问题 \n * SQLDAO sqlDao = (SQLDAO)AppContext.getInstance().getAppContext().getBean(\"sqlDao\");\n * \n */\npublic class SQLDAO {\n\tprivate static Logger log = Logger.getLogger(SQLDAO.class);\n\tprivate UtilFuns utilFuns = new UtilFuns();\n    private JdbcTemplate jdbcTemplate;\n    \n\tpublic void setDataSource(DataSource ds){\n\t\tjdbcTemplate = new JdbcTemplate(ds);\n\t}\n\n\tpublic int findInt(String sql){\n\t\tlog.debug(sql);\n\t\tint i = jdbcTemplate.queryForInt(sql);\n\t\treturn i;\n\t}\n\t\n\tpublic int findInt(String sql, Object[] objs){\n\t\tlog.debug(sql);\n\t\tint i = jdbcTemplate.queryForInt(sql, objs);\n\t\treturn i;\n\t}\n\t\n\t//返回单值\n\tpublic String getSingleValue(String sql){\n\t\tlog.debug(sql);\n\t\tStringBuffer sBuf = new StringBuffer();\n\t\tList jlist = jdbcTemplate.queryForList(sql);\n\t\tIterator ite = jlist.iterator();\n        while(ite.hasNext()){\n            Map map = (Map)ite.next();\n            for(Object o:map.keySet()){\n            \tsBuf.append(String.valueOf(map.get(o))).append(\",\");\n            }\n        }\n        if(sBuf!=null && sBuf.length()>1){\n        \tsBuf.delete(sBuf.length()-1, sBuf.length());\t//del last char\n        }\n\t\treturn sBuf.toString();\n\t}\n\t\n\tpublic String getSingleValue(String sql, Object[] objs){\n\t\tlog.debug(sql);\n\t\tStringBuffer sBuf = new StringBuffer();\n\t\tList jlist = null;\n\t\tif(utilFuns.arrayValid(objs)){\n\t\t\tjlist = jdbcTemplate.queryForList(sql, objs);\n\t\t} else {\n\t\t\tjlist = jdbcTemplate.queryForList(sql);\n\t\t}\n\t\tIterator ite = jlist.iterator();\n\t\twhile(ite.hasNext()){\n            Map map = (Map)ite.next();\n            for(Object o:map.keySet()){\n            \tsBuf.append(String.valueOf(map.get(o))).append(\",\");\n            }\n        }\n        if(sBuf!=null && sBuf.length()>1){\n        \tsBuf.delete(sBuf.length()-1, sBuf.length());\t//del last char\n        }\n\t\treturn sBuf.toString();\n\t}\n\t\n\tpublic String[] toArray(String sql){\n\t\tlog.debug(sql);\n\t\tString[] strs = null;\n\t\tList aList = this.executeSQL(sql);\n\t\tif(aList.size()>0){\n\t\t\tint count = aList.size();\n\t\t\tstrs = new String[ count ];\n\t\t\tfor(int i=0; i<count; i++) {\n\t\t\t\tstrs[ i ] = String.valueOf(aList.get(i));\n\t\t\t}\n\t\t\treturn strs;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\tpublic List executeSQL(String sql){\n\t\tlog.debug(sql);\n\t\tList<String> aList = new ArrayList();\n\t\tList jlist = jdbcTemplate.queryForList(sql);\n\t\tIterator ite = jlist.iterator();\n\t\twhile(ite.hasNext()){\n\t\t\tMap map = (Map)ite.next();\n\t\t\tfor(Object o:map.keySet()){\n\t\t\t\tif(map.get(o.toString())==null){\n\t\t\t\t\taList.add(\"\");\t\t//对象不存在时，写空串\n\t\t\t\t}else{\n\t\t\t\t\taList.add(map.get(o.toString()).toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aList;\n\t}\n\t\n\tpublic List executeSQL(String sql, Object[] objs){\n\t\tlog.debug(sql);\n\t\tList aList = new ArrayList();\n\t\tList jlist = null;\n\t\tif(utilFuns.arrayValid(objs)){\n\t\t\tjlist = jdbcTemplate.queryForList(sql, objs);\n\t\t} else {\n\t\t\tjlist = jdbcTemplate.queryForList(sql);\n\t\t}\n\t\tIterator ite = jlist.iterator();\n\t\twhile(ite.hasNext()){\n            Map map = (Map)ite.next();\n            for(Object o:map.keySet()){\n            \taList.add((String)map.get(o));\n            }\n        }\n        return aList;\n\t}\n\t\n\tpublic List executeSQLForList(String sql, Object[] objs){\n\t\tlog.debug(sql);\n\t\tList aList = new ArrayList();\n\t\tList jlist = null;\n\t\tif(utilFuns.arrayValid(objs)){\n\t\t\tjlist = jdbcTemplate.queryForList(sql, objs);\n\t\t} else {\n\t\t\tjlist = jdbcTemplate.queryForList(sql);\n\t\t}\n\t\t\n\t\tIterator ite = jlist.iterator();\n\t\t\n\t\tList list;\n\t\t\n\t\twhile(ite.hasNext()){\n            Map map = (Map)ite.next();\n            list = new ArrayList();\n            \n            for(Object o:map.keySet()){\n            \tlist.add(map.get(o));\n            }\n            aList.add(list.toArray());\n        }\n\t\t\n\t\treturn aList;\n\t}\n\t\n\tpublic int updateSQL(String sql){\n\t\tlog.debug(sql);\n\t\tint i = jdbcTemplate.update(sql);\n\t\treturn i;\n\t}\n\t\n\tpublic int updateSQL(String sql, Object[] objs){\n\t\tlog.debug(sql);\n\t\tint i = jdbcTemplate.update(sql, objs);\n\t\treturn i;\n\t}\n\t\n\tpublic int[] batchSQL(String[] sql){\n\t\tlog.debug(sql);\n\t\treturn jdbcTemplate.batchUpdate(sql);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/BaseController.java",
    "content": "package edu.fjnu.online.controller;\n\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\nimport org.springframework.beans.propertyeditors.CustomDateEditor;\nimport org.springframework.web.bind.WebDataBinder;\nimport org.springframework.web.bind.annotation.InitBinder;\n\n/**\n * @CreateDate:\t2017-3-11\n */\npublic abstract class BaseController {\n\t@InitBinder\n\tpublic void initBinder(WebDataBinder binder) {\n\t\tDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\tdateFormat.setLenient(true);\n\t\tbinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/CourseController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.service.CourseService;\n\n@Controller\npublic class CourseController {\n\n\t@Autowired\n\tCourseService courseService;\n\t\n\t/**\n\t * 跳转到课程页面\n\t * @param course\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toCoursePage.action\")\n\tpublic String toCoursePage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tCourse course,Model model, HttpSession session){\n\t\t//List<Course> dataList = courseService.find(course);\n\t\tPageInfo<Course> pageInfo = courseService.findByPage(course, page, 5);\n\t\tList<Course> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/course-mgt.jsp\";\t\t\t\n\t}\n\t\n\t@RequestMapping(\"/qryCoursePage.action\")\n\t@ResponseBody\n\tpublic List<Course> qryCoursePage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tCourse course,Model model, HttpSession session){\n\t\t//List<Course> dataList = courseService.find(course);\n\t\tPageInfo<Course> pageInfo = courseService.findByPage(course, page, 5);\n\t\tList<Course> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 删除课程信息\n\t * @param courseId\t课程编号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/deleteCourse.action\")\n\tpublic String deleteCourse(String courseId, Model model){\n\t\tif(courseId != null){\n\t\t\tString ids[] = courseId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tcourseService.delete(Integer.parseInt(ids[i]));\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/toCoursePage.action\";\n\t} \n\t/**\n\t * 跳转到添加课程信息页面\n\t * @param course\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toAddCourse.action\")\n\tpublic String toAddType(Course course, Model model, HttpSession session){\n\t\tList<Course> dataList = courseService.find(course);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/admin/course-reg.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 添加课程信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/addCourse.action\")\n\tpublic String addType(Course course, Model model){\n\t\tcourse.setCourseState(\"0\");\n\t\tcourseService.insert(course);\n\t\treturn \"redirect:/toCoursePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 查看题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toQryCourse.action\")\n\tpublic String toQryType(int courseId, Model model, HttpSession session){\n\t\tCourse courseInfo = courseService.get(courseId);\n\t\tmodel.addAttribute(\"course\", courseInfo);\n\t\treturn \"/admin/course-qry.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到更新题型信息页面\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toUpdCourse.action\")\n\tpublic String toUpdType(int courseId, Model model, HttpSession session){\n\t\tCourse courseInfo = courseService.get(courseId);\n\t\tmodel.addAttribute(\"course\", courseInfo);\n\t\treturn \"/admin/course-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 更新题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/updCourse.action\")\n\tpublic String updType(Course course, Model model, HttpSession session){\n\t\tcourseService.update(course);\n\t\treturn \"redirect:/toCoursePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 删除题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/delCourse.action\")\n\tpublic String delCourse(int courseId, Model model, HttpSession session){\n\t\tcourseService.delete(courseId);\n\t\treturn \"redirect:/toCoursePage.action\";\t\t\t\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/GradeController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.service.CourseService;\nimport edu.fjnu.online.service.GradeService;\n\n@Controller\npublic class GradeController {\n\n\t@Autowired\n\tGradeService gradeService;\n\t@Autowired\n\tCourseService courseService;\n\t\n\t/**\n\t * 跳转到年级页面\n\t * @param course\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toGradePage.action\")\n\tpublic String toGradePage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tGrade grade,Model model, HttpSession session){\n//\t\tList<Grade> dataList = gradeService.find(grade);\n\t\tPageInfo<Grade> pageInfo = gradeService.findByPage(grade, page, 5);\n\t\tList<Grade> dataList = pageInfo.getList();\n\t\tCourse course=null;\n\t\tfor(Grade g : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString id = g.getCourseId();\n\t\t\tif(id != null){\n\t\t\t\tString ids[] = id.split(\",\");\n\t\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\t\tcourse = courseService.get(Integer.parseInt(ids[i]));\n\t\t\t\t\tcourseName+=course.getCourseName()+\",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t//判断最后一个字符是否为逗号，若是截取\n\t\t\tString str = courseName.substring(courseName.length() -1, courseName.length());\n\t\t\tif(\",\".equals(str)){\n\t\t\t\tstr = courseName.substring(0, courseName.length()-1);\n\t\t\t}else{\n\t\t\t\tstr = courseName;\n\t\t\t}\n\t\t\tg.setCourseId(str);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/grade-mgt.jsp\";\t\t\t\n\t}\n\t\n\t@RequestMapping(\"/qryAllGrade.action\")\n\t@ResponseBody\n\tpublic List<Grade> qryAllGrade(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tGrade grade,Model model, HttpSession session){\n//\t\tList<Grade> dataList = gradeService.find(grade);\n\t\tPageInfo<Grade> pageInfo = gradeService.findByPage(grade, page, 5);\n\t\tList<Grade> dataList = pageInfo.getList();\n\t\tCourse course=null;\n\t\tfor(Grade g : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString id = g.getCourseId();\n\t\t\tif(id != null){\n\t\t\t\tString ids[] = id.split(\",\");\n\t\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\t\tcourse = courseService.get(Integer.parseInt(ids[i]));\n\t\t\t\t\tcourseName+=course.getCourseName()+\",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t//判断最后一个字符是否为逗号，若是截取\n\t\t\tString str = courseName.substring(courseName.length() -1, courseName.length());\n\t\t\tif(\",\".equals(str)){\n\t\t\t\tstr = courseName.substring(0, courseName.length()-1);\n\t\t\t}else{\n\t\t\t\tstr = courseName;\n\t\t\t}\n\t\t\tg.setCourseId(str);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 删除年级信息\n\t * @param gradeId\t年级编号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/deleteGrade.action\")\n\tpublic String deleteGrade(String gradeId, Model model){\n\t\tif(gradeId != null){\n\t\t\tString ids[] = gradeId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tgradeService.delete(Integer.parseInt(ids[i]));\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/toGradePage.action\";\n\t} \n\t/**\n\t * 跳转到添加年级信息页面\n\t * @param grade\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toAddGrade.action\")\n\tpublic String toAddGrade(Course course, Model model, HttpSession session){\n\t\tList<Course> dataList = courseService.find(course);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/admin/grade-reg.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 添加年级信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/addGrade.action\")\n\tpublic String addType(Grade grade, Model model){\n\t\tgradeService.insert(grade);\n\t\treturn \"redirect:/toGradePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 查看年级信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toQryGrade.action\")\n\tpublic String toQryGrade(int gradeId, Model model, HttpSession session){\n\t\tGrade gradeInfo = gradeService.get(gradeId);\n\t\tmodel.addAttribute(\"grade\", gradeInfo);\n\t\tmodel.addAttribute(\"course\", courseService.find(new Course()));\n\t\treturn \"/admin/grade-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到更新年级信息页面\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toUpdGrade.action\")\n\tpublic String toUpdGrade(int gradeId, Model model, HttpSession session){\n\t\tGrade gradeInfo = gradeService.get(gradeId);\n\t\tString courseName= \"\";\n\t\tCourse course=null;\n\t\tList<Course> dataList = courseService.find(course);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tString id = gradeInfo.getCourseId();\n\t\tif(id != null){\n\t\t\tString ids[] = id.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tcourse = courseService.get(Integer.parseInt(ids[i]));\n\t\t\t\tcourseName+=course.getCourseName()+\",\";\n\t\t\t}\n\t\t}\n\t\t//判断最后一个字符是否为逗号，若是截取\n\t\tString str = courseName.substring(courseName.length() -1, courseName.length());\n\t\tif(\",\".equals(str)){\n\t\t\tstr = courseName.substring(0, courseName.length()-1);\n\t\t}else{\n\t\t\tstr = courseName;\n\t\t}\n\t\tgradeInfo.setCourseId(str);\n\t\tmodel.addAttribute(\"grade\", gradeInfo);\n\t\treturn \"/admin/grade-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 更新年级信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/updGrade.action\")\n\tpublic String updGrade(Grade grade, Model model, HttpSession session){\n\t\tgradeService.update(grade);\n\t\treturn \"redirect:/toGradePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 删除年级信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/delGrade.action\")\n\tpublic String delGrade(int gradeId, Model model, HttpSession session){\n\t\tgradeService.delete(gradeId);\n\t\treturn \"redirect:/toGradePage.action\";\t\t\t\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/PaperController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Paper;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.Type;\nimport edu.fjnu.online.service.CourseService;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.PaperService;\nimport edu.fjnu.online.service.QuestionService;\nimport edu.fjnu.online.service.TypeService;\n\n@Controller\npublic class PaperController {\n\n\t@Autowired\n\tPaperService paperService;\n\t@Autowired\n\tCourseService courseService;\n\t@Autowired\n\tTypeService typeService;\n\t@Autowired\n\tGradeService gradeService;\n\t@Autowired\n\tQuestionService questionService;\n\t/**\n\t * 跳转到试卷管理页面\n\t * @param course\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toPaperPage.action\")\n\tpublic String toPaperPage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tPaper paper,Model model, HttpSession session){\n\t\tPageInfo<Paper> pageInfo = paperService.findAllPage(paper, page, 5);\n\t\tList<Paper> dataList = pageInfo.getList();\n//\t\tList<Paper> dataList = paperService.find(paper);\n\t\tCourse course=null;\n\t\tfor(Paper g : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString id = g.getCourseId();\n\t\t\tif(id != null){\n\t\t\t\tString ids[] = id.split(\",\");\n\t\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\t\tcourse = courseService.get(Integer.parseInt(ids[i]));\n\t\t\t\t\tcourseName+=course.getCourseName()+\",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t//判断最后一个字符是否为逗号，若是截取\n\t\t\tString str = courseName.substring(courseName.length() -1, courseName.length());\n\t\t\tif(\",\".equals(str)){\n\t\t\t\tstr = courseName.substring(0, courseName.length()-1);\n\t\t\t}else{\n\t\t\t\tstr = courseName;\n\t\t\t}\n\t\t\tg.setCourseId(str);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/paper-mgt.jsp\";\t\t\t\n\t}\n\t\n\t\n\t/**\n\t * 跳转到试卷管理页面\n\t * @param course\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/qryAllPaper.action\")\n\t@ResponseBody\n\tpublic List<Paper> qryAllPaper(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tPaper paper,Model model, HttpSession session){\n\t\tPageInfo<Paper> pageInfo = paperService.findAllPage(paper, page, 5);\n\t\tList<Paper> dataList = pageInfo.getList();\n//\t\tList<Paper> dataList = paperService.find(paper);\n\t\tCourse course=null;\n\t\tfor(Paper g : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString id = g.getCourseId();\n\t\t\tif(id != null){\n\t\t\t\tString ids[] = id.split(\",\");\n\t\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\t\tcourse = courseService.get(Integer.parseInt(ids[i]));\n\t\t\t\t\tcourseName+=course.getCourseName()+\",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t//判断最后一个字符是否为逗号，若是截取\n\t\t\tString str = courseName.substring(courseName.length() -1, courseName.length());\n\t\t\tif(\",\".equals(str)){\n\t\t\t\tstr = courseName.substring(0, courseName.length()-1);\n\t\t\t}else{\n\t\t\t\tstr = courseName;\n\t\t\t}\n\t\t\tg.setCourseId(str);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到新增试卷页面\n\t * @param paper\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toAddPaperPage.action\")\n\tpublic String toAddPaperPage(Paper paper,Model model, HttpSession session){\n\t\tmodel.addAttribute(\"course\", courseService.find(new Course()));\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\tmodel.addAttribute(\"type\", typeService.find(new Type()));\n\t\treturn \"/admin/paper-reg.jsp\";\n\t}\n\t\n\t/**\n\t * 新增试卷\n\t * @param paper\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\t@RequestMapping(\"/addPaper.action\")\n\tpublic String addPaper(@RequestParam int selectNum,@RequestParam int inputNum,\n\t\t\t@RequestParam int descNum,Paper paper,Model model, HttpSession session){\n\t\tMap map = new HashMap();\n\t\tList<Question> selectList = null;\n\t\tList<Question> inputList = null;\n\t\tList<Question> descList = null;\n\t\tList<Question> paperList = new ArrayList<Question>();\n\t\tmap.put(\"gradeId\", paper.getGradeId());\n\t\tmap.put(\"courseId\", paper.getCourseId());\n\t\tif(selectNum>0){//选择题\n\t\t\tmap.put(\"num\", selectNum);\n\t\t\tmap.put(\"typeId\", 1);\n\t\t\tselectList = questionService.createPaper(map);\n\t\t\tpaperList.addAll(selectList);\n\t\t}\n\t\tif(inputNum>0){//判断题\n\t\t\tmap.put(\"num\", inputNum);\n\t\t\tmap.put(\"typeId\", 4);\n\t\t\tinputList = questionService.createPaper(map);\n\t\t\tpaperList.addAll(inputList);\n\t\t}\n\t\tif(descNum > 0 ){//描述题\n\t\t\tmap.put(\"num\", descNum);\n\t\t\tmap.put(\"typeId\", 5);\n\t\t\tdescList = questionService.createPaper(map);\n\t\t\tpaperList.addAll(descList);\n\t\t}\n\t\tString quesId = \"\";\n\t\tfor(Question ques : paperList){\n\t\t\tquesId+=ques.getQuestionId()+\",\";\n\t\t}\n\t\tif(!quesId.isEmpty()){\n\t\t\tquesId = removeLast(quesId);\n\t\t}\n\t\tpaper.setQuestionId(quesId);\n\t\tpaper.setPaperstate(\"0\");\n\t\tpaperService.insert(paper);\n\t\treturn \"redirect:/toPaperPage.action\";\n\t}\n\t\n\t/**\n\t * 删除试卷信息\n\t * @param paperId\t试卷编号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/deletePaper.action\")\n\tpublic String deletePaper(String paperId, Model model){\n\t\tif(paperId != null){\n\t\t\tString ids[] = paperId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tpaperService.delete(ids[i]);\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/toPaperPage.action\";\n\t} \n\t\n\t@RequestMapping(\"/qryPaper.action\")\n\tpublic String qryPaper(String paperId, Model model){\n\t\tPaper paper = paperService.get(paperId);\n\t\tString quesId = paper.getQuestionId();\n\t\tList<Question> quesList =new ArrayList<Question>();\n\t\tQuestion question = null;\n\t\tCourse course = courseService.get(Integer.parseInt(paper.getCourseId()));\n\t\tpaper.setCourseId(course.getCourseName());\n\t\tint selNum=0;\n\t\tint inpNum=0;\n\t\tint desNum=0;\n\t\tif(quesId != null){\n\t\t\tString ids[] = quesId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tquestion = questionService.get(Integer.parseInt(ids[i]));\n\t\t\t\tquesList.add(question);\n\t\t\t\tif(\"1\".equals(question.getTypeId())){\n\t\t\t\t\tselNum+=1;\n\t\t\t\t}\n\t\t\t\tif(\"4\".equals(question.getTypeId())){\n\t\t\t\t\tinpNum+=1;\n\t\t\t\t}\n\t\t\t\tif(\"5\".equals(question.getTypeId())){\n\t\t\t\t\tdesNum+=1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpaper.setScore(selNum+\"\");\n\t\tpaper.setBeginTime(inpNum+\"\");\n\t\tpaper.setEndTime(desNum+\"\");\n\t\tmodel.addAttribute(\"paper\", paper);\n\t\tmodel.addAttribute(\"quesList\", quesList);\n\t\treturn \"/admin/paper-qry.jsp\";\n\t}\n\t\n\t\n\t/**\n\t * 去掉最后一个逗号\n\t * @param str\n\t * @return\n\t */\n\tpublic String removeLast(String str){\n\t\t//判断最后一个字符是否为逗号，若是截取\n\t\tString newStr = str.substring(str.length() -1, str.length());\n\t\tif(\",\".equals(newStr)){\n\t\t\tnewStr = str.substring(0, str.length()-1);\n\t\t}else{\n\t\t\tnewStr = str;\n\t\t}\n\t\treturn newStr;\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/QuestionController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.controller.BaseController;\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.Type;\nimport edu.fjnu.online.service.CourseService;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.QuestionService;\nimport edu.fjnu.online.service.TypeService;\n/**\n * 题库管理\n * @author hspcadmin\n *\n */\n@Controller\npublic class QuestionController extends BaseController {\n\n\t@Autowired\n\tQuestionService questionService;\n\t@Autowired\n\tCourseService courseService;\n\t@Autowired\n\tTypeService typeService;\n\t@Autowired\n\tGradeService gradeService;\n\t/**\n\t * 跳转到题库管理页面\n\t * @param question\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toQuestionPage.action\")\n\tpublic String toQuestionPage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tQuestion question,Model model, HttpSession session){\n//\t\tList<Question> dataList = questionService.find(question);\n\t\tPageInfo<Question> pageInfo = questionService.findByPage(question, page, 5);\n\t\tList<Question> dataList = pageInfo.getList();\n\t\tCourse course=null;\n\t\tType type=null;\n\t\tfor(Question que : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString typeName=\"\";\n\t\t\tcourse = courseService.get(Integer.parseInt(que.getCourseId()));\n\t\t\ttype = typeService.get(Integer.parseInt(que.getTypeId()));\n\t\t\tcourseName=course.getCourseName();\n\t\t\ttypeName=type.getTypeName();\n\t\t\tque.setCourseId(courseName);\n\t\t\tque.setTypeId(typeName);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/question-mgt.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到题库管理页面\n\t * @param question\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/quesPage.action\")\n\t@ResponseBody\n\tpublic List<Question> quesPage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tQuestion question,Model model, HttpSession session){\n//\t\tList<Question> dataList = questionService.find(question);\n\t\tPageInfo<Question> pageInfo = questionService.findByPage(question, page, 5);\n\t\tList<Question> dataList = pageInfo.getList();\n\t\tCourse course=null;\n\t\tType type=null;\n\t\tfor(Question que : dataList){\n\t\t\tString courseName= \"\";\n\t\t\tString typeName=\"\";\n\t\t\tcourse = courseService.get(Integer.parseInt(que.getCourseId()));\n\t\t\ttype = typeService.get(Integer.parseInt(que.getTypeId()));\n\t\t\tcourseName=course.getCourseName();\n\t\t\ttypeName=type.getTypeName();\n\t\t\tque.setCourseId(courseName);\n\t\t\tque.setTypeId(typeName);\n\t\t}\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 删除问题信息\n\t * @param questionId\t问题编号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/deleteQuestion.action\")\n\tpublic String deleteQuestion(String questionId, Model model){\n\t\tif(questionId != null){\n\t\t\tString ids[] = questionId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tquestionService.delete(Integer.parseInt(ids[i]));\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/toQuestionPage.action\";\n\t} \n\t/**\n\t * 跳转到添加试题信息页面\n\t * @param question\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toAddQuestion.action\")\n\tpublic String toAddQuestion(Question question, Model model, HttpSession session){\n\t\t//获取问题信息\n\t\tList<Question> dataList = questionService.find(question);\n\t\t//获取课程信息\n\t\tList<Course> courseList = courseService.find(new Course());\n\t\t//获取年级信息\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\t//获取题型信息\n\t\tmodel.addAttribute(\"type\", typeService.find(new Type()));\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"course\", courseList);\n\t\treturn \"/admin/question-reg.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 添加试题信息\n\t * @param question\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/addQuesInfo.action\")\n\tpublic String addQuesInfo(Question question, Model model){\n\t\tquestionService.insert(question);\n\t\treturn \"redirect:/toQuestionPage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 查看问题信息\n\t * @param questionId 问题编号\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toQryQuestion.action\")\n\tpublic String toQryQuestion(int questionId, Model model, HttpSession session){\n\t\tQuestion questionInfo = questionService.get(questionId);\n\t\tGrade grade = gradeService.get(Integer.parseInt(questionInfo.getGradeId()));\n\t\tCourse course = courseService.get(Integer.parseInt(questionInfo.getCourseId()));\n\t\tType type = typeService.get(Integer.parseInt(questionInfo.getTypeId()));\n\t\tquestionInfo.setGradeId(grade.getGradeName());\n\t\tquestionInfo.setCourseId(course.getCourseName());\n\t\tquestionInfo.setTypeId(type.getTypeName());\n\t\tmodel.addAttribute(\"question\", questionInfo);\n\t\treturn \"/admin/question-qry.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到更新题目信息页面\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toUpdQuestion.action\")\n\tpublic String toUpdQuestion(int questionId, Model model, HttpSession session){\n\t\tQuestion questionInfo = questionService.get(questionId);\n\t\tmodel.addAttribute(\"question\", questionInfo);\n\t\tList<Grade>gradeList = gradeService.find(new Grade());\n\t\tList<Course>courseList = courseService.find(new Course());\n\t\tList<Type> typeList = typeService.find(new Type());\n\t\tmodel.addAttribute(\"gradeList\", gradeList);\n\t\tmodel.addAttribute(\"courseList\", courseList);\n\t\tmodel.addAttribute(\"typeList\", typeList);\n\t\treturn \"/admin/question-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 更新题目信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/updQuestion.action\")\n\tpublic String updQuestion(Question question, Model model, HttpSession session){\n\t\tquestionService.update(question);\n\t\treturn \"redirect:/toQuestionPage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 删除问题信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/delQuestion.action\")\n\tpublic String delQuestion(int questionId, Model model, HttpSession session){\n\t\tquestionService.delete(questionId);\n\t\treturn \"redirect:/todelQuestionPage.action\";\t\t\t\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/TypeController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Type;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.TypeService;\n/**\n * 试题类型管理\n * @author hspcadmin\n *\n */\n@Controller\npublic class TypeController {\n\t\n\t@Autowired\n\tTypeService typeService;\n\t\n\t@RequestMapping(\"/toTypePage.action\")\n\tpublic String toTypePage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tType type,Model model, HttpSession session){\n//\t\tList<Type> dataList = typeService.find(type);\n\t\tPageInfo<Type> pageInfo = typeService.findByPage(type, page, 5);\n\t\tList<Type> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/type-mgt.jsp\";\t\t\t\n\t}\n\t\n\t@RequestMapping(\"/qryTypePage.action\")\n\t@ResponseBody\n\tpublic List<Type> qryTypePage(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tType type,Model model, HttpSession session){\n//\t\tList<Type> dataList = typeService.find(type);\n\t\tPageInfo<Type> pageInfo = typeService.findByPage(type, page, 5);\n\t\tList<Type> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 删除题型信息\n\t * @param typeId\t题型编号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/deleteType.action\")\n\tpublic String deleteUser(String typeId, Model model){\n\t\tif(typeId != null){\n\t\t\tString ids[] = typeId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\ttypeService.delete(Integer.parseInt(ids[i]));\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/toTypePage.action\";\n\t} \n\t/**\n\t * 跳转到添加用户信息页面\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toAddType.action\")\n\tpublic String toAddType(Type type, Model model, HttpSession session){\n\t\tList<Type> dataList = typeService.find(type);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/admin/type-reg.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 添加题型信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/addType.action\")\n\tpublic String addType(Type type, Model model){\n\t\ttypeService.insert(type);\n\t\treturn \"redirect:/toTypePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 查看题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toQryType.action\")\n\tpublic String toQryType(int typeId, Model model, HttpSession session){\n\t\tType typeInfo = typeService.get(typeId);\n\t\tmodel.addAttribute(\"type\", typeInfo);\n\t\treturn \"/admin/type-qry.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到更新题型信息页面\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/toUpdType.action\")\n\tpublic String toUpdType(int typeId, Model model, HttpSession session){\n\t\tType typeInfo = typeService.get(typeId);\n\t\tmodel.addAttribute(\"type\", typeInfo);\n\t\treturn \"/admin/type-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 更新题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/updType.action\")\n\tpublic String updType(Type type, Model model, HttpSession session){\n\t\ttypeService.update(type);\n\t\treturn \"redirect:/toTypePage.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 删除题型信息\n\t * @param type\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/delType.action\")\n\tpublic String delType(int typeId, Model model, HttpSession session){\n\t\ttypeService.delete(typeId);\n\t\treturn \"redirect:/toTypePage.action\";\t\t\t\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/admin/UserController.java",
    "content": "package edu.fjnu.online.controller.admin;\n\nimport java.lang.reflect.Method;\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.apache.poi.hssf.record.UserSViewEnd;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.controller.BaseController;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.MsgItem;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.UserService;\n/**\n * 用户管理\n * @author hspcadmin\n *\n */\n@Controller\npublic class UserController extends BaseController{\n\n\t@Autowired\n\tUserService userService;\n\t@Autowired\n\tGradeService gradeService;\n\t//跳转到登录页面\n\t@RequestMapping(\"/admin/login.action\")\n\tpublic String toLoin(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\treturn \"/admin/index.jsp\";\n\t\t}\n\t\tList<User> dataList = userService.find(user);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/admin/login.jsp\";\t\t\t\n\t}\n\t\n\t@RequestMapping(\"/admin/userLogin.action\")\n\tpublic String checkUser(User user, Model model, HttpSession session){\n\t\tUser loginUser = userService.login(user);\n\t\t\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\treturn \"/admin/index.jsp\";\n\t\t}\n\t\t\n\t\tif(loginUser!=null && loginUser.getUserType() == 2){\n\t\t\tsession.setAttribute(\"userName\", loginUser.getUserName());\n\t\t\treturn \"/admin/index.jsp\";\n\t\t}else{\n\t\t\tmodel.addAttribute(\"message\", \"用户名或密码输入错误！！！\");\n\t\t\treturn \"/admin/login.jsp\";\n\t\t}\n\t}\n\t\n\t/**\n\t * 判断账户信息是否存在\n\t * @param name\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/checkAccount.action\")\n\tpublic String checkAccount(String userId, Model model){\n\t\tUser userInfo = userService.get(userId);\n\t\tif(userInfo!= null){\n\t\t\tmodel.addAttribute(\"message\", \"该账号已经存在\");\n\t\t}else{\n\t\t\tmodel.addAttribute(\"message\", \"<font color='green'>验证通过</font>\");\n\t\t}\n\t\tmodel.addAttribute(\"userId\", userId);\n\t\treturn \"/admin/info-reg.jsp\";\n\t}\n\t\n\t/**\n\t * ajax验证用户账号是否存在\n\t * @param userId\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/userRegist.action\")\n\t@ResponseBody\n\tpublic MsgItem userRegist(String userId, Model model, HttpSession session){\n\t\tMsgItem msgItem = new MsgItem();\n\t\tUser user = userService.get(userId);\n\t\tif(user!=null){\n\t\t\tmsgItem.setErrorNo(\"1\");\n\t\t\tmsgItem.setErrorInfo(\"账号已经存在\");\n\t\t}else{\n\t\t\tmsgItem.setErrorNo(\"0\");\n\t\t\tmsgItem.setErrorInfo(\"<font color='green'>验证通过</font>\");\n\t\t}\n\t\treturn msgItem;\n\t} \n\t\n\t//跳转到登录页面\n\t@RequestMapping(\"/admin/exitSys.action\")\n\tpublic String exitSys(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\tsession.removeAttribute(\"userName\");\n\t\t\treturn \"forward:/admin/login.action\";\n\t\t}\n\t\treturn \"/admin/login.jsp\";\t\t\t\n\t}\n\t\n\t//跳转到题库录入页面\n\t@RequestMapping(value=\"/admin/toQueDep.action\",method=RequestMethod.POST)\n\tpublic String toQueDep(Model model, HttpSession session){\n\t\treturn \"/admin/info-reg.jsp\";\t\t\t\n\t}\n\t\n\t//获取所有的用户信息\n\t@RequestMapping(\"/admin/getAllUser.action\")\n\tpublic String getAllUserInfo(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tUser user, Model model, HttpSession session){\n//\t\tList<User> dataList = userService.find(user);\n\t\tPageInfo<User> pageInfo = userService.findByPage(user, page, 5);\n\t\tList<User> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/info-mgt.jsp\";\t\t\t\n\t}\n\t\n\t//获取所有的用户信息\n\t@RequestMapping(\"/admin/qryAllUser.action\")\n\t@ResponseBody\n\tpublic List<User> qryAllUser(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tUser user, Model model, HttpSession session){\n//\t\t\tList<User> dataList = userService.find(user);\n\t\tPageInfo<User> pageInfo = userService.findByPage(user, page, 5);\n\t\tList<User> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 跳转到添加用户信息页面\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/toAddUser.action\")\n\tpublic String toAddUserInfo(User user, Model model, HttpSession session){\n\t\tList<User> dataList = userService.find(user);\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/admin/info-reg.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 添加用户信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/addUser.action\")\n\tpublic String addUser(User user, Model model){\n\t\tuserService.insert(user);\n\t\treturn \"redirect:/admin/getAllUser.action\";\t\t\t\n\t}\n\t\n\t/**\n\t * 删除用户信息\n\t * @param userId\t用户账号，删除多个是，id用逗号分隔开\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/deleteUser.action\")\n\tpublic String deleteUser(String userId, Model model){\n\t\tif(userId != null){\n\t\t\tString ids[] = userId.split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tuserService.delete(ids[i]);\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/admin/getAllUser.action\";\n\t} \n\t\n\t/**\n\t * 获取所有待审核信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/getFindPending.action\")\n\tpublic String findPending(@RequestParam(value=\"page\", defaultValue=\"1\") int page,User user, Model model){\n\t\tPageInfo<User> pageInfo = userService.findPendingByPage(user, page, 5);\n\t\tList<User> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn \"/admin/info-deal.jsp\";\n\t}\n\t\n\t//获取所有的用户信息\n\t@RequestMapping(\"/admin/qryFindPending.action\")\n\t@ResponseBody\n\tpublic List<User> qryFindPending(@RequestParam(value=\"page\", defaultValue=\"1\") int page,\n\t\t\tUser user, Model model, HttpSession session){\n//\t\t\t\tList<User> dataList = userService.find(user);\n\t\tPageInfo<User> pageInfo = userService.findPendingByPage(user, page, 5);\n\t\tList<User> dataList = pageInfo.getList();\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\tmodel.addAttribute(\"pageInfo\", pageInfo);\n\t\treturn dataList;\t\t\t\n\t}\n\t\n\t/**\n\t * 用户身份信息审核(通过)\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/passinfo.action\")\n\tpublic String passUserInfo(User user, Model model){\n\t\tUser us = new User();\n\t\tif(user != null){\n\t\t\tString ids[] = user.getUserId().split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tus.setUserId(ids[i]);\n\t\t\t\tus.setUserState(1);\n\t\t\t\tuserService.update(us);\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/admin/getFindPending.action\";\n\t}\n\t\n\t/**\n\t * 用户身份信息审核(不通过)\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/failinfo.action\")\n\tpublic String failUserInfo(User user, Model model){\n\t\tUser us = new User();\n\t\tif(user != null){\n\t\t\tString ids[] = user.getUserId().split(\",\");\n\t\t\tfor(int i=0;i<ids.length;i++){\n\t\t\t\tus.setUserId(ids[i]);\n\t\t\t\tus.setUserState(2);\n\t\t\t\tuserService.update(us);\n\t\t\t}\n\t\t}\n\t\treturn \"redirect:/admin/getFindPending.action\";\n\t}\n\t\n\t/**\n\t * 跳转到添加用户信息页面\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/toUpdateUser.action\")\n\tpublic String toUpdateUser(User user, Model model, HttpSession session){\n\t\tString userId = user.getUserId().trim();\n\t\tUser userInfo = userService.get(userId);\n\t\tmodel.addAttribute(\"user\", userInfo);\n\t\treturn \"/admin/info-upd.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 用户个人信息查询(信息审核)\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/toQryUser.action\")\n\tpublic String toQryUser(User user, Model model, HttpSession session){\n\t\tString userId = user.getUserId().trim();\n\t\tUser userInfo = userService.get(userId);\n\t\tmodel.addAttribute(\"user\", userInfo);\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\treturn \"/admin/info-det.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 用户个人信息查询(信息审核)\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/toQryUserInfo.action\")\n\tpublic String toQryUserInfo(User user, Model model, HttpSession session){\n\t\tString userId = user.getUserId().trim();\n\t\tUser userInfo = userService.get(userId);\n\t\tmodel.addAttribute(\"user\", userInfo);\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\treturn \"/admin/info-qry.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 用户个人信息查询(信息管理)\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/admin/toQryMgUser.action\")\n\tpublic String toQryMgUser(User user, Model model, HttpSession session){\n\t\tString userId = user.getUserId().trim();\n\t\tUser userInfo = userService.get(userId);\n\t\tmodel.addAttribute(\"user\", userInfo);\n\t\tmodel.addAttribute(\"grade\", gradeService.find(new Grade()));\n\t\treturn \"/admin/info-qry.jsp\";\t\t\t\n\t}\n\t\n\t@RequestMapping(\"/admin/updateUser.action\")\n\tpublic String updateUser(User user, Model model){\n\t\tuserService.update(user);\n\t\treturn \"redirect:/admin/getAllUser.action\";\t\t\t\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/user/ErrorBookController.java",
    "content": "package edu.fjnu.online.controller.user;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.ErrorBook;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Type;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.CourseService;\nimport edu.fjnu.online.service.ErrorBookService;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.TypeService;\nimport edu.fjnu.online.service.UserService;\n\n@Controller\npublic class ErrorBookController {\n\t@Autowired\n\tErrorBookService bookService;\n\t@Autowired\n\tGradeService gradeService;\n\t@Autowired\n\tCourseService courseService;\n\t@Autowired\n\tTypeService typeService;\n\t@Autowired\n\tUserService userService;\n\t//跳转到我的错题本页面\n\t@RequestMapping(\"/toMyBooksPage.action\")\n\tpublic String toMyBooksPage(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", userService.get(user.getUserId()));\n\t\t}\n\t\tList<ErrorBook> errorBookList = bookService.find(new ErrorBook());\n\t\tList<Grade> gradeList = gradeService.find(new Grade());\n\t\tList<Course> courseList = courseService.find(new Course());\n\t\tList<Type> typeList = typeService.find(new Type());\n\t\tMap map = new HashMap();\n\t\tmap.put(\"userId\", user.getUserId());\n\t\tList<ErrorBook> bookList = bookService.getBookInfo(map);\n\t\tmodel.addAttribute(\"grade\", gradeList);\n\t\tmodel.addAttribute(\"course\", courseList);\n\t\tmodel.addAttribute(\"type\", typeList);\n\t\tmodel.addAttribute(\"errorBook\", bookList);\n\t\treturn \"/user/mybooks.jsp\";\t\t\t\n\t}\n\t\n\t//跳转到前台登录页面\n\t@RequestMapping(\"/getBooks.action\")\n\tpublic String getBooks(User user, Model model, HttpSession session){\n\t\tList<Grade> gradeList = gradeService.find(new Grade());\n\t\tList<Course> courseList = courseService.find(new Course());\n\t\tList<Type> typeList = typeService.find(new Type());\n\t\tList<ErrorBook> errorBookList = bookService.getBookInfo(new HashMap());\n\t\tmodel.addAttribute(\"grade\", gradeList);\n\t\tmodel.addAttribute(\"course\", courseList);\n\t\tmodel.addAttribute(\"type\", typeList);\n\t\treturn \"/user/mybooks.jsp\";\t\t\t\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/user/PaperMgController.java",
    "content": "package edu.fjnu.online.controller.user;\n\nimport java.io.UnsupportedEncodingException;\nimport java.math.BigDecimal;\nimport java.math.RoundingMode;\nimport java.net.URLDecoder;\nimport java.net.URLEncoder;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.ErrorBook;\nimport edu.fjnu.online.domain.MsgItem;\nimport edu.fjnu.online.domain.Paper;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.CourseService;\nimport edu.fjnu.online.service.ErrorBookService;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.PaperService;\nimport edu.fjnu.online.service.QuestionService;\nimport edu.fjnu.online.service.UserService;\nimport edu.fjnu.online.util.Computeclass;\n/**\n * 试卷综合管理\n * @author hspcadmin\n *\n */\n@Controller\npublic class PaperMgController {\n\n\t@Autowired\n\tUserService userService;\n\t@Autowired\n\tGradeService gradeService;\n\t@Autowired\n\tPaperService paperService;\n\t@Autowired\n\tCourseService courseService;\n\t@Autowired\n\tQuestionService questionService;\n\t@Autowired\n\tErrorBookService bookService;\n\t\n\t//跳转到成绩查询页面\n\t@RequestMapping(\"/toScoreQry.action\")\n\tpublic String toScoreQry(User user, Model model, HttpSession session){\n\t\tif(\"\".equals(user.getUserId()) || user==null){\n\t\t\tuser = (User) session.getAttribute(\"user\");\n\t\t}\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", userService.get(user.getUserId()));\n\t\t}\n\t\tuser = userService.getStu(user);\n\t\tList<Paper> paper = paperService.getUserPaperById(user.getUserId());\n\t\tCourse course = null;\n\t\tfor(Paper p : paper){\n\t\t\tcourse = courseService.get(Integer.parseInt(p.getCourseId()));\n\t\t\tp.setCourseId(course.getCourseName());\n\t\t}\n\t\tmodel.addAttribute(\"user\", user);\n\t\tmodel.addAttribute(\"paper\", paper);\n\t\treturn \"/user/scorequery.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 查看试卷详情\n\t * @param paperId\n\t * @param userId\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n\t@RequestMapping(\"/qrypaper.action\")\n\tpublic String qrypaper(String paperId,String userId,Model model, HttpSession session){\n\t\tMap map = new HashMap();\n\t\tmap.put(\"paperId\", paperId);\n\t\tmap.put(\"userId\", userId);\n\t\tPaper paper = paperService.getPaperDetail(map);\n\t\tQuestion question = null;\n\t\tString []ids = paper.getQuestionId().split(\",\");\n\t\tList<Question> selList = new ArrayList<Question>();\n\t\tList<Question> inpList = new ArrayList<Question>();\n\t\tList<Question> desList = new ArrayList<Question>();\n\t\tfor(int i = 0;i<ids.length;i++){\n\t\t\tquestion = questionService.get(Integer.parseInt(ids[i]));\n\t\t\tif(\"1\".equals(question.getTypeId())){//单选\n\t\t\t\tselList.add(question);\n\t\t\t}\n\t\t\tif(\"4\".equals(question.getTypeId())){//填空\n\t\t\t\tinpList.add(question);\n\t\t\t}\n\t\t\tif(\"5\".equals(question.getTypeId())){//简答题\n\t\t\t\tdesList.add(question);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(selList.size()>0){\n\t\t\tmodel.addAttribute(\"selectQ\", \"单项选择题（每题5分）\");\n\t\t\tmodel.addAttribute(\"selList\", selList);\n\t\t}\n\t\t\n\t\tif(inpList.size()>0){\n\t\t\tmodel.addAttribute(\"inpQ\", \"填空题（每题5分）\");\n\t\t\tmodel.addAttribute(\"inpList\", inpList);\n\t\t}\n\t\t\n\t\tif(desList.size()>0){\n\t\t\tmodel.addAttribute(\"desQ\", \"简答题（每题5分）\");\n\t\t\tmodel.addAttribute(\"desList\", desList);\n\t\t}\n\t\t\n\t\tmodel.addAttribute(\"paper\", paper);\n\t\treturn \"/user/qrypaper.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 自动评分\n\t * @param paper\n\t * @param model\n\t * @param session\n\t * @return\n\t * @throws UnsupportedEncodingException\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\t@RequestMapping(\"/dealPaper.action\")\n\t@ResponseBody\n\tpublic MsgItem dealPaper(Paper paper, Model model, HttpSession session) throws UnsupportedEncodingException{\n\t\tString paperId = paper.getPaperId();\n\t\t//答案临时存放\n\t\tString ans = paper.getScore();\n\t\tans = URLDecoder.decode(ans,\"UTF-8\");\n\t\tString [] answer = null;\n\t\tif(ans.contains(\"&\")){\n\t\t\tanswer = ans.split(\"&\");\n\t\t}\n\t\tMap map = new HashMap();\n\t\tUser user = (User) session.getAttribute(\"user\");\n\t\tmap.put(\"paperId\", paperId);\n\t\tmap.put(\"userId\", user.getUserId());\n\t\tPaper paperInfo = paperService.getPaperDetail(map);\n\t\tString []ids = paperInfo.getQuestionId().split(\",\");\n\t\tList<Question> question = new ArrayList<Question>();\n\t\tQuestion ques = null;\n\t\tint endScore = 0;\n\t\tErrorBook book = new ErrorBook();\n\t\tbook.setUserId(user.getUserId());\n\t\tfor(int i = 1 ;i<answer.length;i++){\n\t\t\tString[] str = answer[i].split(\"=\");\n\t\t\t//题号\n\t\t\tString str1 = str[0];\n\t\t\tques = questionService.get(Integer.parseInt(str1));\n\t\t\t//数据库对应的答案\n\t\t\tString answer1 = ques.getAnswer();\n\t\t\tif(str.length>1){\n\t\t\t\t//学生的答案\n\t\t\t\tString str2 = str[1];\n\t\t\t\tif(!\"5\".equals(ques.getTypeId())){//判断是否为简答题\n\t\t\t\t\tif(str2.equals(answer1)){//如果用户答案和数据库中的答案一致\n\t\t\t\t\t\tendScore+=5;\n\t\t\t\t\t}else{//插入错题本\n\t\t\t\t\t\tbook.setQuestion(ques);\n\t\t\t\t\t\tbook.setCourseId(ques.getCourseId());\n\t\t\t\t\t\tbook.setGradeId(ques.getGradeId());\n\t\t\t\t\t\tbook.setUserAnswer(str2);\n\t\t\t\t\t\tbookService.insert(book);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(\"5\".equals(ques.getTypeId())){//为简答题的时候\n\t\t\t\t\tString strA = answer1;\n\t\t\t\t\tString strB = URLDecoder.decode(str2, \"UTF-8\");//转码\n\t\t\t\t\t//计算相似\n\t\t\t\t\tdouble d = Computeclass.SimilarDegree(strA, strB);\n\t\t\t\t\tBigDecimal bg = new BigDecimal(d*5).setScale(1, RoundingMode.DOWN);\n\t\t\t        d = bg.doubleValue();\n\t\t\t        endScore+=d;\n\t\t\t        if(d<=2){//如果小于2分，认定错误\n\t\t\t        \tbook.setQuestion(ques);\n\t\t\t\t\t\tbook.setCourseId(ques.getCourseId());\n\t\t\t\t\t\tbook.setGradeId(ques.getGradeId());\n\t\t\t\t\t\tbook.setUserAnswer(str2);\n\t\t\t\t\t\tbookService.insert(book);\n\t\t\t        }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tSystem.out.println(\"最后得分：\"+endScore);\n\t\tSimpleDateFormat formatter = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");  \n\t\tDate currentTime = new Date();//得到当前系统时间  \n\t\tString endTime = formatter.format(currentTime); //将日期时间格式化  \n\t\tmap.put(\"beginTime\", paper.getBeginTime());\n\t\tmap.put(\"endTime\", endTime);\n\t\tmap.put(\"score\", endScore);\n\t\t//将考试的试卷状态改为2\n\t\tmap.put(\"paperState\", \"2\");\n\t\tpaperService.updateUserPaper(map);\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", user);\n\t\t}\n\t\tMsgItem msgItem = new MsgItem();\n\t\tmsgItem.setErrorNo(\"1\");\n\t\tmsgItem.setErrorInfo(\"试卷提交成功，本次考试得分：\"+endScore +\"分\");\n\t\treturn msgItem;\t\t\n\t}\n\t\n\t/**\n\t * 考试页面\n\t * @param paperId\n\t * @param userId\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n\t@RequestMapping(\"/qryPaperDetail.action\")\n\tpublic String qryPaperDetail(String paperId,String userId,Model model, HttpSession session){\n\t\tMap map = new HashMap();\n\t\tmap.put(\"paperId\", paperId);\n\t\tmap.put(\"userId\", userId);\n\t\tPaper paper = paperService.getPaperDetail(map);\n\t\tQuestion question = null;\n\t\tString []ids = paper.getQuestionId().split(\",\");\n\t\tList<Question> selList = new ArrayList<Question>();\n\t\tList<Question> inpList = new ArrayList<Question>();\n\t\tList<Question> desList = new ArrayList<Question>();\n\t\tfor(int i = 0;i<ids.length;i++){\n\t\t\tquestion = questionService.get(Integer.parseInt(ids[i]));\n\t\t\tif(\"1\".equals(question.getTypeId())){//单选\n\t\t\t\tselList.add(question);\n\t\t\t}\n\t\t\tif(\"4\".equals(question.getTypeId())){//填空\n\t\t\t\tinpList.add(question);\n\t\t\t}\n\t\t\tif(\"5\".equals(question.getTypeId())){//简答题\n\t\t\t\tdesList.add(question);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(selList.size()>0){\n\t\t\tmodel.addAttribute(\"selectQ\", \"单项选择题（每题5分）\");\n\t\t\tmodel.addAttribute(\"selList\", selList);\n\t\t}\n\t\t\n\t\tif(inpList.size()>0){\n\t\t\tmodel.addAttribute(\"inpQ\", \"填空题（每题5分）\");\n\t\t\tmodel.addAttribute(\"inpList\", inpList);\n\t\t}\n\t\t\n\t\tif(desList.size()>0){\n\t\t\tmodel.addAttribute(\"desQ\", \"简答题（每题5分）\");\n\t\t\tmodel.addAttribute(\"desList\", desList);\n\t\t}\n\t\t\n\t\tmodel.addAttribute(\"paper\", paper);\n\t\treturn \"/user/paperdetail.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 获取未考试试卷，并将为考试的试卷添加用户信息\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n\t@RequestMapping(\"/toMyPaperPage.action\")\n\tpublic String toMyPaperPage(User user,Model model, HttpSession session){\n\t\tif(\"\".equals(user.getUserId()) || user.getUserId()==null){\n\t\t\tuser = (User) session.getAttribute(\"user\");\n\t\t}\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", userService.get(user.getUserId()));\n\t\t}\n\t\tuser = userService.getStu(user);\n\t\tMap map =new HashMap();\n\t\tmap.put(\"userId\", user.getUserId());\n\t\t//List<Paper> paper = paperService.getUserPaperById(user.getUserId());\n\t\tList<Paper> paper1 = paperService.getUndoPaper(map);\n\t\tCourse course = null;\n\t\tfor(Paper p : paper1){\n\t\t\tcourse = courseService.get(Integer.parseInt(p.getCourseId()));\n\t\t\tp.setUserId(user.getUserId());\n\t\t\tp.setPaperstate(\"1\");\n\t\t\tpaperService.insert(p);\n\t\t\tp.setCourseId(course.getCourseName());\n\t\t}\n\t\tList<Paper> paper = paperService.qryUndoPaper(map);\n\t\tfor(Paper p : paper){\n\t\t\tcourse = courseService.get(Integer.parseInt(p.getCourseId()));\n\t\t\tp.setCourseId(course.getCourseName());\n\t\t}\n\t\tmodel.addAttribute(\"user\", user);\n\t\tmodel.addAttribute(\"paper\", paper);\n\t\treturn \"/user/mypaper.jsp\";\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/controller/user/StuController.java",
    "content": "package edu.fjnu.online.controller.user;\n\nimport java.util.List;\n\nimport javax.servlet.http.HttpSession;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.MsgItem;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.GradeService;\nimport edu.fjnu.online.service.UserService;\nimport edu.fjnu.online.util.MD5Util;\n\n@Controller\npublic class StuController {\n\t@Autowired\n\tUserService userService;\n\t@Autowired\n\tGradeService gradeService;\n\t//跳转到前台登录页面\n\t@RequestMapping(\"/toLogin.action\")\n\tpublic String toUserLogin(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\treturn \"/user/index.jsp\";\n\t\t}\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", userService.get(user.getUserId()));\n\t\t}\n\t\tList<User> dataList = userService.find(user);\n\t\tmodel.addAttribute(\"dataList\", dataList);\n\t\treturn \"/user/login.jsp\";\t\t\t\n\t}\n\t\t\n\t/**\n\t * 前台用户登录\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/user/toIndex.action\")\n\tpublic String toIndex(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\treturn \"/user/index.jsp\";\n\t\t}else{\n\t\t\treturn \"forward:/toLogin.action\";\n\t\t}\n\t}\n\t\n\t/**\n\t * 用户账号密码检查\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/checkPwd.action\")\n\t@ResponseBody\n\tpublic MsgItem checkPwd(User user, Model model, HttpSession session){\n\t\tMsgItem item = new MsgItem();\n\t\tUser loginUser = userService.login(user);\n\t\tif(loginUser!=null && loginUser.getUserType() ==0){\n\t\t\tif(loginUser.getUserState()==0 ){\n\t\t\t\titem.setErrorNo(\"1\");\n\t\t\t\titem.setErrorInfo(\"该账号尚未通过审核!\");\n\t\t\t}else{\n\t\t\t\titem.setErrorNo(\"0\");\n\t\t\t\titem.setErrorInfo(\"登录成功!\");\n\t\t\t\tsession.setAttribute(\"userName\", loginUser.getUserName());\n\t\t\t\tsession.setAttribute(\"user\", loginUser);\n\t\t\t}\n\t\t}else{\n\t\t\titem.setErrorNo(\"1\");\n\t\t\titem.setErrorInfo(\"账号不存在或用户名密码错误!\");\n\t\t}\n\t\treturn item;\n\t}\n\t\n\t@RequestMapping(\"/toRegistPage.action\")\n\tpublic String toRegistPage(Model model, HttpSession session){\n\t\tList<Grade> list = gradeService.find(new Grade());\n\t\tmodel.addAttribute(\"grade\", list);\n\t\treturn \"/user/regist.jsp\";\n\t}\n\t\n\t/**\n\t * 添加用户信息\n\t * @param user\n\t * @param model\n\t * @return\n\t */\n\t@RequestMapping(\"/addUserInfo.action\")\n\tpublic String addUserInfo(User user, Model model, HttpSession session){\n\t\tuserService.insert(user);\n\t\treturn \"redirect:/toLogin.action\";\t\t\t\n\t}\n\t\n\t//跳转到前台登录页面\n\t@RequestMapping(\"/toUserInfo.action\")\n\tpublic String toUserInfo(User user, Model model, HttpSession session){\n\t\tUser loginUser = (User) session.getAttribute(\"user\");\n\t\tuser = userService.getStu(loginUser);\n\t\tGrade grade = gradeService.get(Integer.parseInt(user.getGrade()));\n\t\tuser.setGrade(grade.getGradeName());\n\t\tmodel.addAttribute(\"user\", user);\n\t\treturn \"/user/userinfo.jsp\";\t\t\t\n\t}\n\t\n\t/**\n\t * 更新学生信息\n\t * @param user\n\t * @param model\n\t * @param session\n\t * @return\n\t */\n\t@RequestMapping(\"/updateUserInfo.action\")\n\tpublic String updateUserInfo(String newPwd,User user, Model model, HttpSession session){\n\t\tif(newPwd!= null && newPwd.trim().length()>0){\n\t\t\tuser.setUserPwd(newPwd);\n\t\t}\n\t\tuserService.update(user);\n\t\tuser = userService.get(user.getUserId());\n\t\tif(session.getAttribute(\"user\")== null){\n\t\t\tsession.setAttribute(\"user\", userService.getStu(user));\n\t\t}\n\t\treturn \"redirect:/user/toIndex.action\";\t\t\t\n\t}\n\t\n\t//跳转到登录页面\n\t@RequestMapping(\"/user/exitSys.action\")\n\tpublic String exitSystem(User user, Model model, HttpSession session){\n\t\tif(session.getAttribute(\"userName\")!= null){\n\t\t\tsession.removeAttribute(\"userName\");\n\t\t\treturn \"/user/login.jsp\";\n\t\t}\n\t\treturn \"/user/login.jsp\";\t\t\t\n\t}\n\t\n\t//跳转到前台登录页面\n\t@RequestMapping(\"/toAbout.action\")\n\tpublic String toAbout(User user, Model model, HttpSession session){\n\t\tUser loginUser = (User) session.getAttribute(\"user\");\n\t\tmodel.addAttribute(\"user\", loginUser);\n\t\treturn \"/user/about.jsp\";\t\t\t\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/BaseDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * @Description: 泛型类，基础的DAO接口\n * @CreateDate:\t2017-3-11\n */\npublic interface BaseDao<T> {\n\tpublic List<T> find(T entity);\n\tpublic T get(Serializable id);\n\tpublic void insert(T entity);\n\tpublic void update(T entity);\n\tpublic void delete(Serializable id);\n\tpublic void delete(Serializable[] ids);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/CourseDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport edu.fjnu.online.domain.Course;\n\npublic interface CourseDao extends BaseDao<Course>{\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/ErrorBookDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport edu.fjnu.online.domain.ErrorBook;\nimport edu.fjnu.online.domain.Question;\n\npublic interface ErrorBookDao extends BaseDao<ErrorBook>{\n\tpublic List<ErrorBook> getBookInfo(Map map);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/GradeDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport edu.fjnu.online.domain.Grade;\n\n\npublic interface GradeDao extends BaseDao<Grade>{\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/PaperDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport edu.fjnu.online.domain.Paper;\n\npublic interface PaperDao extends BaseDao<Paper> {\n\t/**\n\t * 通过学生编号获取所有的试卷\n\t * @param id\n\t * @return\n\t */\n\tpublic List<Paper> getUserPaperById(Serializable id);\n\t/**查看试卷详情*/\n\tpublic Paper getPaperDetail(Map map);\n\t\n\t/**更新用户试卷信息*/\n\tpublic void updateUserPaper(Map map);\n\t/**查询未考试的试卷*/\n\tpublic List<Paper> getUndoPaper(Map map);\n\t/**查询学生未考试的试卷*/\n\tpublic List<Paper> qryUndoPaper(Map map);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/QuestionDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport edu.fjnu.online.domain.Question;\n\npublic interface QuestionDao extends BaseDao<Question>{\n\n\tpublic List<Question> createPaper(Map map);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/TypeDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport edu.fjnu.online.domain.Type;\n\npublic interface TypeDao extends BaseDao<Type> {\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/UserDao.java",
    "content": "package edu.fjnu.online.dao;\n\nimport java.util.List;\n\nimport edu.fjnu.online.domain.User;\n\n\npublic interface UserDao extends BaseDao<User>{\n\n\tpublic List<User> findPending(User user);\n\tpublic User getStu(User user);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/BaseDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.mybatis.spring.support.SqlSessionDaoSupport;\nimport org.springframework.beans.factory.annotation.Autowired;\n\nimport edu.fjnu.online.dao.BaseDao;\n\npublic abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>{\n\t@Autowired\n\t//mybatis-spring 1.0无需此方法；mybatis-spring1.2必须注入。\n\tpublic void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){\n\t\tsuper.setSqlSessionFactory(sqlSessionFactory);\n\t}\n\t\n\tprivate String ns;\t\t//命名空间\n\tpublic String getNs() {\n\t\treturn ns;\n\t}\n\tpublic void setNs(String ns) {\n\t\tthis.ns = ns;\n\t}\n\n\tpublic List<T> find(T entiy) {\n\t\tList<T> oList = this.getSqlSession().selectList(ns + \"find\", entiy);\n\t\treturn oList;\n\t}\n\tpublic T get(Serializable id) {\n\t\treturn this.getSqlSession().selectOne(ns + \"get\", id);\n\t}\n\n\tpublic void insert(T entity) {\n\t\tthis.getSqlSession().insert(ns + \"insert\", entity);\n\t}\n\n\tpublic void update(T entity) {\n\t\tthis.getSqlSession().update(ns + \"update\", entity);\n\t}\n\n\tpublic void delete(Serializable id) {\n\t\tthis.getSqlSession().delete(ns + \"delete\", id);\n\t}\n\n\tpublic void delete(Serializable[] ids) {\n\t\tthis.getSqlSession().delete(ns + \"deleteBatch\", ids);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/CourseDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.CourseDao;\nimport edu.fjnu.online.domain.Course;\n@Repository\npublic class CourseDaoImpl extends BaseDaoImpl<Course> implements CourseDao {\n\tpublic CourseDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.CourseMapper.\");\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/ErrorBookDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.ErrorBookDao;\nimport edu.fjnu.online.domain.ErrorBook;\n@Repository\npublic class ErrorBookDaoImpl extends BaseDaoImpl<ErrorBook> implements ErrorBookDao {\n\n\tpublic ErrorBookDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.ErrorBookMapper.\");\n\t}\n\n\tpublic List<ErrorBook> getBookInfo(Map map) {\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"getBookInfo\", map);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/GradeDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.GradeDao;\nimport edu.fjnu.online.domain.Grade;\n@Repository\npublic class GradeDaoImpl extends BaseDaoImpl<Grade> implements GradeDao{\n\n\tpublic GradeDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.GradeMapper.\");\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/PaperDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.PaperDao;\nimport edu.fjnu.online.domain.Paper;\n@Repository\npublic class PaperDaoImpl extends BaseDaoImpl<Paper> implements PaperDao{\n\tpublic PaperDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.PaperMapper.\");\n\t}\n\n\tpublic List<Paper> getUserPaperById(Serializable id) {\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"getUserPaperById\", id);\n\t}\n\n\tpublic Paper getPaperDetail(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn this.getSqlSession().selectOne(this.getNs()+\"getPaperDetail\", map);\n\t}\n\n\tpublic void updateUserPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\tthis.getSqlSession().selectOne(this.getNs()+\"updateUserPaper\", map);\n\t}\n\n\tpublic List<Paper> getUndoPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"getUndoPaper\", map);\n\t}\n\n\tpublic List<Paper> qryUndoPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"qryUndoPaper\", map);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/QuestionDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.QuestionDao;\nimport edu.fjnu.online.domain.Question;\n@Repository\npublic class QuestionDaoImpl extends BaseDaoImpl< Question> implements QuestionDao {\n\tpublic QuestionDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.QuestionMapper.\");\n\t}\n\n\tpublic List<Question> createPaper(Map map) {\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"createPaper\", map);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/TypeDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.TypeDao;\nimport edu.fjnu.online.domain.Type;\n@Repository\npublic class TypeDaoImpl extends BaseDaoImpl<Type> implements TypeDao{\n\n\tpublic TypeDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.TypeMapper.\");\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/dao/impl/UserDaoImpl.java",
    "content": "package edu.fjnu.online.dao.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport org.springframework.stereotype.Repository;\n\nimport edu.fjnu.online.dao.UserDao;\nimport edu.fjnu.online.domain.User;\n@Repository\npublic class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{\n\tpublic UserDaoImpl() {\n\t\tthis.setNs(\"edu.fjnu.online.mapper.UserMapper.\");\t\t\t//设置命名空间\n\t}\n\n\tpublic List<User> findPending(User user) {\n\t\treturn this.getSqlSession().selectList(this.getNs()+\"findPending\",user);\n\t}\n\n\tpublic User getStu(User user) {\n\t\treturn this.getSqlSession().selectOne(this.getNs()+\"getStu\",user);\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Course.java",
    "content": "package edu.fjnu.online.domain;\n/**\n * 课程表\n * @author hspcadmin\n *\n */\npublic class Course {\n\t/**课程编号*/\n\tprivate int courseId;\n\t/**课程名称*/\n\tprivate String courseName;\n\t/**课程状态*/\n\tprivate String courseState;\n\tpublic int getCourseId() {\n\t\treturn courseId;\n\t}\n\tpublic void setCourseId(int courseId) {\n\t\tthis.courseId = courseId;\n\t}\n\tpublic String getCourseName() {\n\t\treturn courseName;\n\t}\n\tpublic void setCourseName(String courseName) {\n\t\tthis.courseName = courseName;\n\t}\n\tpublic String getCourseState() {\n\t\treturn courseState;\n\t}\n\tpublic void setCourseState(String courseState) {\n\t\tthis.courseState = courseState;\n\t}\n\tpublic Course() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic Course(int courseId, String courseName, String courseState) {\n\t\tsuper();\n\t\tthis.courseId = courseId;\n\t\tthis.courseName = courseName;\n\t\tthis.courseState = courseState;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Course [courseId=\" + courseId + \", courseName=\" + courseName\n\t\t\t\t+ \", courseState=\" + courseState + \"]\";\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/ErrorBook.java",
    "content": "package edu.fjnu.online.domain;\n/**\n * 错题本\n * @author hspcadmin\n *\n */\npublic class ErrorBook {\n\n\t/**错题编号*/\n\tprivate int bookId;\n\t/**用户编号*/\n\tprivate String userId;\n\t/**科目编号*/\n\tprivate String courseId;\n\t/**年级编号*/\n\tprivate String gradeId;\n\t/**学生答案*/\n\tprivate String userAnswer;\n\t/**问题编号*/\n\tprivate Question question;\n\t/**题型编号*/\n\tprivate String typeId;\n\tpublic int getBookId() {\n\t\treturn bookId;\n\t}\n\tpublic void setBookId(int bookId) {\n\t\tthis.bookId = bookId;\n\t}\n\tpublic String getUserId() {\n\t\treturn userId;\n\t}\n\tpublic void setUserId(String userId) {\n\t\tthis.userId = userId;\n\t}\n\tpublic String getCourseId() {\n\t\treturn courseId;\n\t}\n\tpublic void setCourseId(String courseId) {\n\t\tthis.courseId = courseId;\n\t}\n\tpublic String getGradeId() {\n\t\treturn gradeId;\n\t}\n\tpublic void setGradeId(String gradeId) {\n\t\tthis.gradeId = gradeId;\n\t}\n\tpublic String getUserAnswer() {\n\t\treturn userAnswer;\n\t}\n\tpublic void setUserAnswer(String userAnswer) {\n\t\tthis.userAnswer = userAnswer;\n\t}\n\tpublic String getTypeId() {\n\t\treturn typeId;\n\t}\n\tpublic void setTypeId(String typeId) {\n\t\tthis.typeId = typeId;\n\t}\n\tpublic Question getQuestion() {\n\t\treturn question;\n\t}\n\tpublic void setQuestion(Question question) {\n\t\tthis.question = question;\n\t}\n\tpublic ErrorBook() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic ErrorBook(int bookId, String userId, String courseId,\n\t\t\tString gradeId, String userAnswer, Question question, String typeId) {\n\t\tsuper();\n\t\tthis.bookId = bookId;\n\t\tthis.userId = userId;\n\t\tthis.courseId = courseId;\n\t\tthis.gradeId = gradeId;\n\t\tthis.userAnswer = userAnswer;\n\t\tthis.question = question;\n\t\tthis.typeId = typeId;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"ErrorBook [bookId=\" + bookId + \", userId=\" + userId\n\t\t\t\t+ \", courseId=\" + courseId + \", gradeId=\" + gradeId\n\t\t\t\t+ \", userAnswer=\" + userAnswer + \", question=\" + question\n\t\t\t\t+ \", typeId=\" + typeId + \"]\";\n\t}\n\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Factory.java",
    "content": "package edu.fjnu.online.domain;\n\n/**\n * @Description:\n * @Author: nutony\n * @Company: http://java.itcast.cn\n * @CreateDate: 2014-3-12\n */\npublic class Factory {\n\tprivate String id;\n\tprivate String fullName;\n\tprivate String factoryName;\n\tprivate String contractor;\n\tprivate String phone;\n\tprivate String mobile;\n\tprivate String fax;\n\tprivate String cnote;\n\tpublic String getCnote() {\n\t\treturn cnote;\n\t}\n\n\tpublic void setCnote(String cnote) {\n\t\tthis.cnote = cnote;\n\t}\n\n\tprivate Integer orderNo;\n\tprivate Integer state;\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getFullName() {\n\t\treturn fullName;\n\t}\n\n\tpublic void setFullName(String fullName) {\n\t\tthis.fullName = fullName;\n\t}\n\n\tpublic String getFactoryName() {\n\t\treturn factoryName;\n\t}\n\n\tpublic void setFactoryName(String factoryName) {\n\t\tthis.factoryName = factoryName;\n\t}\n\n\tpublic String getContractor() {\n\t\treturn contractor;\n\t}\n\n\tpublic void setContractor(String contractor) {\n\t\tthis.contractor = contractor;\n\t}\n\n\tpublic String getPhone() {\n\t\treturn phone;\n\t}\n\n\tpublic void setPhone(String phone) {\n\t\tthis.phone = phone;\n\t}\n\n\tpublic String getMobile() {\n\t\treturn mobile;\n\t}\n\n\tpublic void setMobile(String mobile) {\n\t\tthis.mobile = mobile;\n\t}\n\n\tpublic String getFax() {\n\t\treturn fax;\n\t}\n\n\tpublic void setFax(String fax) {\n\t\tthis.fax = fax;\n\t}\n\n\n\tpublic Integer getOrderNo() {\n\t\treturn orderNo;\n\t}\n\n\tpublic void setOrderNo(Integer orderNo) {\n\t\tthis.orderNo = orderNo;\n\t}\n\n\tpublic Integer getState() {\n\t\treturn state;\n\t}\n\n\tpublic void setState(Integer state) {\n\t\tthis.state = state;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Grade.java",
    "content": "package edu.fjnu.online.domain;\n/**\n * 年级\n * @author hspcadmin\n *\n */\npublic class Grade {\n\t/**年级编号*/\n\tprivate int gradeId;\n\t/**年级名称*/\n\tprivate String gradeName;\n\t/**包含课程*/\n\tprivate String courseId;\n\tpublic int getGradeId() {\n\t\treturn gradeId;\n\t}\n\tpublic void setGradeId(int gradeId) {\n\t\tthis.gradeId = gradeId;\n\t}\n\tpublic String getGradeName() {\n\t\treturn gradeName;\n\t}\n\tpublic void setGradeName(String gradeName) {\n\t\tthis.gradeName = gradeName;\n\t}\n\tpublic String getCourseId() {\n\t\treturn courseId;\n\t}\n\tpublic void setCourseId(String courseId) {\n\t\tthis.courseId = courseId;\n\t}\n\tpublic Grade() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic Grade(int gradeId, String gradeName, String courseId) {\n\t\tsuper();\n\t\tthis.gradeId = gradeId;\n\t\tthis.gradeName = gradeName;\n\t\tthis.courseId = courseId;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Grade [gradeId=\" + gradeId + \", gradeName=\" + gradeName\n\t\t\t\t+ \", courseId=\" + courseId + \"]\";\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/MsgItem.java",
    "content": "package edu.fjnu.online.domain;\n\npublic class MsgItem {\n\tprivate String remark;\n    private String errorNo;\n    private String errorInfo;\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\tpublic String getErrorNo() {\n\t\treturn errorNo;\n\t}\n\tpublic void setErrorNo(String errorNo) {\n\t\tthis.errorNo = errorNo;\n\t}\n\tpublic String getErrorInfo() {\n\t\treturn errorInfo;\n\t}\n\tpublic void setErrorInfo(String errorInfo) {\n\t\tthis.errorInfo = errorInfo;\n\t}\n    \n    \n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Paper.java",
    "content": "package edu.fjnu.online.domain;\n/**\n * 试卷实体\n * @author hspcadmin\n *\n */\npublic class Paper {\n\t/**试卷编号*/\n\tprivate String paperId;\n\t/**试卷名称*/\n\tprivate String paperName;\n\t/**对应课程*/\n\tprivate String courseId;\n\t/**适合年级*/\n\tprivate String gradeId;\n\t/**学生编号*/\n\tprivate String userId;\n\t/**问题编号*/\n\tprivate String questionId;\n\t/**开始时间*/\n\tprivate String beginTime;\n\t/**结束时间*/\n\tprivate String endTime;\n\t/**允许时长*/\n\tprivate String allowTime;\n\t/**分数*/\n\tprivate String score;\n\t/**试卷状态 0:准备考试1:尚未开始2:已完成*/\n\tprivate String paperState;\n\tpublic Paper() {\n\t\t\n\t}\n\tpublic Paper(String paperId, String paperName, String courseId,\n\t\t\tString gradeId, String userId, String questionId, String beginTime,\n\t\t\tString endTime, String allowTime, String score, String paperState) {\n\t\tsuper();\n\t\tthis.paperId = paperId;\n\t\tthis.paperName = paperName;\n\t\tthis.courseId = courseId;\n\t\tthis.gradeId = gradeId;\n\t\tthis.userId = userId;\n\t\tthis.questionId = questionId;\n\t\tthis.beginTime = beginTime;\n\t\tthis.endTime = endTime;\n\t\tthis.allowTime = allowTime;\n\t\tthis.score = score;\n\t\tthis.paperState = paperState;\n\t}\n\tpublic String getPaperId() {\n\t\treturn paperId;\n\t}\n\tpublic void setPaperId(String paperId) {\n\t\tthis.paperId = paperId;\n\t}\n\tpublic String getPaperName() {\n\t\treturn paperName;\n\t}\n\tpublic void setPaperName(String paperName) {\n\t\tthis.paperName = paperName;\n\t}\n\tpublic String getCourseId() {\n\t\treturn courseId;\n\t}\n\tpublic void setCourseId(String courseId) {\n\t\tthis.courseId = courseId;\n\t}\n\tpublic String getGradeId() {\n\t\treturn gradeId;\n\t}\n\tpublic void setGradeId(String gradeId) {\n\t\tthis.gradeId = gradeId;\n\t}\n\tpublic String getUserId() {\n\t\treturn userId;\n\t}\n\tpublic void setUserId(String userId) {\n\t\tthis.userId = userId;\n\t}\n\tpublic String getQuestionId() {\n\t\treturn questionId;\n\t}\n\tpublic void setQuestionId(String questionId) {\n\t\tthis.questionId = questionId;\n\t}\n\tpublic String getBeginTime() {\n\t\treturn beginTime;\n\t}\n\tpublic void setBeginTime(String beginTime) {\n\t\tthis.beginTime = beginTime;\n\t}\n\tpublic String getEndTime() {\n\t\treturn endTime;\n\t}\n\tpublic void setEndTime(String endTime) {\n\t\tthis.endTime = endTime;\n\t}\n\tpublic String getAllowTime() {\n\t\treturn allowTime;\n\t}\n\tpublic void setAllowTime(String allowTime) {\n\t\tthis.allowTime = allowTime;\n\t}\n\tpublic String getScore() {\n\t\treturn score;\n\t}\n\tpublic void setScore(String score) {\n\t\tthis.score = score;\n\t}\n\tpublic String getPaperstate() {\n\t\treturn paperState;\n\t}\n\tpublic void setPaperstate(String paperstate) {\n\t\tthis.paperState = paperstate;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Paper [paperId=\" + paperId + \", paperName=\" + paperName\n\t\t\t\t+ \", courseId=\" + courseId + \", gradeId=\" + gradeId\n\t\t\t\t+ \", userId=\" + userId + \", questionId=\" + questionId\n\t\t\t\t+ \", beginTime=\" + beginTime + \", endTime=\" + endTime\n\t\t\t\t+ \", allowTime=\" + allowTime + \", score=\" + score\n\t\t\t\t+ \", paperstate=\" + paperState + \"]\";\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Question.java",
    "content": "package edu.fjnu.online.domain;\n\npublic class Question {\n\t/**问题编号*/\n\tprivate int questionId;\n\t/**问题名称*/\n\tprivate String quesName;\n\t/**选项A*/\n\tprivate String optionA;\n\t/**选项B*/\n\tprivate String optionB;\n\t/**选项C*/\n\tprivate String optionC;\n\t/**选项D*/\n\tprivate String optionD;\n\t/**标准答案*/\n\tprivate String answer;\n\t/**学生答案*/\n\tprivate String userAnswer;\n\t/**对应课程*/\n\tprivate String courseId;\n\t/**题型*/\n\tprivate String typeId;\n\t/**难度（0：容易，1：中等，2：难）*/\n\tprivate int difficulty;\n\t/**备注*/\n\tprivate String remark;\n\tprivate String answerDetail;\n\tprivate String gradeId;\n\tpublic int getQuestionId() {\n\t\treturn questionId;\n\t}\n\tpublic void setQuestionId(int questionId) {\n\t\tthis.questionId = questionId;\n\t}\n\tpublic String getQuesName() {\n\t\treturn quesName;\n\t}\n\tpublic void setQuesName(String quesName) {\n\t\tthis.quesName = quesName;\n\t}\n\tpublic String getOptionA() {\n\t\treturn optionA;\n\t}\n\tpublic void setOptionA(String optionA) {\n\t\tthis.optionA = optionA;\n\t}\n\tpublic String getOptionB() {\n\t\treturn optionB;\n\t}\n\tpublic void setOptionB(String optionB) {\n\t\tthis.optionB = optionB;\n\t}\n\tpublic String getOptionC() {\n\t\treturn optionC;\n\t}\n\tpublic void setOptionC(String optionC) {\n\t\tthis.optionC = optionC;\n\t}\n\tpublic String getOptionD() {\n\t\treturn optionD;\n\t}\n\tpublic void setOptionD(String optionD) {\n\t\tthis.optionD = optionD;\n\t}\n\tpublic String getAnswer() {\n\t\treturn answer;\n\t}\n\tpublic void setAnswer(String answer) {\n\t\tthis.answer = answer;\n\t}\n\tpublic String getUserAnswer() {\n\t\treturn userAnswer;\n\t}\n\tpublic void setUserAnswer(String userAnswer) {\n\t\tthis.userAnswer = userAnswer;\n\t}\n\tpublic String getCourseId() {\n\t\treturn courseId;\n\t}\n\tpublic void setCourseId(String courseId) {\n\t\tthis.courseId = courseId;\n\t}\n\tpublic String getTypeId() {\n\t\treturn typeId;\n\t}\n\tpublic void setTypeId(String typeId) {\n\t\tthis.typeId = typeId;\n\t}\n\tpublic int getDifficulty() {\n\t\treturn difficulty;\n\t}\n\tpublic void setDifficulty(int difficulty) {\n\t\tthis.difficulty = difficulty;\n\t}\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\tpublic String getAnswerDetail() {\n\t\treturn answerDetail;\n\t}\n\tpublic void setAnswerDetail(String answerDetail) {\n\t\tthis.answerDetail = answerDetail;\n\t}\n\tpublic String getGradeId() {\n\t\treturn gradeId;\n\t}\n\tpublic void setGradeId(String gradeId) {\n\t\tthis.gradeId = gradeId;\n\t}\n\tpublic Question() {\n\t\t\n\t}\n\tpublic Question(int questionId, String quesName, String optionA,\n\t\t\tString optionB, String optionC, String optionD, String answer,\n\t\t\tString userAnswer, String courseId, String typeId, int difficulty,\n\t\t\tString remark, String answerDetail, String gradeId) {\n\t\tsuper();\n\t\tthis.questionId = questionId;\n\t\tthis.quesName = quesName;\n\t\tthis.optionA = optionA;\n\t\tthis.optionB = optionB;\n\t\tthis.optionC = optionC;\n\t\tthis.optionD = optionD;\n\t\tthis.answer = answer;\n\t\tthis.userAnswer = userAnswer;\n\t\tthis.courseId = courseId;\n\t\tthis.typeId = typeId;\n\t\tthis.difficulty = difficulty;\n\t\tthis.remark = remark;\n\t\tthis.answerDetail = answerDetail;\n\t\tthis.gradeId = gradeId;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Question [questionId=\" + questionId + \", quesName=\" + quesName\n\t\t\t\t+ \", optionA=\" + optionA + \", optionB=\" + optionB\n\t\t\t\t+ \", optionC=\" + optionC + \", optionD=\" + optionD + \", answer=\"\n\t\t\t\t+ answer + \", userAnswer=\" + userAnswer + \", courseId=\"\n\t\t\t\t+ courseId + \", typeId=\" + typeId + \", difficulty=\"\n\t\t\t\t+ difficulty + \", remark=\" + remark + \", answerDetail=\"\n\t\t\t\t+ answerDetail + \", gradeId=\" + gradeId + \"]\";\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/Type.java",
    "content": "package edu.fjnu.online.domain;\n/**\n * 题目类型\n * @author hspcadmin\n *\n */\npublic class Type {\n\t/**题型编号*/\n\tprivate int typeId;\n\t/**题型名称*/\n\tprivate String typeName;\n\t/**分值*/\n\tprivate int score;\n\t/**备注*/\n\tprivate String remark;\n\tpublic int getTypeId() {\n\t\treturn typeId;\n\t}\n\tpublic void setTypeId(int typeId) {\n\t\tthis.typeId = typeId;\n\t}\n\tpublic String getTypeName() {\n\t\treturn typeName;\n\t}\n\tpublic void setTypeName(String typeName) {\n\t\tthis.typeName = typeName;\n\t}\n\tpublic int getScore() {\n\t\treturn score;\n\t}\n\tpublic void setScore(int score) {\n\t\tthis.score = score;\n\t}\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\t\n\tpublic Type() {\n\n\t}\n\tpublic Type(int typeId, String typeName, int score, String remark) {\n\t\tsuper();\n\t\tthis.typeId = typeId;\n\t\tthis.typeName = typeName;\n\t\tthis.score = score;\n\t\tthis.remark = remark;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn \"Type [typeId=\" + typeId + \", typeName=\" + typeName + \", score=\"\n\t\t\t\t+ score + \", remark=\" + remark + \"]\";\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/domain/User.java",
    "content": "/**\n * \n */\npackage edu.fjnu.online.domain;\n\n/**\n * 用户表\n * @author hspcadmin\n * @CreateDate:\t2017-3-11\n */\npublic class User\n{\n\t/**用户账号*/\n\tprivate String userId;\n\t/**用户昵称*/\n\tprivate String userName;\n\t/**用户密码*/\n\tprivate String userPwd;\n\t/**年级*/\n\tprivate String grade;\n\t/**账户类型（0：学生，1：老师，2：管理员）*/\n\tprivate int userType;\n\t/**账户状态（0：待审核，1：在用，2：注销）*/\n\tprivate int userState;\n\t/**邮箱*/\n\tprivate String email;\n\t/**联系电话*/\n\tprivate String telephone;\n\t/**联系地址*/\n\tprivate String address;\n\t/**备注*/\n\tprivate String remark;\n\tpublic String getUserId() {\n\t\treturn userId;\n\t}\n\tpublic void setUserId(String userId) {\n\t\tthis.userId = userId;\n\t}\n\tpublic String getUserName() {\n\t\treturn userName;\n\t}\n\tpublic void setUserName(String userName) {\n\t\tthis.userName = userName;\n\t}\n\tpublic String getUserPwd() {\n\t\treturn userPwd;\n\t}\n\tpublic void setUserPwd(String userPwd) {\n\t\tthis.userPwd = userPwd;\n\t}\n\tpublic String getGrade() {\n\t\treturn grade;\n\t}\n\tpublic void setGrade(String grade) {\n\t\tthis.grade = grade;\n\t}\n\tpublic int getUserType() {\n\t\treturn userType;\n\t}\n\tpublic void setUserType(int userType) {\n\t\tthis.userType = userType;\n\t}\n\tpublic int getUserState() {\n\t\treturn userState;\n\t}\n\tpublic void setUserState(int userState) {\n\t\tthis.userState = userState;\n\t}\n\tpublic String getEmail() {\n\t\treturn email;\n\t}\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\tpublic String getTelephone() {\n\t\treturn telephone;\n\t}\n\tpublic void setTelephone(String telephone) {\n\t\tthis.telephone = telephone;\n\t}\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\t\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\t\n\tpublic User() {\n\t\t\n\t}\n\t\n\t\n\tpublic User(String userId, String userName, String userPwd, String grade,\n\t\t\tint userType, int userState, String email, String telephone,\n\t\t\tString address, String remark) {\n\t\tsuper();\n\t\tthis.userId = userId;\n\t\tthis.userName = userName;\n\t\tthis.userPwd = userPwd;\n\t\tthis.grade = grade;\n\t\tthis.userType = userType;\n\t\tthis.userState = userState;\n\t\tthis.email = email;\n\t\tthis.telephone = telephone;\n\t\tthis.address = address;\n\t\tthis.remark = remark;\n\t}\n\t\n\t@Override\n\tpublic String toString() {\n\t\treturn super.toString();\n\t}\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/pagination/Page.java",
    "content": "package edu.fjnu.online.pagination;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n \n/**\n * 对分页的基本数据进行一个简单的封装\n */\npublic class Page<T> {\n \n    private int pageNo = 1;\t\t\t//页码，默认是第一页\n    private int pageSize = 10;\t\t//每页显示的记录数，默认是10\n    private int totalRecord;\t\t//总记录数\n    private int totalPage;\t\t\t//总页数\n    private List<T> results;\t\t//对应的当前页记录\n    private Map<String, Object> params = new HashMap<String, Object>();\t\t//其他的参数我们把它分装成一个Map对象\n \n    public int getPageNo() {\n       return pageNo;\n    }\n \n    public void setPageNo(int pageNo) {\n       this.pageNo = pageNo;\n    }\n \n    public int getPageSize() {\n       return pageSize;\n    }\n \n    public void setPageSize(int pageSize) {\n       this.pageSize = pageSize;\n    }\n \n    public int getTotalRecord() {\n       return totalRecord;\n    }\n \n    public void setTotalRecord(int totalRecord) {\n       this.totalRecord = totalRecord;\n       //在设置总页数的时候计算出对应的总页数，在下面的三目运算中加法拥有更高的优先级，所以最后可以不加括号。\n       int totalPage = totalRecord%pageSize==0 ? totalRecord/pageSize : totalRecord/pageSize + 1;\n       this.setTotalPage(totalPage);\n    }\n \n    public int getTotalPage() {\n       return totalPage;\n    }\n \n    public void setTotalPage(int totalPage) {\n       this.totalPage = totalPage;\n    }\n \n    public List<T> getResults() {\n       return results;\n    }\n \n    public void setResults(List<T> results) {\n       this.results = results;\n    }\n   \n    public Map<String, Object> getParams() {\n       return params;\n    }\n   \n    public void setParams(Map<String, Object> params) {\n       this.params = params;\n    }\n \n    @Override\n    public String toString() {\n       StringBuilder builder = new StringBuilder();\n       builder.append(\"Page [pageNo=\").append(pageNo).append(\", pageSize=\").append(pageSize).append(\", results=\").append(results).append(\", totalPage=\").append(totalPage).append(\", totalRecord=\").append(totalRecord).append(\"]\");\n       return builder.toString();\n    }\n \n}"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/pagination/PageInterceptor.java",
    "content": "package edu.fjnu.online.pagination;\n\nimport java.lang.reflect.Field;\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.List;\nimport java.util.Properties;\n\nimport org.apache.ibatis.executor.parameter.ParameterHandler;\nimport org.apache.ibatis.executor.statement.RoutingStatementHandler;\nimport org.apache.ibatis.executor.statement.StatementHandler;\nimport org.apache.ibatis.mapping.BoundSql;\nimport org.apache.ibatis.mapping.MappedStatement;\nimport org.apache.ibatis.mapping.ParameterMapping;\nimport org.apache.ibatis.plugin.Interceptor;\nimport org.apache.ibatis.plugin.Intercepts;\nimport org.apache.ibatis.plugin.Invocation;\nimport org.apache.ibatis.plugin.Plugin;\nimport org.apache.ibatis.plugin.Signature;\nimport org.apache.ibatis.scripting.defaults.DefaultParameterHandler;\n \n \n/**\n *\n * 分页拦截器，用于拦截需要进行分页查询的操作，然后对其进行分页处理。\n * 利用拦截器实现Mybatis分页的原理：\n * 要利用JDBC对数据库进行操作就必须要有一个对应的Statement对象，Mybatis在执行Sql语句前就会产生一个包含Sql语句的Statement对象，而且对应的Sql语句\n * 是在Statement之前产生的，所以我们就可以在它生成Statement之前对用来生成Statement的Sql语句下手。在Mybatis中Statement语句是通过RoutingStatementHandler对象的\n * prepare方法生成的。所以利用拦截器实现Mybatis分页的一个思路就是拦截StatementHandler接口的prepare方法，然后在拦截器方法中把Sql语句改成对应的分页查询Sql语句，之后再调用\n * StatementHandler对象的prepare方法，即调用invocation.proceed()。\n * 对于分页而言，在拦截器里面我们还需要做的一个操作就是统计满足当前条件的记录一共有多少，这是通过获取到了原始的Sql语句后，把它改为对应的统计语句再利用Mybatis封装好的参数和设\n * 置参数的功能把Sql语句中的参数进行替换，之后再执行查询记录数的Sql语句进行总记录数的统计。\n *\n */\n@Intercepts( {\n       @Signature(method = \"prepare\", type = StatementHandler.class, args = {Connection.class}) })\npublic class PageInterceptor implements Interceptor {\n \n    private String databaseType;//数据库类型，不同的数据库有不同的分页方法\n   \n    /**\n     * 拦截后要执行的方法\n     */\n    public Object intercept(Invocation invocation) throws Throwable {\n       //对于StatementHandler其实只有两个实现类，一个是RoutingStatementHandler，另一个是抽象类BaseStatementHandler，\n       //BaseStatementHandler有三个子类，分别是SimpleStatementHandler，PreparedStatementHandler和CallableStatementHandler，\n       //SimpleStatementHandler是用于处理Statement的，PreparedStatementHandler是处理PreparedStatement的，而CallableStatementHandler是\n       //处理CallableStatement的。Mybatis在进行Sql语句处理的时候都是建立的RoutingStatementHandler，而在RoutingStatementHandler里面拥有一个\n       //StatementHandler类型的delegate属性，RoutingStatementHandler会依据Statement的不同建立对应的BaseStatementHandler，即SimpleStatementHandler、\n       //PreparedStatementHandler或CallableStatementHandler，在RoutingStatementHandler里面所有StatementHandler接口方法的实现都是调用的delegate对应的方法。\n       //我们在PageInterceptor类上已经用@Signature标记了该Interceptor只拦截StatementHandler接口的prepare方法，又因为Mybatis只有在建立RoutingStatementHandler的时候\n       //是通过Interceptor的plugin方法进行包裹的，所以我们这里拦截到的目标对象肯定是RoutingStatementHandler对象。\n       RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget();\n       //通过反射获取到当前RoutingStatementHandler对象的delegate属性\n       StatementHandler delegate = (StatementHandler)ReflectUtil.getFieldValue(handler, \"delegate\");\n       //获取到当前StatementHandler的 boundSql，这里不管是调用handler.getBoundSql()还是直接调用delegate.getBoundSql()结果是一样的，因为之前已经说过了\n       //RoutingStatementHandler实现的所有StatementHandler接口方法里面都是调用的delegate对应的方法。\n       BoundSql boundSql = delegate.getBoundSql();\n       //拿到当前绑定Sql的参数对象，就是我们在调用对应的Mapper映射语句时所传入的参数对象\n       Object obj = boundSql.getParameterObject();\n       //这里我们简单的通过传入的是Page对象就认定它是需要进行分页操作的。\n       if (obj instanceof Page<?>) {\n           Page<?> page = (Page<?>) obj;\n           //通过反射获取delegate父类BaseStatementHandler的mappedStatement属性\n           MappedStatement mappedStatement = (MappedStatement)ReflectUtil.getFieldValue(delegate, \"mappedStatement\");\n           //拦截到的prepare方法参数是一个Connection对象\n           Connection connection = (Connection)invocation.getArgs()[0];\n           //获取当前要执行的Sql语句，也就是我们直接在Mapper映射语句中写的Sql语句\n           String sql = boundSql.getSql();\n           //给当前的page参数对象设置总记录数\n           this.setTotalRecord(page,\n                  mappedStatement, connection);\n           //获取分页Sql语句\n           String pageSql = this.getPageSql(page, sql);\n           //利用反射设置当前BoundSql对应的sql属性为我们建立好的分页Sql语句\n           ReflectUtil.setFieldValue(boundSql, \"sql\", pageSql);\n       }\n       return invocation.proceed();\n    }\n \n \n    /**\n     * 拦截器对应的封装原始对象的方法\n     */\n    public Object plugin(Object target) {\n       return Plugin.wrap(target, this);\n    }\n \n    /**\n     * 设置注册拦截器时设定的属性\n     */\n    public void setProperties(Properties properties) {\n       this.databaseType = properties.getProperty(\"databaseType\");\n    }\n   \n    /**\n     * 根据page对象获取对应的分页查询Sql语句，这里只做了两种数据库类型，Mysql和Oracle\n     * 其它的数据库都 没有进行分页\n     *\n     * @param page 分页对象\n     * @param sql 原sql语句\n     * @return\n     */\n    private String getPageSql(Page<?> page, String sql) {\n       StringBuffer sqlBuffer = new StringBuffer(sql);\n       if (\"mysql\".equalsIgnoreCase(databaseType)) {\n           return getMysqlPageSql(page, sqlBuffer);\n       } else if (\"oracle\".equalsIgnoreCase(databaseType)) {\n           return getOraclePageSql(page, sqlBuffer);\n       }\n       return sqlBuffer.toString();\n    }\n   \n    /**\n     * 获取Mysql数据库的分页查询语句\n     * @param page 分页对象\n     * @param sqlBuffer 包含原sql语句的StringBuffer对象\n     * @return Mysql数据库分页语句\n     */\n    private String getMysqlPageSql(Page<?> page, StringBuffer sqlBuffer) {\n       //计算第一条记录的位置，Mysql中记录的位置是从0开始的。\n       int offset = (page.getPageNo() - 1) * page.getPageSize();\n       sqlBuffer.append(\" limit \").append(offset).append(\",\").append(page.getPageSize());\n       return sqlBuffer.toString();\n    }\n   \n    /**\n     * 获取Oracle数据库的分页查询语句\n     * @param page 分页对象\n     * @param sqlBuffer 包含原sql语句的StringBuffer对象\n     * @return Oracle数据库的分页查询语句\n     */\n    private String getOraclePageSql(Page<?> page, StringBuffer sqlBuffer) {\n       //计算第一条记录的位置，Oracle分页是通过rownum进行的，而rownum是从1开始的\n       int offset = (page.getPageNo() - 1) * page.getPageSize() + 1;\n       sqlBuffer.insert(0, \"select u.*, rownum r from (\").append(\") u where rownum < \").append(offset + page.getPageSize());\n       sqlBuffer.insert(0, \"select * from (\").append(\") where r >= \").append(offset);\n       //上面的Sql语句拼接之后大概是这个样子：\n       //select * from (select u.*, rownum r from (select * from t_user) u where rownum < 31) where r >= 16\n       return sqlBuffer.toString();\n    }\n   \n    /**\n     * 给当前的参数对象page设置总记录数\n     *\n     * @param page Mapper映射语句对应的参数对象\n     * @param mappedStatement Mapper映射语句\n     * @param connection 当前的数据库连接\n     */\n    private void setTotalRecord(Page<?> page,\n           MappedStatement mappedStatement, Connection connection) {\n       //获取对应的BoundSql，这个BoundSql其实跟我们利用StatementHandler获取到的BoundSql是同一个对象。\n       //delegate里面的boundSql也是通过mappedStatement.getBoundSql(paramObj)方法获取到的。\n       BoundSql boundSql = mappedStatement.getBoundSql(page);\n       //获取到我们自己写在Mapper映射语句中对应的Sql语句\n       String sql = boundSql.getSql();\n       //通过查询Sql语句获取到对应的计算总记录数的sql语句\n       String countSql = this.getCountSql(sql);\n       //通过BoundSql获取对应的参数映射\n       List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();\n       //利用Configuration、查询记录数的Sql语句countSql、参数映射关系parameterMappings和参数对象page建立查询记录数对应的BoundSql对象。\n       BoundSql countBoundSql = new BoundSql(mappedStatement.getConfiguration(), countSql, parameterMappings, page);\n       //通过mappedStatement、参数对象page和BoundSql对象countBoundSql建立一个用于设定参数的ParameterHandler对象\n       ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, page, countBoundSql);\n       //通过connection建立一个countSql对应的PreparedStatement对象。\n       PreparedStatement pstmt = null;\n       ResultSet rs = null;\n       try {\n           pstmt = connection.prepareStatement(countSql);\n           //通过parameterHandler给PreparedStatement对象设置参数\n           parameterHandler.setParameters(pstmt);\n           //之后就是执行获取总记录数的Sql语句和获取结果了。\n           rs = pstmt.executeQuery();\n           if (rs.next()) {\n              int totalRecord = rs.getInt(1);\n              //给当前的参数page对象设置总记录数\n              page.setTotalRecord(totalRecord);\n           }\n       } catch (SQLException e) {\n           e.printStackTrace();\n       } finally {\n           try {\n              if (rs != null)\n                  rs.close();\n               if (pstmt != null)\n                  pstmt.close();\n           } catch (SQLException e) {\n              e.printStackTrace();\n           }\n       }\n    }\n   \n    /**\n     * 根据原Sql语句获取对应的查询总记录数的Sql语句\n     * @param sql\n     * @return\n     */\n    private String getCountSql(String sql) {\n       int index = sql.indexOf(\"from\");\n       return \"select count(*) \" + sql.substring(index);\n    }\n   \n    /**\n     * 利用反射进行操作的一个工具类\n     *\n     */\n    private static class ReflectUtil {\n       /**\n        * 利用反射获取指定对象的指定属性\n        * @param obj 目标对象\n        * @param fieldName 目标属性\n        * @return 目标属性的值\n        */\n       public static Object getFieldValue(Object obj, String fieldName) {\n           Object result = null;\n           Field field = ReflectUtil.getField(obj, fieldName);\n           if (field != null) {\n              field.setAccessible(true);\n              try {\n                  result = field.get(obj);\n              } catch (IllegalArgumentException e) {\n                  // TODO Auto-generated catch block\n                  e.printStackTrace();\n              } catch (IllegalAccessException e) {\n                  // TODO Auto-generated catch block\n                  e.printStackTrace();\n              }\n           }\n           return result;\n       }\n      \n       /**\n        * 利用反射获取指定对象里面的指定属性\n        * @param obj 目标对象\n        * @param fieldName 目标属性\n        * @return 目标字段\n        */\n       private static Field getField(Object obj, String fieldName) {\n           Field field = null;\n          for (Class<?> clazz=obj.getClass(); clazz != Object.class; clazz=clazz.getSuperclass()) {\n              try {\n                  field = clazz.getDeclaredField(fieldName);\n                  break;\n              } catch (NoSuchFieldException e) {\n                  //这里不用做处理，子类没有该字段可能对应的父类有，都没有就返回null。\n              }\n           }\n           return field;\n       }\n \n       /**\n        * 利用反射设置指定对象的指定属性为指定的值\n        * @param obj 目标对象\n        * @param fieldName 目标属性\n         * @param fieldValue 目标值\n        */\n       public static void setFieldValue(Object obj, String fieldName,\n              String fieldValue) {\n           Field field = ReflectUtil.getField(obj, fieldName);\n           if (field != null) {\n              try {\n                  field.setAccessible(true);\n                  field.set(obj, fieldValue);\n              } catch (IllegalArgumentException e) {\n                  e.printStackTrace();\n              } catch (IllegalAccessException e) {\n                  e.printStackTrace();\n              }\n           }\n        }\n    }\n \n}"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/CourseService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.util.List;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\n\npublic interface CourseService {\n\tpublic List<Course> find(Course course);\n\tpublic Course get(int id);\n\tpublic void insert(Course course);\n\tpublic void update(Course course);\n\tpublic void delete(int id);\n\tpublic PageInfo<Course> findByPage(Course course, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/ErrorBookService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport edu.fjnu.online.domain.ErrorBook;\n\npublic interface ErrorBookService {\n\tpublic List<ErrorBook> find(ErrorBook errorBook);\n\tpublic ErrorBook get(int id);\n\tpublic void insert(ErrorBook errorBook);\n\tpublic void update(ErrorBook errorBook);\n\tpublic void delete(int id);\n\tpublic List<ErrorBook> getBookInfo(Map map);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/GradeService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.util.List;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Question;\n\npublic interface GradeService {\n\tpublic List<Grade> find(Grade grade);\n\tpublic Grade get(int id);\n\tpublic void insert(Grade grade);\n\tpublic void update(Grade grade);\n\tpublic void delete(int id);\n\tpublic PageInfo<Grade> findByPage(Grade grade, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/PaperService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Paper;\nimport edu.fjnu.online.domain.Question;\n\npublic interface PaperService {\n\tpublic List<Paper> find(Paper paper);\n\tpublic Paper get(Serializable id);\n\tpublic void insert(Paper paper);\n\tpublic void update(Paper paper);\n\tpublic void delete(Serializable id);\n\tpublic void delete(Serializable[] ids);\n\t/**通过学生编号获取所有的试卷*/\n\tpublic List<Paper> getUserPaperById(Serializable id);\n\t/**查看试卷详情*/\n\tpublic Paper getPaperDetail(Map map);\n\t/**更新用户试卷信息*/\n\tpublic void updateUserPaper(Map map);\n\t/**查询未考试的试卷*/\n\tpublic List<Paper> getUndoPaper(Map map);\n\t/**查询学生未考试的试卷*/\n\tpublic List<Paper> qryUndoPaper(Map map);\n\tpublic PageInfo<Paper> findAllPage(Paper paper, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/QuestionService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Question;\n\npublic interface QuestionService {\n\tpublic List<Question> find(Question question);\n\tpublic Question get(int id);\n\tpublic void insert(Question question);\n\tpublic void update(Question question);\n\tpublic void delete(int id);\n\tpublic List<Question> createPaper(Map map);\n\tpublic PageInfo<Question> findByPage(Question question, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/TypeService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.util.List;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Type;\n\npublic interface TypeService {\n\tpublic List<Type> find(Type type);\n\tpublic Type get(int id);\n\tpublic void insert(Type type);\n\tpublic void update(Type type);\n\tpublic void delete(int id);\n\tpublic PageInfo<Type> findByPage(Type type, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/UserService.java",
    "content": "package edu.fjnu.online.service;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.User;\n\npublic interface UserService {\n\tpublic List<User> find(User user);\n\t/**查询所有待审核记录*/\n\tpublic List<User> findPending(User user);\n\tpublic User get(Serializable id);\n\tpublic void insert(User user);\n\tpublic void update(User user);\n\tpublic void delete(Serializable id);\n\tpublic void delete(Serializable[] ids);\n\tpublic User login(User user);\n\t/**查询学生信息*/\n\tpublic User getStu(User user);\n\t/**分页查询学生信息*/\n\tpublic PageInfo<User> findByPage(User user, Integer pageNo,Integer pageSize);\n\t/**分页查询待审核记录*/\n\tpublic PageInfo<User> findPendingByPage(User user, Integer pageNo,Integer pageSize);\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/CourseServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.CourseDao;\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.service.CourseService;\n@Service\npublic class CourseServiceImpl implements CourseService {\n\n\t@Autowired\n\tCourseDao courseDao;\n\tpublic List<Course> find(Course course) {\n\t\treturn courseDao.find(course);\n\t}\n\n\tpublic Course get(int id) {\n\t\treturn courseDao.get(id);\n\t}\n\n\tpublic void insert(Course course) {\n\t\tcourseDao.insert(course);\n\t}\n\n\tpublic void update(Course course) {\n\t\tcourseDao.update(course);\n\t}\n\n\tpublic void delete(int id) {\n\t\tcourseDao.delete(id);\t\t\n\t}\n\n\tpublic PageInfo<Course> findByPage(Course course, Integer pageNo,\n\t\t\tInteger pageSize) {\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<Course> list = courseDao.find(course);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<Course> page = new PageInfo<Course>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/ErrorBookServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport edu.fjnu.online.dao.ErrorBookDao;\nimport edu.fjnu.online.domain.ErrorBook;\nimport edu.fjnu.online.service.ErrorBookService;\n@Service\npublic class ErrorBookServiceImpl implements ErrorBookService {\n\n\t@Autowired\n\tErrorBookDao bookDao;\n\tpublic List<ErrorBook> find(ErrorBook errorBook) {\n\t\treturn bookDao.find(errorBook);\n\t}\n\n\tpublic ErrorBook get(int id) {\n\t\treturn bookDao.get(id);\n\t}\n\n\tpublic void insert(ErrorBook errorBook) {\n\t\tbookDao.insert(errorBook);\n\t}\n\n\tpublic void update(ErrorBook errorBook) {\n\t\tbookDao.update(errorBook);\n\t}\n\n\tpublic void delete(int id) {\n\t\tbookDao.delete(id);\n\t}\n\n\tpublic List<ErrorBook> getBookInfo(Map map) {\n\t\treturn bookDao.getBookInfo(map);\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/GradeServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.GradeDao;\nimport edu.fjnu.online.domain.Grade;\nimport edu.fjnu.online.domain.Paper;\nimport edu.fjnu.online.service.GradeService;\n@Service\npublic class GradeServiceImpl implements GradeService{\n\n\t@Autowired\n\tGradeDao gradeDao;\n\t\n\tpublic List<Grade> find(Grade grade) {\n\t\treturn gradeDao.find(grade);\n\t}\n\n\tpublic Grade get(int id) {\n\t\treturn gradeDao.get(id);\n\t}\n\n\tpublic void insert(Grade grade) {\n\t\tgradeDao.insert(grade);\n\t}\n\n\tpublic void update(Grade grade) {\n\t\tgradeDao.update(grade);\n\t}\n\n\tpublic void delete(int id) {\n\t\tgradeDao.delete(id);\t\t\n\t}\n\n\tpublic PageInfo<Grade> findByPage(Grade grade, Integer pageNo,\n\t\t\tInteger pageSize) {\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<Grade> list = gradeDao.find(grade);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<Grade> page = new PageInfo<Grade>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/PaperServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.PaperDao;\nimport edu.fjnu.online.domain.Paper;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.service.PaperService;\n@Service\npublic class PaperServiceImpl implements PaperService {\n\n\t@Autowired\n\tPaperDao paperDao;\n\tpublic List<Paper> find(Paper paper) {\n\t\treturn paperDao.find(paper);\n\t}\n\n\tpublic Paper get(Serializable id) {\n\t\treturn paperDao.get(id);\n\t}\n\n\tpublic void insert(Paper paper) {\n\t\tpaperDao.insert(paper);\n\t}\n\n\tpublic void update(Paper paper) {\n\t\tpaperDao.update(paper);\n\t}\n\n\tpublic void delete(Serializable id) {\n\t\tpaperDao.delete(id);\n\t}\n\n\tpublic void delete(Serializable[] ids) {\n\t\tpaperDao.delete(ids);\n\t}\n\n\tpublic List<Paper> getUserPaperById(Serializable id) {\n\t\t// TODO Auto-generated method stub\n\t\treturn paperDao.getUserPaperById(id);\n\t}\n\n\tpublic Paper getPaperDetail(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn paperDao.getPaperDetail(map);\n\t}\n\n\tpublic void updateUserPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\tpaperDao.updateUserPaper(map);\n\t}\n\n\tpublic List<Paper> getUndoPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn paperDao.getUndoPaper(map);\n\t}\n\n\tpublic List<Paper> qryUndoPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn paperDao.qryUndoPaper(map);\n\t}\n\n\tpublic PageInfo<Paper> findAllPage(Paper paper, Integer pageNo,\n\t\t\tInteger pageSize) {\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<Paper> list = paperDao.find(paper);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<Paper> page = new PageInfo<Paper>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/QuestionServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.QuestionDao;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.service.QuestionService;\n@Service\npublic class QuestionServiceImpl implements QuestionService {\n\n\t@Autowired\n\tQuestionDao questionDao;\n\t\n\tpublic List<Question> find(Question question) {\n\t\treturn questionDao.find(question);\n\t}\n\n\tpublic Question get(int id) {\n\t\treturn questionDao.get(id);\n\t}\n\n\tpublic void insert(Question question) {\n\t\tquestionDao.insert(question);\n\t}\n\n\tpublic void update(Question question) {\n\t\tquestionDao.update(question);\n\t}\n\n\tpublic void delete(int id) {\n\t\tquestionDao.delete(id);\n\t}\n\n\tpublic List<Question> createPaper(Map map) {\n\t\t// TODO Auto-generated method stub\n\t\treturn questionDao.createPaper(map);\n\t}\n\n\tpublic PageInfo<Question> findByPage(Question question, Integer pageNo,\n\t\t\tInteger pageSize) {\n\t\t\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<Question> list = questionDao.find(question);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<Question> page = new PageInfo<Question>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/TypeServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.TypeDao;\nimport edu.fjnu.online.domain.Course;\nimport edu.fjnu.online.domain.Type;\nimport edu.fjnu.online.service.TypeService;\n\n@Service\npublic class TypeServiceImpl implements TypeService{\n\n\t@Autowired\n\tTypeDao typeDao;\n\t\n\tpublic List<Type> find(Type type) {\n\t\treturn typeDao.find(type);\n\t}\n\n\tpublic Type get(int id) {\n\t\treturn typeDao.get(id);\n\t}\n\n\tpublic void insert(Type type) {\n\t\ttypeDao.insert(type);\n\t}\n\n\tpublic void update(Type type) {\n\t\ttypeDao.update(type);\n\t}\n\n\tpublic void delete(int id) {\n\t\ttypeDao.delete(id);\n\t}\n\n\tpublic PageInfo<Type> findByPage(Type type, Integer pageNo, Integer pageSize) {\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<Type> list = typeDao.find(type);\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<Type> page = new PageInfo<Type>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/service/impl/UserServiceImpl.java",
    "content": "package edu.fjnu.online.service.impl;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.PageInfo;\n\nimport edu.fjnu.online.dao.UserDao;\nimport edu.fjnu.online.domain.Question;\nimport edu.fjnu.online.domain.User;\nimport edu.fjnu.online.service.UserService;\nimport edu.fjnu.online.util.MD5Util;\n@Service\npublic class UserServiceImpl implements UserService {\n\n\t@Autowired\n\tUserDao userDao;\n\t\n\tpublic List<User> find(User user) {\n\t\t// TODO Auto-generated method stub\n\t\treturn userDao.find(user);\n\t}\n\n\tpublic User get(Serializable id) {\n\t\t// TODO Auto-generated method stub\n\t\treturn userDao.get(id);\n\t}\n\n\tpublic void insert(User user) {\n\t\tString userPwd = user.getUserPwd();\n\t\t//密码加密\n\t\tuserPwd = MD5Util.getData(userPwd);\n\t\tuser.setUserPwd(userPwd);\n\t\tuserDao.insert(user);\n\t}\n\n\tpublic void update(User user) {\n\t\t// TODO Auto-generated method stub\n\t\tuserDao.update(user);\n\t}\n\n\tpublic void delete(Serializable id) {\n\t\t// TODO Auto-generated method stub\n\t\tuserDao.delete(id);\n\t}\n\n\tpublic void delete(Serializable[] ids) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\tpublic User login(User user) {\n\t\t// TODO Auto-generated method stub\n\t\tUser u = get(user.getUserId());\n\t\tif(u!=null){\n\t\t\tString userPwd = MD5Util.getData(user.getUserPwd());\n\t\t\tif(userPwd.equals(u.getUserPwd())){\n\t\t\t\treturn u;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic List<User> findPending(User user) {\n\t\t// TODO Auto-generated method stub\n\t\treturn userDao.findPending(user);\n\t}\n\n\tpublic User getStu(User user) {\n\t\t// TODO Auto-generated method stub\n\t\treturn userDao.getStu(user);\n\t}\n\n\tpublic PageInfo<User> findByPage(User user, Integer pageNo, Integer pageSize) {\n\t\t// TODO Auto-generated method stub\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<User> list = userDao.find(user);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<User> page = new PageInfo<User>(list);\n\t    return page;\n\t}\n\n\tpublic PageInfo<User> findPendingByPage(User user, Integer pageNo,\n\t\t\tInteger pageSize) {\n\t\tpageNo = pageNo == null?1:pageNo;\n\t    pageSize = pageSize == null?10:pageSize;\n\t    PageHelper.startPage(pageNo, pageSize);\n\t    List<User> list = userDao.findPending(user);\n\t    System.out.println(list.toString());\n\t    //用PageInfo对结果进行包装\n\t    PageInfo<User> page = new PageInfo<User>(list);\n\t    return page;\n\t}\n\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/Arith.java",
    "content": "package edu.fjnu.online.util;\n\n\n// 这是一个数数学计算的class 缩略图生成的时候需要用到。\n\nimport java.math.BigDecimal;\nimport java.util.Random;\npublic class Arith {\n\t//默认除法运算精度\n    private static final int DEF_DIV_SCALE = 10;\n     /**\n       * 提供精确的加法运算。\n       * @param v1 被加数\n       * @param v2 加数\n       * @return 两个参数的和\n       */\n      public static double add(double v1,double v2){\n        BigDecimal b1 = new BigDecimal(Double.toString(v1));\n        BigDecimal b2 = new BigDecimal(Double.toString(v2));\n        return b1.add(b2).doubleValue();\n      } \n      /**\n       * 提供精确的减法运算。\n       * @param v1 被减数\n       * @param v2 减数\n       * @return 两个参数的差\n       */\n      public static double sub(double v1,double v2){\n        BigDecimal b1 = new BigDecimal(Double.toString(v1));\n        BigDecimal b2 = new BigDecimal(Double.toString(v2));\n        return b1.subtract(b2).doubleValue();\n      }\n      /**\n       * 提供精确的乘法运算。\n       * @param v1 被乘数\n       * @param v2 乘数\n       * @return 两个参数的积\n       */\n    public static double mul(double v1,double v2){\n        BigDecimal b1 = new BigDecimal(Double.toString(v1));\n        BigDecimal b2 = new BigDecimal(Double.toString(v2));\n        return b1.multiply(b2).doubleValue();\n    }\n      /**\n       * 提供（相对）精确的除法运算，当发生除不尽的情况时，精确到\n       * 小数点以后10位，以后的数字四舍五入。\n       * @param v1 被除数\n       * @param v2 除数\n       * @return 两个参数的商\n       */\n      public static double div(double v1,double v2){\n        return div(v1,v2,DEF_DIV_SCALE);\n      }\n      /**\n       * 提供（相对）精确的除法运算。当发生除不尽的情况时，由scale参数指\n       * 定精度，以后的数字四舍五入。\n       * @param v1 被除数\n       * @param v2 除数\n       * @param scale 表示表示需要精确到小数点以后几位。\n       * @return 两个参数的商\n       */\n      public static double div(double v1,double v2,int scale){\n        if(scale<0){\n          throw new IllegalArgumentException(\n          \"The scale must be a positive integer or zero\");\n        }\n        BigDecimal b1 = new BigDecimal(Double.toString(v1));\n        BigDecimal b2 = new BigDecimal(Double.toString(v2));\n        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();\n      }\n      /**\n       * 提供精确的小数位四舍五入处理。\n       * @param v 需要四舍五入的数字\n       * @param scale 小数点后保留几位\n       * @return 四舍五入后的结果\n       */\n      public static double round(double v,int scale){\n        if(scale<0){\n          throw new IllegalArgumentException(\n          \"The scale must be a positive integer or zero\");\n        }\n        BigDecimal b = new BigDecimal(Double.toString(v));\n        BigDecimal one = new BigDecimal(\"1\");\n        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();\n      }\n      \n      //非整除则进位 by tony 20111006\n      public int round(int i1,int i2){\n    \t  int modi = 0;\n    \t  modi = i1 % i2;\n    \t  int i = i1/i2;\n    \t  if(modi==0){\n    \t\t  return i;\n    \t  }else{\n    \t\t  return i+1;\n    \t  }\n      }\n      \n      //使用时一定要注意其大小，不可超出范围\n      public int pow(int i1,int i2){\n    \t  double d1 = (double)i1;\n    \t  double d2 = (double)i2;\n    \t  return (int)java.lang.Math.pow(d1, d2);\n      }\n      \n      //对给定数目的自0开始步长为1的数字序列进行乱序\n      public static int[] getSequence(int maxnum) {\n          int[] sequence = new int[maxnum];\n          for(int i = 0; i < maxnum; i++){\n              sequence[i] = i;\n          }\n          Random random = new Random();\n          for(int i = 0; i < maxnum; i++){\n              int p = random.nextInt(maxnum);\n              int tmp = sequence[i];\n              sequence[i] = sequence[p];\n              sequence[p] = tmp;\n          }\n          random = null;\n          return sequence;\n      } \n      \n      public static void main(String[] agrs){\n    \t  Arith arith = new Arith();\n    \t  int[] i = arith.getSequence(300);\n    \t  for(int n=0;n<i.length;n++){\n    \t\t  System.out.println(i[n]);\n    \t  }\n      }\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/ComputeScore.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.math.BigDecimal;\nimport java.math.RoundingMode;\n\n/**\n * 分数计算\n * @author hspcadmin\n *\n */\npublic class ComputeScore {\n\n\tpublic static double getScore(String str1,String str2){\n\t\tdouble d = Computeclass.SimilarDegree(str1, str1);\n\t\treturn d;\n\t}\n\t\n\tpublic static void main(String[] args) {\n\t\tString str1=\"相似度来计算文本的相似度，然后通过相似度来计算本题的得分，\";\n\t\tString str2=\"相似度来计算文本的相似度，然后通过相似度\";\n\t\t\n\t\tdouble d = Computeclass.SimilarDegree(str1, str2);\n\t\t\n\t\tString str3 = Computeclass.longestCommonSubstring(str1, str2);\n\t\t\n\t\t//double d2 = TextSimilarityUtil.getSimilarity(str1, str3);\n\t\t// 新方法，如果不需要四舍五入，可以使用RoundingMode.DOWN\n\t\tSystem.out.println(d);\n        BigDecimal bg = new BigDecimal(d*5).setScale(1, RoundingMode.DOWN);\n        d = bg.doubleValue();\n        System.out.println(d);\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/Computeclass.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.text.NumberFormat;\nimport java.util.Locale;\n\npublic class Computeclass {\n\t/* \n     * 计算相似度 \n     * */\n\t/**\n\t * 计算相似度\n\t * @param strA \n\t * @param strB \n\t * @return\n\t */\n    public static double SimilarDegree(String strA, String strB){     \n        String newStrA = removeSign(strA);      \n        String newStrB = removeSign(strB);  \n        //用较大的字符串长度作为分母，相似子串作为分子计算出字串相似度  \n        int temp = Math.max(newStrA.length(), newStrB.length());      \n        int temp2 = longestCommonSubstring(newStrA, newStrB).length();     \n        return temp2 * 1.0 / temp;      \n    }    \n    \n      \n    /* \n     * 将字符串的所有数据依次写成一行 \n     * */  \n    public static String removeSign(String str) {     \n        StringBuffer sb = new StringBuffer();   \n        //遍历字符串str,如果是汉字数字或字母，则追加到ab上面  \n        for (char item : str.toCharArray())     \n            if (charReg(item)){      \n                sb.append(item);    \n            }    \n        return sb.toString();    \n    }    \n    \n      \n    /* \n     * 判断字符是否为汉字，数字和字母， \n     * 因为对符号进行相似度比较没有实际意义，故符号不加入考虑范围。 \n     * */  \n    public static boolean charReg(char charValue) {      \n        return (charValue >= 0x4E00 && charValue <= 0X9FA5) || (charValue >= 'a' && charValue <= 'z')  \n                || (charValue >= 'A' && charValue <= 'Z')  || (charValue >= '0' && charValue <= '9');      \n    }      \n    \n      \n    /* \n     * 求公共子串，采用动态规划算法。 \n     * 其不要求所求得的字符在所给的字符串中是连续的。 \n     *  \n     * */  \n    public static String longestCommonSubstring(String strA, String strB) {     \n        char[] chars_strA = strA.toCharArray();  \n        char[] chars_strB = strB.toCharArray();   \n        int m = chars_strA.length;     \n        int n = chars_strB.length;   \n          \n        /* \n         * 初始化矩阵数据,matrix[0][0]的值为0， \n         * 如果字符数组chars_strA和chars_strB的对应位相同，则matrix[i][j]的值为左上角的值加1， \n         * 否则，matrix[i][j]的值等于左上方最近两个位置的较大值， \n         * 矩阵中其余各点的值为0. \n        */  \n        int[][] matrix = new int[m + 1][n + 1];     \n        for (int i = 1; i <= m; i++) {    \n            for (int j = 1; j <= n; j++) {      \n                if (chars_strA[i - 1] == chars_strB[j - 1])     \n                    matrix[i][j] = matrix[i - 1][j - 1] + 1;      \n                else     \n                    matrix[i][j] = Math.max(matrix[i][j - 1], matrix[i - 1][j]);     \n            }     \n        }  \n        /* \n         * 矩阵中，如果matrix[m][n]的值不等于matrix[m-1][n]的值也不等于matrix[m][n-1]的值， \n         * 则matrix[m][n]对应的字符为相似字符元，并将其存入result数组中。 \n         *  \n         */  \n        char[] result = new char[matrix[m][n]];      \n        int currentIndex = result.length - 1;     \n        while (matrix[m][n] != 0) {     \n            if (matrix[n] == matrix[n - 1])    \n                n--;     \n            else if (matrix[m][n] == matrix[m - 1][n])      \n                m--;     \n            else {     \n                result[currentIndex] = chars_strA[m - 1];     \n                currentIndex--;    \n                n--;     \n                m--;    \n            }    \n        }      \n       return new String(result);     \n    }    \n      \n      \n    /* \n     * 结果转换成百分比形式  \n     * */     \n    public static String similarityResult(double resule){      \n        return  NumberFormat.getPercentInstance(new Locale( \"en \", \"US \")).format(resule);     \n    } \n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/DateConverter.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.sql.Date;\nimport java.sql.Timestamp;\nimport java.text.SimpleDateFormat;\n\nimport org.springframework.beans.propertyeditors.CustomDateEditor;\nimport org.springframework.web.bind.WebDataBinder;\nimport org.springframework.web.bind.support.WebBindingInitializer;\nimport org.springframework.web.context.request.WebRequest;\n\n/*\n * 实现自定义日期格式转换，格式为：yyyy-MM-dd\n * \n * \t\n * 为何在springmvc-servlet.xml中配置不起作用，直接controller中声明起作用\n\t<!-- 拦截器 -->\n\t<bean id=\"annotationMethodHandlerAdapter\" class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\">\n\t\t<!-- 日期格式转换 -->\n        <property name=\"webBindingInitializer\">\n         <bean class=\"cn.itcast.jk.util.DateConverter\"/>\n        </property>\n\t</bean>\n\t\n\t\n */\npublic class DateConverter implements WebBindingInitializer {\n\tpublic void initBinder(WebDataBinder binder, WebRequest request) {\n\t\tSimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\tbinder.registerCustomEditor(Date.class, new CustomDateEditor(df, true));\n\t\tbinder.registerCustomEditor(Timestamp.class, new CustomDateEditor(df, true));\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/DownloadUtil.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\nimport javax.servlet.ServletOutputStream;\nimport javax.servlet.http.HttpServletResponse;\n\npublic class DownloadUtil {\n\t\n\t/**\n\t * @param filePath 要下载的文件路径\n\t * @param returnName 返回的文件名\n\t * @param response HttpServletResponse\n\t * @param delFlag 是否删除文件\n\t */\n\tprotected void download(String filePath,String returnName,HttpServletResponse response,boolean delFlag){\n\t\tthis.prototypeDownload(new File(filePath), returnName, response, delFlag);\n\t}\n\n\n\t/**\n\t * @param file 要下载的文件\n\t * @param returnName 返回的文件名\n\t * @param response HttpServletResponse\n\t * @param delFlag 是否删除文件\n\t */\n\tprotected void download(File file,String returnName,HttpServletResponse response,boolean delFlag){\n\t\tthis.prototypeDownload(file, returnName, response, delFlag);\n\t}\n\t\n\t/**\n\t * @param file 要下载的文件\n\t * @param returnName 返回的文件名\n\t * @param response HttpServletResponse\n\t * @param delFlag 是否删除文件\n\t */\n\tpublic void prototypeDownload(File file,String returnName,HttpServletResponse response,boolean delFlag){\n\t\t// 下载文件\n\t\tFileInputStream inputStream = null;\n\t\tServletOutputStream outputStream = null;\n\t\ttry {\n\t\t\tif(!file.exists()) return;\n\t\t\tresponse.reset();\n\t\t\t//设置响应类型\tPDF文件为\"application/pdf\"，WORD文件为：\"application/msword\"， EXCEL文件为：\"application/vnd.ms-excel\"。  \n\t\t\tresponse.setContentType(\"application/octet-stream;charset=utf-8\");\n\n\t\t\t//设置响应的文件名称,并转换成中文编码\n\t\t\t//returnName = URLEncoder.encode(returnName,\"UTF-8\");\n\t\t\treturnName = response.encodeURL(new String(returnName.getBytes(),\"iso8859-1\"));\t//保存的文件名,必须和页面编码一致,否则乱码\n\t\t\t\n\t\t\t//attachment作为附件下载；inline客户端机器有安装匹配程序，则直接打开；注意改变配置，清除缓存，否则可能不能看到效果\n\t\t\tresponse.addHeader(\"Content-Disposition\",   \"attachment;filename=\"+returnName);  \n\t\t\t\n\t\t\t//将文件读入响应流\n\t\t\tinputStream = new FileInputStream(file);\n\t\t\toutputStream = response.getOutputStream();\n\t\t\tint length = 1024;\n\t\t\tint readLength=0;\n\t\t\tbyte buf[] = new byte[1024];\n\t\t\treadLength = inputStream.read(buf, 0, length);\n\t\t\twhile (readLength != -1) {\n\t\t\t\toutputStream.write(buf, 0, readLength);\n\t\t\t\treadLength = inputStream.read(buf, 0, length);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\toutputStream.flush();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\toutputStream.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tinputStream.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\t//删除原文件\n\t\t\t\n\t\t\tif(delFlag) {\t\t\t\t\n\t\t\t\tfile.delete();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * by tony 2013-10-17\n\t * @param byteArrayOutputStream 将文件内容写入ByteArrayOutputStream\n\t * @param response HttpServletResponse\t写入response\n\t * @param returnName 返回的文件名\n\t */\n\tpublic void download(ByteArrayOutputStream byteArrayOutputStream, HttpServletResponse response, String returnName) throws IOException{\n\t\tresponse.setContentType(\"application/octet-stream;charset=utf-8\");\n\t\treturnName = response.encodeURL(new String(returnName.getBytes(),\"iso8859-1\"));\t\t\t//保存的文件名,必须和页面编码一致,否则乱码\n\t\tresponse.addHeader(\"Content-Disposition\",   \"attachment;filename=\" + returnName);  \n\t\tresponse.setContentLength(byteArrayOutputStream.size());\n\t\t\n\t\tServletOutputStream outputstream = response.getOutputStream();\t//取得输出流\n\t\tbyteArrayOutputStream.writeTo(outputstream);\t\t\t\t\t//写到输出流\n\t\tbyteArrayOutputStream.close();\t\t\t\t\t\t\t\t\t//关闭\n\t\toutputstream.flush();\t\t\t\t\t\t\t\t\t\t\t//刷数据\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/FormatStyle.java",
    "content": "package edu.fjnu.online.util;\n\n\npublic class FormatStyle {\n\t\n\tpublic static void main(String[] args) {\n\t\t// TODO: Add your code here\n\t\tFormatStyle formatStyle = new FormatStyle();\n\t\tSystem.out.println(formatStyle.fileSize(\"10737418240\"));\n\t}\n\n\n\tpublic String fileSize(String s1) {\n\t\tint iPos = 0;\n\t\tString s =\"\";\n\t\tStringBuffer sBuf = new StringBuffer();\n\t\ttry{\n\t\t\tif(s1.trim().compareTo(\"\")==0){\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tlong g = Long.parseLong(\"1099511627776\");//数字太大，JAVA直接写会无法识别，会引起下面比较失败\n\t\t\t//int i = Integer.parseInt(s1);\n\t\t\tdouble i = Double.parseDouble(s1);\n\n\t\t\tif(i<=0){\n\t\t\t\tsBuf.append(\"\");\n\t\t\t}else if(i<1024){\n\t\t\t\tsBuf.append(i).append(\" B\");\t//四舍五入\n\t\t\t\tiPos = sBuf.lastIndexOf(\".00 B\");\t\n\t\t\t\tif(iPos>0){\n\t\t\t\t\tsBuf.delete(iPos,sBuf.length()-2);\t\n\t\t\t\t}\n\t\t\t}else if(i<1024*1024){\n\t\t\t\tsBuf.append(new java.text.DecimalFormat(\".00\").format(i/1024)).append(\" KB\");\t//四舍五入\n\t\t\t\tiPos = sBuf.lastIndexOf(\".00 KB\");\t\n\t\t\t\tif(iPos>0){\n\t\t\t\t\tsBuf.delete(iPos,sBuf.length()-3);\t\n\t\t\t\t}\n\t\t\t}else if(i<1024*1024*1024){\n\t\t\t\tsBuf.append(new java.text.DecimalFormat(\".00\").format(i/(1024*1024))).append(\" M\");\t//四舍五入\n\t\t\t\tiPos = sBuf.lastIndexOf(\".00 M\");\n\t\t\t\tif(iPos>0){\n\t\t\t\t\tsBuf.delete(iPos,sBuf.length()-2);\t\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tsBuf.append(new java.text.DecimalFormat(\".00\").format(i/(1024*1024*1024))).append(\" G\");\t//四舍五入\n\t\t\t\tiPos = sBuf.lastIndexOf(\".00 G\");\n\t\t\t\tif(iPos>0){\n\t\t\t\t\tsBuf.delete(iPos,sBuf.length()-2);\t\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t}catch(Exception e){\n\t\t\treturn \"\";\n\t\t}\n\t\treturn sBuf.toString();\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/MD5Util.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.security.MessageDigest;\n\npublic class MD5Util {\n\tpublic static String getData(String str) {\n\t\ttry {\n\t\t\tMessageDigest digest = MessageDigest.getInstance(\"md5\");\n\t\t\tbyte[] data = digest.digest(str.getBytes());\n\t\t\tStringBuilder sb = new StringBuilder();\n\t\t\tfor (int i = 0; i < data.length; i++) {\n\t\t\t\tString result = Integer.toHexString(data[i] & 0xff);\n\t\t\t\tString temp = null;\n\t\t\t\tif (result.length() == 1) {\n\t\t\t\t\ttemp = \"0\" + result;\n\t\t\t\t} else {\n\t\t\t\t\ttemp = result;\n\t\t\t\t}\n\t\t\t\tsb.append(temp);\n\t\t\t}\n\t\t\treturn sb.toString();\n\t\t} catch (Exception e) {\n\t\t\t// TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn null;\n\t}\n\t\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(\"e10adc3949ba59abbe56e057f20f883e\".equals(getData(\"123456\")));\n\t\tSystem.out.println(getData(\"123456\"));\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/MybatisUtil.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.Properties;\n\nimport org.apache.ibatis.io.Resources;\nimport org.apache.ibatis.session.SqlSession;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.apache.ibatis.session.SqlSessionFactoryBuilder;\n\npublic class MybatisUtil {\n\tprivate static SqlSessionFactory factory;\n\t//利用静态块初始化\n\tstatic{\n\t\ttry{\n\t\t\tInputStream inputStream = Resources.getResourceAsStream(\"MybatisTestConfig.xml\");\n\t\t\tProperties properties = Resources.getResourceAsProperties(\"jdbc.properties\");\t\t//获取属性文件\n\t\t\tfactory = new SqlSessionFactoryBuilder().build(inputStream, properties);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\t\n\t//获得session对象\n\tpublic static SqlSession openSession(){\n\t\treturn factory.openSession();\n\t}\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/TextSimilarityUtil.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.io.UnsupportedEncodingException;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimport java.util.Map;\n\npublic class TextSimilarityUtil {\n\n\tpublic static double getSimilarity(String doc1, String doc2) {  \n        if (doc1 != null && doc1.trim().length() > 0 && doc2 != null&& doc2.trim().length() > 0) {  \n              \n            Map<Integer, int[]> AlgorithmMap = new HashMap<Integer, int[]>();  \n              \n            //将两个字符串中的中文字符以及出现的总数封装到，AlgorithmMap中  \n            for (int i = 0; i < doc1.length(); i++) {  \n                char d1 = doc1.charAt(i);  \n                if(isHanZi(d1)){//标点和数字不处理  \n                    int charIndex = getGB2312Id(d1);//保存字符对应的GB2312编码  \n                    if(charIndex != -1){  \n                        int[] fq = AlgorithmMap.get(charIndex);  \n                        if(fq != null && fq.length == 2){  \n                            fq[0]++;//已有该字符，加1  \n                        }else {  \n                            fq = new int[2];  \n                            fq[0] = 1;  \n                            fq[1] = 0;  \n                            AlgorithmMap.put(charIndex, fq);//新增字符入map  \n                        }  \n                    }  \n                }  \n            }  \n  \n            for (int i = 0; i < doc2.length(); i++) {  \n                char d2 = doc2.charAt(i);  \n                if(isHanZi(d2)){  \n                    int charIndex = getGB2312Id(d2);  \n                    if(charIndex != -1){  \n                        int[] fq = AlgorithmMap.get(charIndex);  \n                        if(fq != null && fq.length == 2){  \n                            fq[1]++;  \n                        }else {  \n                            fq = new int[2];  \n                            fq[0] = 0;  \n                            fq[1] = 1;  \n                            AlgorithmMap.put(charIndex, fq);  \n                        }  \n                    }  \n                }  \n            }  \n              \n            Iterator<Integer> iterator = AlgorithmMap.keySet().iterator();  \n            double sqdoc1 = 0;  \n            double sqdoc2 = 0;  \n            double denominator = 0;   \n            while(iterator.hasNext()){  \n                int[] c = AlgorithmMap.get(iterator.next());  \n                denominator += c[0]*c[1];  \n                sqdoc1 += c[0]*c[0];  \n                sqdoc2 += c[1]*c[1];  \n            }  \n              \n            return denominator / Math.sqrt(sqdoc1*sqdoc2);//余弦计算  \n        } else {  \n            throw new NullPointerException(\" the Document is null or have not cahrs!!\");  \n        }  \n    }  \n  \n    public static boolean isHanZi(char ch) {  \n        // 判断是否汉字  \n        return (ch >= 0x4E00 && ch <= 0x9FA5);  \n        /*if (ch >= 0x4E00 && ch <= 0x9FA5) {//汉字 \n            return true; \n        }else{ \n            String str = \"\" + ch; \n            boolean isNum = str.matches(\"[0-9]+\");  \n            return isNum; \n        }*/  \n        /*if(Character.isLetterOrDigit(ch)){ \n            String str = \"\" + ch; \n            if (str.matches(\"[0-9a-zA-Z\\\\u4e00-\\\\u9fa5]+\")){//非乱码 \n                return true; \n            }else return false; \n        }else return false;*/  \n    }  \n  \n    /** \n     * 根据输入的Unicode字符，获取它的GB2312编码或者ascii编码， \n     *  \n     * @param ch 输入的GB2312中文字符或者ASCII字符(128个) \n     * @return ch在GB2312中的位置，-1表示该字符不认识 \n     */  \n    public static short getGB2312Id(char ch) {  \n        try {  \n            byte[] buffer = Character.toString(ch).getBytes(\"GB2312\");  \n            if (buffer.length != 2) {  \n                // 正常情况下buffer应该是两个字节，否则说明ch不属于GB2312编码，故返回'?'，此时说明不认识该字符  \n                return -1;  \n            }  \n            int b0 = (int) (buffer[0] & 0x0FF) - 161; // 编码从A1开始，因此减去0xA1=161  \n            int b1 = (int) (buffer[1] & 0x0FF) - 161;   \n            return (short) (b0 * 94 + b1);// 第一个字符和最后一个字符没有汉字，因此每个区只收16*6-2=94个汉字  \n        } catch (UnsupportedEncodingException e) {  \n            e.printStackTrace();  \n        }  \n        return -1;  \n    }  \n      \n    public static void main(String[] args) {  \n        String str1=\"精英计划教育一个高中生申请美国名校解决方案的整体服务体系。这个项目纵向综合了前期培训申请，签证三个项目；横向结合了教学培训，教学辅导，留学申请，和后期服务等诸多部门的综合项目\";  \n        String str2=\"余弦定理算法：doc1 和doc2 相似度为：0.99425095, 用时：33mm\";  \n        long start=System.currentTimeMillis();    \n        double Similarity=TextSimilarityUtil.getSimilarity(str1, str2);  \n        System.out.println(\"用时:\"+(System.currentTimeMillis()-start));   \n        System.out.println(Similarity);  \n    } \n\t\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/UtilFuns.java",
    "content": "package edu.fjnu.online.util;\n\nimport java.sql.Timestamp;\nimport java.text.SimpleDateFormat;\nimport java.text.ParseException;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.StringTokenizer;\nimport java.util.ArrayList;\nimport java.text.DecimalFormat;\n\nimport java.net.URLEncoder;\nimport java.net.URLDecoder;\nimport java.util.Date;\n\n\n/** UtilFuns is a JavaBean.  */\n public class UtilFuns {\n\n\n  static public String newLine(){\n  \treturn System.getProperty(\"line.separator\"); \n  }\n  \n\n\t/* 验证数组是否为空 */\n\tpublic static boolean arrayValid(Object[] objects) {\n\t\tif (objects != null && objects.length > 0) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/* 验证list是否为空 */\n\tpublic boolean listValid(List list) {\n\t\tif (list != null && list.size() > 0) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n  \n\n  //获得年龄\n  public int age(String dateStart, String dateEnd) throws Exception{\n\t  int yearStart = Integer.parseInt(dateStart.substring(0,4));\n\t  int yearEnd = Integer.parseInt(dateEnd.substring(0,4));\n\t  return yearEnd-yearStart;\n  }\n  \n  //是否为奇数\n  public boolean isOdd(int i){\n\t  if(i%2==0){\n\t\t  return false;\n\t  }else{\n\t\t  return true;\n\t  }\n  }\n\n  public String cutStr(String str,int len){\n  \ttry{\n  \t\tstr = str.substring(0,len);\n  \t}catch(Exception e){\n  \t\treturn str;\n  \t}\n  \treturn str;\n  }\n  \n  //返回固定长度串，空白地方用空格填充 by tony 20110926\n  public String fixSpaceStr(String str,int len){\n\t  StringBuffer sBuf = new StringBuffer();\n\t  try{\n\t\t  if(str.length()>len){\n\t\t\t  return str;\n\t\t  }else{\n\t\t\t  sBuf.append(str);\n\t\t\t  for(int i=0;i<(len-str.length());i++){\n\t\t\t\t  sBuf.append(\" \");\n\t\t\t  }\n\t\t\t  return sBuf.toString();\n\t\t  }\n\t  }catch(Exception e){\n\t\t  return str;\n\t  }\n  }\n  \n  public String fixSpaceStr(int number,int len){\n\t  return fixSpaceStr(String.valueOf(number),len);\n  }\n  \n  //前缀空格\n  public String prefixSpaceStr(String str,int len){\n\t  StringBuffer sBuf = new StringBuffer();\n\t  try{\n\t\t  if(str.length()>len){\n\t\t\t  return str;\n\t\t  }else{\n\t\t\t  for(int i=0;i<(len-str.length());i++){\n\t\t\t\t  sBuf.append(\" \");\n\t\t\t  }\n\t\t\t  sBuf.append(str);\n\t\t\t  return sBuf.toString();\n\t\t  }\n\t  }catch(Exception e){\n\t\t  return str;\n\t  }\n  }\n  \n  //截取字符,如果超过长度,截取并加省略号 by tony 20101108\n  public String suspensionStr(String str,int len){\n\t  try{\n\t\t  str = str.substring(0,len) + \"...\";\n\t  }catch(Exception e){\n\t\t  return str;\n\t  }\n\t  return str;\n  }\n\n  //url get方式传递参数 by tony 20110328\n  public static String joinUrlParameter(List<String> sList){\n\t  StringBuffer sBuf = new StringBuffer();\n\t  for(Iterator it = sList.iterator(); it.hasNext();){\n\t\t  sBuf.append(\"&\").append(it.next()).append(\"=\").append(it.next());\n\t  }\n\t  return sBuf.substring(1, sBuf.length());\t//去掉第一个&符号\n  }\n  \n  /** SplitStr 功能：返回分割后的数组\n   * <br>输入参数：String str 设置返回系统时间样式\n   * <br>输入参数：String SplitFlag 设置分割字符\n   * <br>输出参数：string[] 返回分割后的数组\n   * <br>作者：陈子枢\n   * <br>时间：2003-9-7\n   * <br>用法：\n   */\n/*\n      String s[] = SplitStr(\"asd asd we sd\",\" \");\n      for (int i=0;i<s.length;i++){\n        System.out.println(s[i]);\n      }\n*/\n  static public String[] splitStr(String str,String SplitFlag){\n    int i =0;\n    try{\n      StringTokenizer st = new StringTokenizer(str, SplitFlag);\n      String tokens[] = new String[st.countTokens()];\n      //System.out.println(st.countTokens());\n      while (st.hasMoreElements()) {\n        tokens[i] = st.nextToken();\n        //System.out.println(tokens[i]);\n        i++;\n      }\n      return tokens;\n    }catch(Exception e){\n      return null;\n    }\n  }\n  \n  //类似google那样实现多个关键字的查询，关键字之间用空格或逗号隔开 by tony 20110523\n  //支持的分隔符 英文逗号,中文逗号,空格\n  public String[] splitFindStr(String str){\n\tif(str==null){\n\t\treturn null;\n\t}\n\tString[] aStr = null;\n\tstr = str.replaceAll(\",\", \" \");\t\t//英文逗号\n\tstr = str.replaceAll(\"，\", \" \");\t\t//中文逗号\n\taStr = this.splitStr(str, \" \");\t\t//空格  \n\treturn aStr;\n }\n \n  /* 阶梯函数,例如，a,b,c 返回 a;a,b;a,b,c by tony 20110330 */\n  static public String[] splitStair(String str,String SplitFlag){\n\t  try{\n\t\t  String[] _temp = splitStr(str, SplitFlag);\n\t\t  for(int i=1;i<_temp.length;i++){\n\t\t\t  _temp[i] = _temp[i-1]+SplitFlag+_temp[i];\n\t\t  }\n\t\t  return _temp;\n\t  }catch(Exception e){\n\t\t  return null;\n\t  }\n  }\n\n  /** SplitStr 功能：将数组合并为一个字符串\n   * <br>输入参数：String aStr 要合并数组\n   * <br>输入参数：String SplitFlag 设置分割字符\n   * <br>输出参数：String 要合并数组\n   * <br>作者：陈子枢\n   * <br>时间：2004-1-9\n   * <br>用法：\n   */\n\n\n  static public String joinStr(String[] aStr,String SplitFlag){\n    StringBuffer sBuffer = new StringBuffer();\n    if (aStr != null){\n      for (int i=0;i<aStr.length;i++){\n        sBuffer.append(aStr[i]).append(SplitFlag);\n      }\n      sBuffer.delete(sBuffer.length() - 1, sBuffer.length()); //去掉最后的分隔符 SplitFlag\n    }else{\n      sBuffer = sBuffer.append(\"\");\n    }\n    return sBuffer.toString();\n  }\n\n  /* 链接,但中间无链接符号 add by tony 20100322 */\n  static public String joinStr(String[] aStr){\n    StringBuffer sBuffer = new StringBuffer();\n    if (aStr != null){\n      for (int i=0;i<aStr.length;i++){\n        sBuffer.append(aStr[i]);\n      }\n    }else{\n      sBuffer = sBuffer.append(\"\");\n    }\n    return sBuffer.toString();\n  }\n  \n  /** JoinStr \n   * <br>功能：将数组合并为一个字符串\n   * <br>输入参数：String sPrefix 数组元素加的前缀\n   * <br>输入参数：String sSuffix 数组元素加的后缀\n   * <br>输入参数：String SplitFlag 设置分割字符\n   * <br>输出参数：String 合并后的字符串\n   * <br>作者：陈子枢\n   * <br>时间：2005-3-17\n   * <br>用法：\n   */\n\n\n  static public String joinStr(String[] aStr,String sPrefix,String sSuffix,String SplitFlag){\n    StringBuffer sBuffer = new StringBuffer();\n    if (aStr != null){\n      for (int i=0;i<aStr.length;i++){\n        sBuffer.append(sPrefix).append(aStr[i]).append(sSuffix).append(SplitFlag);\n      }\n      sBuffer.delete(sBuffer.length() - SplitFlag.length(), sBuffer.length()); //去掉最后的分隔符 SplitFlag\n    }else{\n      sBuffer = sBuffer.append(\"\");\n    }\n    return sBuffer.toString();\n  }\n  \n  /* 返回用于in查询的串  'x','y' */\n  static public String joinInStr(String[] aStr){\n\t  StringBuffer sBuffer = new StringBuffer();\n\t  if (aStr != null){\n\t\t  for (int i=0;i<aStr.length;i++){\n\t\t\t  sBuffer.append(\"'\").append(aStr[i]).append(\"'\").append(\",\");\n\t\t  }\n\t\t  sBuffer.delete(sBuffer.length() - 1, sBuffer.length());\n\t  }else{\n\t\t  sBuffer = sBuffer.append(\"\");\n\t  }\n\t  return sBuffer.toString();\n  }\n\n  /* 链接,但中间无链接符号 add by tony 20100322 */\n  static public String joinStr(String[] aStr,String sPrefix,String sSuffix){\n    StringBuffer sBuffer = new StringBuffer();\n    if (aStr != null){\n      for (int i=0;i<aStr.length;i++){\n        sBuffer.append(sPrefix).append(aStr[i]).append(sSuffix);\n      }\n    }else{\n      sBuffer = sBuffer.append(\"\");\n    }\n    return sBuffer.toString();\n  }\n\n  /* 链接len(s)个symbol符号 add by tony 20100407 */\n  static public String joinStr(String s, String symbol){\n\t  StringBuffer sBuf = new StringBuffer();\n\t  for (int i=0;i<s.length();i++){\n\t\t  sBuf.append(symbol);\n      }\n\t  return sBuf.toString();\n  }\n  \n  static public String joinStr(int len, String symbol){\n\t  StringBuffer sBuf = new StringBuffer();\n\t  for (int i=0;i<len;i++){\n\t\t  sBuf.append(symbol);\n      }\n\t  return sBuf.toString();\n  }  \n  \n  /** SysTime 功能：返回系统时间\n * <br>输入参数：int style 设置返回系统时间样式\n * <br>输出参数：string 返回系统时间样式\n * <br>作者：陈子枢\n * <br>时间：2003-6-24\n * <br>存在问题：中文乱码，但JSP中显示正常。\n */\n  static public String SysTime(String strStyle){\n    String s = \"\";\n    if (strStyle.compareTo(\"\")==0){\n    \tstrStyle = \"yyyy-MM-dd HH:mm:ss\";\t//default\n    }\n    java.util.Date date=new java.util.Date();\n    SimpleDateFormat dformat=new SimpleDateFormat(strStyle);\n    s = dformat.format(date);\n    return s;\n  }\n\n  static public String sysTime(){\n    String s = \"\";\n    java.util.Date date=new java.util.Date();\n    SimpleDateFormat dformat=new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n    s = dformat.format(date);\n    return s;\n  }\n\n  static public String sysDate(){\n    String s = \"\";\n    java.util.Date date=new java.util.Date();\n    SimpleDateFormat dformat=new SimpleDateFormat(\"yyyy-MM-dd\");\n    s = dformat.format(date);\n    return s;\n  }\n\n\n  /* add by tony 20091113 */\n  public static boolean isNull(Object obj){\n    try{\n      if(obj==null){\n    \t  return true;\n      }\n      return false;\n    }catch(Exception e){\n      return false;\n    }\n  }\n  \n  public static boolean isNotNull(Object obj){\n    try{\n      if(obj==null){\n    \t  return false;\n      }\n      return true;\n    }catch(Exception e){\n      return true;\n    }\n  }  \n\n  public static boolean isEmpty(String str){\n    try{\n      if(str==null || str.equals(\"null\") || str.equals(\"\")){\n    \t  return true;\n      }\n      return false;\n    }catch(Exception e){\n      return false;\n    }\n  }\n  \n  public static boolean isEmpty(String strs[]){\n\t  try{\n\t\t  if(strs==null || strs.length<=0){\n\t\t\t  return true;\n\t\t  }\n\t\t  return false;\n\t  }catch(Exception e){\n\t\t  return false;\n\t  }\n  }\n\n  public static boolean isNotEmpty(String str){\n    try{\n      if(str==null || str.equals(\"null\") || str.equals(\"\")){\n    \t  return false;\n      }\n      return true;\n    }catch(Exception e){\n      return true;\n    }\n  }\n\n  public static boolean isNotEmpty(Object obj){\n    try{\n      if(obj==null || obj.toString().equals(\"null\") || obj.toString().equals(\"\")){\n    \t  return false;\n      }\n      return true;\n    }catch(Exception e){\n      return true;\n    }\n  }\n  \n  public static boolean isNotEmpty(List obj){\n\t  try{\n\t\t  if(obj==null || obj.size()<=0){\n\t\t\t  return false;\n\t\t  }\n\t\t  return true;\n\t  }catch(Exception e){\n\t\t  return true;\n\t  }\n  }\n  \n  /** 功能：用于转换为null的字段。\n   * <br>入参：String strvalue 设置要转换的字符串\n   * <br>出参：不为“null”的返回原串；为“null”返回\"\"。\n   * <br>作者：陈子枢\n   * <br>时间：2003-9-16\n   * <p>用法：optionFuns.convertNull(String.valueOf(oi.next()))</p>\n   */\n  public static String convertNull(String strvalue)\n  {\n    try{\n      if(strvalue.equals(\"null\") || strvalue.length()==0){\n        return \"\";\n      }else{\n        return strvalue.trim();\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n\n  public static String[] convertNull(String[] aContent)\n  {\n    try{\n      for(int i=0;i<aContent.length;i++){\n        if(aContent[i].toLowerCase().compareTo(\"null\")==0){\n          aContent[i] = \"\";\n        }\n      }\n      return aContent;\n    }catch(Exception e){\n      return null;\n    }\n  }\n    \n  public static String convertNull(Object o)\n  {\n    try{\n      String strvalue = String.valueOf(o);\n      if(strvalue.equals(null) || strvalue.equals(\"null\") || strvalue.length()==0){\n        return \"\";\n      }else{\n        return strvalue.trim();\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n  \n  //将为null的数据转为0，用在数值的值从数据库中读出的情况\n  public static int ConvertZero(Object o)\n  {\n    try{\n      String s = convertNull(o);\n      if(s==\"\"){\n        return 0;\n      }else{\n        return Integer.parseInt(s);\n      }\n    }catch(Exception e){\n      return 0;\n    }\n  }\n  \n  //将为null的数据转为0，用在数值的值从数据库中读出的情况\n  public static int cvtPecrent(Object o)\n  {\n    try{\n      String s = convertNull(o);\n      if(s==\"\"){\n        return 0;\n      }else{\n        return Integer.parseInt(s);\n      }\n    }catch(Exception e){\n      return 0;\n    }\n  }  \n  \n  //if 0 then return \"\";\n  public static String FormatZero(Object o)\n  {\n    try{\n      String s = convertNull(o);\n      if(s.compareTo(\"\")==0){\n        return \"\";\n      }else{\n        return String.valueOf(s);\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n  \n  //if 0 then return \"\";\n  public static String FormatZero(String s)\n  {\n    try{\n      if(s.compareTo(\"0\")==0){\n        return \"\";\n      }else{\n        return s;\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n  \n  //patter=\"####.000\"\n  public static String FormatNumber(Object o,String patter)\n  {\n  \tdouble d = 0;\n    try {\n      d = Double.parseDouble(String.valueOf(o));\n      DecimalFormat df = new DecimalFormat(patter);\n      return df.format(d);\n    }\n    catch (Exception e) {\n    \tSystem.out.println(e.getMessage());\n       \treturn \"\";\n    }\n  }\n\n  \n  //patter=\"####.00\"\n  public static String FormatNumber(String s)\n  {\n  \tdouble d = 0;\n    try {\n      d = Double.parseDouble(s);\n      DecimalFormat df = new DecimalFormat(\",###.00\");\n      return df.format(d);\n    }\n    catch (Exception e) {\n    \tSystem.out.println(e.getMessage());\n    \treturn \"\";\n    }\n  }\n  \n  //只用在表格的输出\n  public static String ConvertTD(String strvalue)\n  {\n    try{\n      strvalue = strvalue.trim();\n      if(strvalue.equals(\"null\") || strvalue.length()==0){\n        return \"&nbsp;\";\n      }else{\n        return strvalue;\n      }\n    }catch(Exception e){\n      return \"&nbsp;\";\n    }\n  }\n\n  public static String ConvertSpaceTD(Object o)\n  {\n    try{\n      String strvalue = String.valueOf(o);\n      strvalue = strvalue.trim();\n      if(strvalue.equals(\"null\") || strvalue.length()==0){\n        return \"&nbsp;\";\n      }else{\n        return \" \" + strvalue.trim();\n      }\n    }catch(Exception e){\n      return \"&nbsp;\";\n    }\n  }\n  \n  /*\n    只转中文，不处理null\n    读取记录时去掉数据两边的空格；而录入数据时，维持用户的输入，哪怕用户多输入了空格\n    原因在于有时可能用户有意输入空格。例如：备注字段原来有内容，现在用户想清空。\n  */\n  public static String ConvertCH(String strvalue)\n  {\n    System.out.println(\"ConvertCH:\"+strvalue);\n    try{\n      if(strvalue==null){\n        return \"null\";\n      }else if(strvalue.length()==0){\n        return \"\";      \n      }else{\n        strvalue = new String(strvalue.getBytes(\"ISO8859_1\"), \"GB2312\");\n        return strvalue;\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n  \n  public static String ConvertCStr(String strvalue)\n  {\n    try{\n      strvalue = convertNull(strvalue);\n      if(strvalue.equals(\"\")){\n        return \"\";\n      }else{\n        strvalue = new String(strvalue.getBytes(\"ISO8859_1\"), \"GB2312\");\n        return strvalue;\n      }\n    }catch(Exception e){\n      return \"\";\n    }\n  }\n\n  public static String ConvertCStr(Object o)\n  {\n    String strvalue = \"\";\n    try{\n      strvalue = String.valueOf(o);\n      strvalue = convertNull(strvalue);\n      if(strvalue.equals(\"\")){\n        return \"\";\n      }else{\n        strvalue = new String(strvalue.getBytes(\"ISO8859_1\"), \"GB2312\");\n        return strvalue;\n      }\n    }catch(Exception e){\n      System.out.println(\"ConvertCStr:\" + e.toString());\n      return \"\";\n    }\n  }\n  \n  /**\n   *UrlEncoder 进行URL编码\n   */\n    public String UrlEncoder(String s)\n    {\n        String s1 = \"\";\n        if(s == null)\n            return \"\";\n        try\n        {\n            s1 = URLEncoder.encode(s);\n        }\n        catch(Exception e)\n        {\n            System.out.println(\"URL Encoder :\" + e.toString());\n            s1 = \"\";\n        }\n        return s1;\n    }\n\n  /**\n   *URLDecoder 进行URL解码\n   */\n    public String UrlDecoder(String s)\n    {\n        String s1 = \"\";\n        if(s == null)\n            return \"\";\n        try\n        {\n            s1 = URLDecoder.decode(s);\n        }\n        catch(Exception e)\n        {\n            System.out.println(\"URL Encoder :\" + e.toString());\n            s1 = \"\";\n        }\n        return s1;\n    }\n    \n  /**\n   * 将字符串转化成首字母大写，其余字母小写的格式\n   * @param source 传入字符串\n   * @return String\n   */\n  public static String format_Aaa(String source) {\n\n    if (source==null) return null;\n    if (source.equals(\"\")) return \"\";\n\n    String a;\n    a = source.substring(0, 1);\n    a = a.toUpperCase();\n    return a + source.substring(1);\n\n  }\n  \n  /**\n   * 将字符串转换成Long型\n   * @param param 传入字符串\n   * @return 长整形\n   */\n  public static long parseLong(String param) {\n    long l=0;\n    try {\n      l = Long.parseLong(param);\n    }\n    catch (Exception e) {\n    }\n\n    return l;\n  }\n\n  /**\n   * 将字符串转换成Float型\n   * @param param 传入字符串\n   * @return 浮点型\n   */\n  public static float parseFloat(String param) {\n    float l=0;\n    try {\n      l = Float.parseFloat(param);\n    }\n    catch (Exception e) {\n    }\n\n    return l;\n  }\n\n  /**\n   * 将字符串转换成Integer型\n   * @param param 传入字符串\n   * @return 整形\n   */\n  public static int parseInt(String param) {\n    int l=0;\n    try {\n      l = Integer.parseInt(param);\n    }\n    catch (Exception e) {\n    }\n\n    return l;\n  }\n\n\n\tpublic static Date parseDate(String currDate, String format) {\n\t    SimpleDateFormat dtFormatdB = null;\n\t    try {\n\t        dtFormatdB = new SimpleDateFormat(format);\n\t        return dtFormatdB.parse(currDate);\n\t    }catch (Exception e){\n\t        dtFormatdB = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t        try {\n\t            return dtFormatdB.parse(currDate);\n\t        }catch (Exception ex){}\n\t    }\n\t    return null;\n\t}\n\n\tpublic static Date parseDate(String currDate) {\n\t    SimpleDateFormat dtFormatdB = null;\n\t    dtFormatdB = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t    try {\n\t        return dtFormatdB.parse(currDate);\n\t    }catch (Exception e){\n\t        try {\n\t            return dtFormatdB.parse(currDate);\n\t        }catch (Exception ex){}\n\t    }\n\t    return null;\n\t}\n\t\n\tpublic static Date parseTime(String currDate, String format) {\n\t    SimpleDateFormat dtFormatdB = null;\n\t    try {\n\t        dtFormatdB = new SimpleDateFormat(format);\n\t        return dtFormatdB.parse(currDate);\n\t    }catch (Exception e){\n\t        dtFormatdB = new SimpleDateFormat(\"HH:mm:ss\");\n\t        try {\n\t            return dtFormatdB.parse(currDate);\n\t        }catch (Exception ex){}\n\t    }\n\t    return null;\n\t}\n\n\tpublic static Date parseDateTime(String currDate, String format) {\n\t    SimpleDateFormat dtFormatdB = null;\n\t    try {\n\t        dtFormatdB = new SimpleDateFormat(format);\n\t        return dtFormatdB.parse(currDate);\n\t    }catch (Exception e){\n\t        dtFormatdB = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n\t        try {\n\t            return dtFormatdB.parse(currDate);\n\t        }catch (Exception ex){}\n\t    }\n\t    return null;\n\t}\n\t\n  /**\n   * 将字符串转换成Double型\n   * @param param 传入字符串\n   * @return double型\n   */\n  public static double parseDouble(String param) {\n    double l=0;\n    try {\n      l = Double.parseDouble(param);\n    }\n    catch (Exception e) {\n    }\n\n    return l;\n  }\n\n  /**\n   * s是否存在ArrayList中，存在返回数组下标，不存在返回-1\n   */\n  public static int existElements(String s,ArrayList aList) {\n    try{\n      for (int i = 0; i < aList.size(); i ++) {\n        if (s.equals(aList.get(i))){\n          return i;\n        }\n      }\n    }catch(Exception e){   }\n    return -1;\n  }\n\n  /**\n   * s是否存在String数组中，存在返回数组下标，不存在返回-1\n   */\n  public static int existElements(String s,String[] a) {\n    try{\n      for (int i = 0; i < a.length; i ++) {\n        if (s.compareTo((a[i].trim()))==0){  \n          return i;\n        }\n      }\n    }catch(Exception e){   }\n    return -1;\n  }\n  \n  /**\n   * 判断对象o是否存在于set对象集合中 create by tony 20090611\n   */  \n  public static boolean existElements(Object o, Set set) {\n\t  boolean isExists = false;\n\t  Iterator it = set.iterator();\n\t  while(it.hasNext())\n\t  {\n\t       Object obj = it.next();\n\t       if(o.equals(obj))\n\t       {\n\t    \t   isExists=true;\n\t    \t   break;\n\t       }\n\t  }\n\t  return isExists;\n  }\n\n  /**\n   * s是否存在ArrayList中，存在返回数组下标，不存在返回-1\n   */\n  public static int IsIndexOfElements(String s,ArrayList aList) {\n    try{\n      String s1 = \"\";\n      for (int i = 0; i < aList.size(); i ++) {\n        s1 = String.valueOf(aList.get(i));\n        if (s1.indexOf(s)!=-1){\n          return i;\n        }\n      }\n    }catch(Exception e){   }\n    return -1;\n  }\n  \n  /**\n   * 将ArrayList转换为一维String数组，并把其中的null换成空字符串\n   * @param aList 传入的Arraylist\n   */\n  public String[] ArrayListToString(ArrayList aList) {\n    String[] s = new String[aList.size()];\n    for (int i = 0; i < aList.size(); i ++) {\n      s[i] = this.convertNull(aList.get(i));\n    }\n    return s;\n  }\n  \n  \n  /**\n   * 将数组中的null换成空字符串\n   * @param al 传入的Arraylist，同时也是输出结果\n   */\n  public static void formatArrayList(ArrayList al) {\n\n    for (int i = 0; i < al.size(); i ++) {\n      if (al.get(i) == null)\n        al.set(i, \"\");\n    }\n\n  }\n\n    /** ComboList 功能：选定在下拉列表框中与查找到数据,相符的那一项内容\n     * <br>输入参数：String CurrentValue 查找出的数据库中的数据\n     *               String[] content 需要输出的所有下拉列表框的内容\n     * <br>输出参数：返回下拉列表\n      * <br>注意事项：values为0开始,而且中间不能断开\n     */\n    public String ComboList(String CurrentValue, String[] content) {\n      int i = 0;\n      StringBuffer sBuf = new StringBuffer();\n      String selected = \" selected\";\n      try{\n        sBuf.append(\"<option value='' selected>--请选择--</option>\");\n        for (i = 0; i < content.length; i++) {\n          sBuf.append(\"\\n<option value='\").append(i).append(\"'\");\n          if (CurrentValue.compareTo(String.valueOf(i)) == 0) {\n            sBuf.append(selected);\n          }\n          sBuf.append(\">\").append(content[i]).append(\"</option>\");\n        }\n        return sBuf.toString();\n      }catch(Exception e){\n        return \"\";\n      }\n    }\n\n    public String ComboListMust(String CurrentValue, String[] content) {\n      int i = 0;\n      StringBuffer sBuf = new StringBuffer();\n      String selected = \" selected\";\n      try{\n        for (i = 0; i < content.length; i++) {\n          sBuf.append(\"\\n<option value='\").append(i).append(\"'\");\n          if (CurrentValue.compareTo(String.valueOf(i)) == 0) {\n            sBuf.append(selected);\n          }\n          sBuf.append(\">\").append(content[i]).append(\"</option>\");\n        }\n        return sBuf.toString();\n      }catch(Exception e){\n        return \"\";\n      }\n    }\n    \n    /** ComboList 功能：选定在下拉列表框中与查找到数据,相符的那一项内容\n     * <br>输入参数：String CurrentValue 查找出的数据库中的数据\n     *               String[] values  需要输出的所有下拉列表框的内容所对应的值\n     *               String[] content 需要输出的所有下拉列表框的内容\n     * <br>输出参数：返回下拉列表\n     * <br>修改：陈子枢\n     * <br>修改时间：2003-9-4\n     * <br>注意事项：values和content数组个数必须相同.适合从数据库中取值\n\t<%\n\t  String[] aContextOPERATE_TYPE = {\"定检\",\"轮换\",\"抽检\"};\n\t  out.print(optionFuns.ComboList(\"\",aContextOPERATE_TYPE,aContextOPERATE_TYPE));\n\t%>\n     */\n    public String ComboList(String CurrentValue,String[] values, String[] content) {\n      int i = 0;\n      StringBuffer sBuf = new StringBuffer();\n      String selected = \" selected\";\n\n      try{\n    \tif(CurrentValue==null){\n    \t\tCurrentValue = \"\";\n    \t}\n        sBuf.append(\"<option value='' selected>--请选择--</option>\");\n        for (i = 0; i < content.length; i++) {\n          sBuf.append(\"<option value='\").append(values[i]).append(\"'\");\n          if (CurrentValue.compareTo(values[i]) == 0) {\n            sBuf.append(selected);\n          }\n          sBuf.append(\">\").append(content[i]).append(\"</option>\");\n        }\n        return sBuf.toString();\n      }catch(Exception e){\n        return \"\";\n      }\n    }\n\n    public String ComboListMust(String CurrentValue,String[] values, String[] content) {\n      int i = 0;\n      StringBuffer sBuf = new StringBuffer();\n      String selected = \" selected\";\n\n      try{\n        for (i = 0; i < content.length; i++) {\n          sBuf.append(\"<option value='\").append(values[i]).append(\"'\");\n          if (CurrentValue.compareTo(values[i]) == 0) {\n            sBuf.append(selected);\n          }\n          sBuf.append(\">\").append(content[i]).append(\"</option>\");\n        }\n        return sBuf.toString();\n      }catch(Exception e){\n        return \"\";\n      }\n    } \n    \n  /** StrToTimestamp 功能：将字符串转换为Timestamp 。\n   * <br>输入参数：String timestampStr 设置要转换的字符串\n   *              String pattern 要转换的format\n   * <br>输出参数：如果格式正确返回格式后的字符串。\n   *              不正确返回系统日期。\n   * <br>作者：陈子枢\n   * <br>时间：2003-8-26\n   */\n  public static Timestamp StrToTimestamp(String timestampStr,String pattern) throws ParseException {\n    java.util.Date date = null;\n    SimpleDateFormat format = new SimpleDateFormat(pattern);\n    try {\n      date = format.parse(timestampStr);\n    } catch (ParseException ex) {\n      throw ex;\n    }\n    return date == null ? null : new Timestamp(date.getTime());\n  }\n\n  //ex:utilFuns.StrToDateTimeFormat(\"2005-12-01 00:00:00.0,\"yyyy-MM-dd\")\n  public static String StrToDateTimeFormat(String timestampStr,String pattern) throws ParseException {\n    String s =\"\";\n    try{\n      s = String.valueOf(StrToTimestamp(timestampStr, pattern));\n      s = s.substring(0,pattern.length());\n    }catch(Exception e){ }\n    return s;\n  }\n\n  //ex:utilFuns.StrToDateTimeFormat(\"2005-12-01 00:00:00.0,\"yyyy-MM-dd\")\n  public static String dateTimeFormat(Date date,String pattern) throws ParseException {\n    String s =\"\";\n    try{\n        SimpleDateFormat dformat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n        s = dformat.format(date);\n        s = String.valueOf(StrToTimestamp(s, pattern));\n        s = s.substring(0,pattern.length());\n    }catch(Exception e){ }\n    return s;\n  }\n  public static String dateTimeFormat(Date date) throws ParseException {\n\t  String s =\"\";\n\t  try{\n\t\t  SimpleDateFormat dformat = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t  s = dformat.format(date);\n\t\t  s = String.valueOf(StrToTimestamp(s, \"yyyy-MM-dd\"));\n\t\t  s = s.substring(0,\"yyyy-MM-dd\".length());\n\t  }catch(Exception e){ }\n\t  return s;\n  }\n  \n  //add by tony 20100228 转换中文 格式必须为：\"yyyy-MM-dd HH:mm:ss\"的一部分\n  public static String formatDateTimeCN(String date) throws ParseException {\n\t  String s =\"\";\n\t  try{\n\t\t  if(UtilFuns.isEmpty(date)){\n\t\t\t  return \"\";\n\t\t  }\n\t\t  if(date.indexOf(\".\")>-1){\n\t\t\t  date = date.substring(0, date.indexOf(\".\"));\n\t\t  }\n\t\t  if(date.length()==4){\t\t\t//yyyy\n\t\t\t  s = date+\"年\";\n\t\t  }else if(date.length()==7){\t//yyyy-MM\n\t\t\t  s = date.replaceAll(\"-0\", \"-\").replaceFirst(\"-\", \"年\")+\"月\";\n\t\t  }else if(date.length()==10){\t//yyyy-MM-dd\n\t\t\t  s = date.replaceAll(\"-0\", \"-\").replaceFirst(\"-\", \"年\").replaceFirst(\"-\", \"月\")+\"日\";\n\t\t  }else if(date.length()==2){\t//HH\n\t\t\t  s = date+\"时\";\n\t\t  }else if(date.length()==5){\t//HH:mm\n\t\t\t  s = date.replaceAll(\":0\", \":\").replaceFirst(\":\", \"时\")+\"分\";\n\t\t  }else if(date.length()==8){\t//HH:mm:ss\n\t\t\t  s = date.replaceAll(\":0\", \":\").replaceFirst(\":\", \"时\").replaceFirst(\":\", \"分\")+\"秒\";\n\t\t  }else if(date.length()==13){\t//yyyy-MM-dd HH\n\t\t\t  s = date.replaceAll(\"-0\", \"-\").replaceFirst(\"-\", \"年\").replaceFirst(\"-\", \"月\").replaceAll(\" 0\", \" \").replaceFirst(\" \", \"日\")+\"时\";\n\t\t  }else if(date.length()==16){\t//yyyy-MM-dd HH:mm\n\t\t\t  s = date.replaceAll(\"-0\", \"-\").replaceFirst(\"-\", \"年\").replaceFirst(\"-\", \"月\").replaceAll(\" 0\", \" \").replaceFirst(\" \", \"日\").replaceAll(\":0\", \":\").replaceFirst(\":\", \"时\")+\"分\";\n\t\t  }else if(date.length()==19){\t//yyyy-MM-dd HH:mm:ss\n\t\t\t  s = date.replaceAll(\"-0\", \"-\").replaceFirst(\"-\", \"年\").replaceFirst(\"-\", \"月\").replaceAll(\" 0\", \" \").replaceFirst(\" \", \"日\").replaceAll(\":0\", \":\").replaceFirst(\":\", \"时\").replaceFirst(\":\", \"分\")+\"秒\";\n\t\t  }\n\t\t  s = s.replaceAll(\"0[时分秒]\", \"\");\t//正则 0时0分0秒的都替换为空\n\t  }catch(Exception e){ }\n\t  \n\t  return s;\n  }\n  \n  //add by tony 2011-07-26 返回英文格式日期 oct.10.2011\n  public static String formatDateEN(String date) throws ParseException {\n\t  String s =\"\";\n\t  int whichMonth = 1;\n\t  try{\n\t\t  if(UtilFuns.isEmpty(date)){\n\t\t\t  return \"\";\n\t\t  }\n\t\t  String[] aString = date.replaceAll(\"-0\", \"-\").split(\"-\");\n\t\t  whichMonth = Integer.parseInt(aString[1]);\n\t\t  if(whichMonth==1){\n\t\t\t  s = \"Jan\";\n\t\t  }else if(whichMonth==2){\n\t\t\t  s = \"Feb\";\n\t\t  }else if(whichMonth==3){\n\t\t\t  s = \"Mar\";\n\t\t  }else if(whichMonth==4){\n\t\t\t  s = \"Apr\";\n\t\t  }else if(whichMonth==5){\n\t\t\t  s = \"May\";\n\t\t  }else if(whichMonth==6){\n\t\t\t  s = \"Jun\";\n\t\t  }else if(whichMonth==7){\n\t\t\t  s = \"Jul\";\n\t\t  }else if(whichMonth==8){\n\t\t\t  s = \"Aug\";\n\t\t  }else if(whichMonth==9){\n\t\t\t  s = \"Sept\";\n\t\t  }else if(whichMonth==10){\n\t\t\t  s = \"Oct\";\n\t\t  }else if(whichMonth==11){\n\t\t\t  s = \"Nov\";\n\t\t  }else if(whichMonth==12){\n\t\t\t  s = \"Dec\";\n\t\t  }\n\t\t  s = s+\".\"+aString[2]+\",\"+aString[0];\n\t\t  \n\t  }catch(Exception e){ }\n\t  \n\t  return s;\n  }\n\n  //返回年月格式 2010-7\n  public String formatShortMonth(String strDate){\n\t  return strDate.substring(0,7).replaceAll(\"-0\", \"-\");\n  }\n  \n  //返回年月格式 2010-07\n  public String formatMonth(String strDate){\n\t  return strDate.substring(0,7);\n  }\n  \n  \n  \n  //删除最后1个字符\n  public static String delLastChar(String s){\n    try{\n      if(s.length()>0){\n        s = s.substring(0,s.length()-1);  \n      }      \n    }catch(Exception e){\n      return \"\";\n    }\n    return s;\n  }\n  \n  //删除最后len个字符\n  public static String delLastChars(String s,int len){\n    try{\n      if(s.length()>0){\n        s = s.substring(0,s.length()-len);  \n      }      \n    }catch(Exception e){\n      return \"\";\n    }\n    return s;\n  }\n  \n  //替换网页用字符-配合FCKEditor使用 .replaceAll(\"'\",\"&apos;\") //for viewpage\n  public String htmlReplaceAll(String s){\n\t  try{\n\t\t  StringBuffer sBuf = new StringBuffer();\n\t\t  //.replaceAll(\"\\\\\\\\\",\"\\\\\\\\\\\\\\\\\").replaceAll(\"&\",\"&amp;\")\n\t\t  sBuf.append(s.replaceAll(\" \",\"&nbsp;\").replaceAll(\"<\",\"&lt;\").replaceAll(\">\",\"&gt;\").replaceAll(\"\\\"\",\"&quot;\").replaceAll(\"\\n\",\"<br\\\\>\"));\n\t\t  return sBuf.toString();\n\t  }catch(Exception e){\n\t\t  return \"\";\n\t  }\n  }\n  \n  //for viewpage by jstl/make html\n  public static String htmlNewline(String s){\n\t  try{\n\t\t  //如不替换空格,html解释时会自动把多个空格显示为一个空格,这样当我们通过空格来布局时就出现textarea中和html页面展现不一致的情况 tony\n\t\t  //s.replaceAll(\" \",\"&nbsp;\") 不能进行空格的替换，否则页面内容中如果有<img src=\"xxx.jpg\" \\>等标签，内容就会显示乱；<img&nbsp;src=\"xxx.jpg\"nbsp;\\>\n\t\t  return s.replaceAll(\" \",\"&nbsp;\").replaceAll(\"\\n\",\"<br\\\\>\");  \n\t  }catch(Exception e){\n\t\t  return \"\";\n\t  }\n  }\n  \n\n  /** getPassString 功能：用于转换为后几位的为*。\n   * <br>输入参数：String strvalue 设置要转换的字符串\n   *              int Flag 位数。\n   * <br>输出参数：。\n   * <br>作者：范波\n   * <br>时间：2006-8-7\n   * <br>存在问题：\n   * <br>用法：\n   *          <%=utilFuns.ConvertString(\"abcdef\",3)%>\n   */\n  public static String getPassString( String strvalue, int Flag ) {\n    try {\n      if ( strvalue.equals(\"null\") || strvalue.compareTo(\"\")==0){\n        return \"\";\n      } else {\n        int intStrvalue = strvalue.length();\n        if ( intStrvalue > Flag ) {\n          strvalue = strvalue.substring( 0, intStrvalue - Flag );\n\n        }\n        for ( int i = 0; i < Flag; i++ ) {\n          strvalue = strvalue + \"*\";\n        }\n\n        //System.out.print( \"strvalue:\" + strvalue );\n        return strvalue;\n      }\n    }\n    catch (Exception e) {\n      return strvalue;\n    }\n  }\n  \n /** getPassString 功能：用于转换为后几位的为*。\n * <br>输入参数：String strvalue 设置要转换的字符串\n *              int Flag 起位数。\n *              int sFlag 末位数。 \n * <br>输出参数：。\n * <br>作者：范波\n * <br>时间：2006-8-7\n * <br>存在问题：\n * <br>用法：\n *          <%=optionFuns.getPassString(String.valueOf(oi.next()),3)%>\n */\npublic static String getPassString( String strvalue, int Flag, int sFlag ,int iPassLen ) {\n  try {\n    \n    if ( strvalue.equals( \"null\" ) ) {\n      return \"\";\n    } else {\n      String strvalue1=\"\";\n      String strvalue2=\"\";\n      int intStrvalue = strvalue.length();\n      if(sFlag>=Flag){\n        if ( intStrvalue > Flag ) {\n          strvalue1 = strvalue.substring( 0,  Flag );\n          strvalue2 = strvalue.substring(  sFlag, intStrvalue );\n        } else {\n          strvalue1 = \"\";\n          strvalue2 = \"\";\n        }\n        for ( int i = 0; i < iPassLen; i++ ) {\n          strvalue1 = strvalue1 + \"*\";\n        }\n        strvalue=strvalue1+strvalue2;\n      }\n      //System.out.print( \"strvalue:\" + strvalue );\n      return strvalue;\n    }\n  }\n  catch (Exception e) {\n    return strvalue;\n  }\n  } \n  \n  \n  /* \n\tby czs 2006-8-17\n\tOPTION:\n\t\t取得字符串iStartPos位置到iEndPos位置，将中间这部分转换iPatternLen个sPattern\n\tEXSAMPLE:\n\t\tgetPatternString(\"CHEN ZISHU\",5,7,\"*\",3)\n\t\tRESULT: CHEN ***SHU\n\n\t\tgetPatternString(\"CHEN ZISHU\",10,0,\".\",3)\n\t\tRESULT: CHEN******\n\n  */\n  public static String getPatternString( String s, int iStartPos, int iEndPos, String sPattern, int iPatternLen ) {\n    try {\n\t  if (iEndPos==0) {\n\t\tiEndPos = s.length();\n\t  }\n\t  \n\t  String sStartStr = \"\";\n\t  String sCenterStr = \"\";\n\t  String sEndStr = \"\";\n\t  \n      if ( s.equals(\"null\")){\n        return \"\";\n      } else {\n        int ints = s.length();\n        if ( ints > iStartPos ) {\n          sStartStr = s.substring( 0, iStartPos );\n        }else{\n          return s;\n        }\n\t\tif ( ints > iEndPos) {\n          sEndStr = s.substring( iEndPos, ints );\n\t\t}\n        for ( int i = 0; i < iPatternLen; i++ ) {\n          sCenterStr = sCenterStr + sPattern;\n        }\n        return sStartStr + sCenterStr + sEndStr;\n      }\n    }\n    catch (Exception e) {\n      System.out.println(e);\n      return s;\n    }\n  }\n\n  public static String getPatternString( String s, int iStartPos, String sPattern, int iPatternLen ) {\n    return getPatternString(s,iStartPos,0,sPattern,iPatternLen);\n  }\n\n  public static String getPatternString( String s, int iStartPos, String sPattern ) {\n    return getPatternString(s,iStartPos,0,sPattern,3);\n  }\n\n  \n    /** getQQString 功能：用于转换为后几位的为*。\n* <br>输入参数：String strvalue 设置要转换的字符串\n*               \n* <br>输出参数：。\n* <br>作者：范波\n* <br>时间：2006-8-7\n* <br>存在问题：\n* <br>用法：\n*          <%=optionFuns.getQQString(String.valueOf(oi.next()))%>\n*/\npublic static String getQQString( String strvalue ) {\n\ttry {\n\t  String QQ=\"\";\n\t  if ( strvalue.equals(\"\") ) {\n\t    return \"\";\n\t  } else {\n\t     QQ=\"<img src=\\\"http://wpa.qq.com/pa?p=1:\"+strvalue\n\t        +\":4\\\">\"\n\t        +\" <SPAN title=\\\"有事叫我!\\\" style=\\\"CURSOR: hand\\\"\"\n\t        +\" onclick=\\\"window.open('http://wpa.qq.com/msgrd?V=1&amp;Uin=\"+strvalue\n\t        +\"&amp;Site=21pan&amp;Menu=yes')\\\">\"+strvalue+\"</SPAN>\";\n\t    }\n\t    strvalue=QQ;\n\t    //System.out.print( \"strvalue:\" + strvalue );\n\t    return strvalue;\n\t  \n\t}\n\t\n\tcatch (Exception e) {\n\t  return strvalue;\n\t}\n}\n\n\tpublic String getNoExistString(String allString, String existString){\n\t\treturn this.getNoExistString(this.splitStr(allString, \",\"), existString);\n\t}\n\t\n\t/* 返回existString中的每个字串不在allString中的 */\n\tpublic String getNoExistString(String[] allString, String existString){\n\t\texistString = existString + \",\";\n\t\tif(allString==null&&allString.length==0){\n\t\t\treturn \"\";\n\t\t}\n\t\tStringBuffer sBuf = new StringBuffer();\n\t\tfor(int i=0;i<allString.length;i++){\n\t\t\tif(existString.indexOf(allString[i])==-1){\n\t\t\t\tsBuf.append(allString[i]).append(\",\");\n\t\t\t}\n\t\t}\n\t\tif(sBuf.length()>1){\n\t\t\tsBuf.delete(sBuf.length()-1, sBuf.length());\n\t\t}\n\t\treturn sBuf.toString();\n\t}\n\t\n  public static void main(String[] args) throws Exception {\n\n//\t  \n//\t  \n//\t  java.util.List aList = new ArrayList();\n//\t  System.out.println(UtilFuns.isNotEmpty(aList));\n//\t  \n//\t  System.out.println(uf.formatDateTimeCN(\"2011\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"2011-01\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"2011-01-02\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"2011-01-02 03\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"2011-01-02 13:05\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"2011-01-02 13:05:05\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"03\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"13:05\"));\n//\t  System.out.println(uf.formatDateTimeCN(\"13:05:05\"));\n\t  \n//\t  UtilFuns uf = new UtilFuns();\n//\t  System.out.println(uf.getNoExistString(\"1,2,3\", \"1,2,3,4\"));\n//\t  System.out.println(uf.getNoExistString(\"安全,生产,营销\", \"生产,营销\"));\n//\t  System.out.println(\"finish!\");\n\t  \n//\t  Set<String> set = new HashSet<String>();\n//\t  set.add(\"abc\");\n//\t  set.add(\"xyz\"); \n//\t  set.add(\"abc\");  \n//\t  for(Iterator<String> it = set.iterator();it.hasNext();){\n//\t   System.out.println(it.next());   \n//\t  } \n\t\n  \t/*\n    System.out.println(SysTime(\"yyyy-MM-dd\"));\n    System.out.println(SysTime(\"yyyy-MM-dd HH:mm:ss\"));\n    \n    System.out.println(Double.parseDouble(\"12.11\"));\n    System.out.println(FormatNumber(\"12.11000000000f\"));\n    \n    System.out.println(getPatternString(\"CHEN ZISHU\",8,0,\".\",3));\n    */\n    \n    //System.out.println(SysTime(\"yyyy年MM月\"));\n    //System.out.println(SysTime(\"yyyyMM\"));\n    //System.out.println(ConvertSpaceTD(\"\"));\n    //System.out.println(ConvertTD(\"\"));\n    \n\t\t/* process the stat data Start \n\t\tStatement stmt1 = conn.createStatement(); \n\t\tString sTableName = find_Type;\n\t\tString sUserName = findName;\n\t\tStringBuffer sBuffer = new StringBuffer();\n\n\t\t//Step 1 clear Table userState\n\t\tsBuffer.append(\"delete * from userStat;\");\n\n\t\t//Step 2 read username from User_P and write inputnum in it\n\t\tsBuffer.append(\"select User_P.loginname,\").append(sTableName).append(\".createby,count(\").append(sTableName).append(\".createby)\")\n\t\t\t.append(\" from \").append(sTableName).append(\"\")\n\t\t\t.append(\" right join\")\n\t\t\t.append(\" User_P\")\n\t\t\t.append(\" on User_P.loginname=\").append(sTableName).append(\".createby\")\n\t\t\t.append(\" where 1=1\");\n\t\tif (find_Name.compareTo(\"\")!=0){\n\t\t\tsBuffer.append(\" and \").append(sTableName).append(\".createby='\").append(sTableName).append(\"'\");\n\t\t}\n\t\tif (find_DateStart.compareTo(\"\")!=0){\n\t\t\tsBuffer.append(\" and createdate<='\").append(find_DateStart).append(\" 00:00:00'\");\n\t\t}\n\t\tif (find_DateStart.compareTo(\"\")!=0){\n\t\t\tsBuffer.append(\" and createdate>='\").append(find_DateEnd).append(\" 23:59:59'\");\n\t\t}\n\t\tsBuffer.append(\" group by \").append(sTableName).append(\".createby\")\n\t\t\t.append(\";\");\n\n\n\t\t//Step 3 read updatenum\n\t\tsBuffer.append(\"select count(updateby) from \").append(sTableName).append(\"\")\n\t\t\t.append(\" where \").append(sTableName).append(\".updateby=''\")\n\t\t\t.append(\" and updatedate<='\").append(find_DateStart).append(\" 00:00:00'\")\n\t\t\t.append(\" and updatedate>='\").append(find_DateEnd).append(\" 23:59:59'\")\n\t\t\t.append(\";\");\n\n\t\t//Step 4 update the userStat.updatenum value\n\t\tsBuffer.append(\"update userStat set updatenum='3' where updateby='\").append(sTableName).append(\"'\")\n\t\t\t.append(\";\");\n\n\t\tsBuffer.toString();\n\n\t\t process the stat data End */\n\n/*    \n    try{\n      System.out.println(SysDate());\n       System.out.println(StrToDateTimeFormat(\"2003-08-21 18:28:47\", \"yyyy-MM-\"));\n    }catch(Exception e){\n       \n    }\n    String s[] = SplitStr(\"asd,asd,we,sd\",\",\");\n    for (int curLayNum=0;curLayNum<s.length;curLayNum++){\n      System.out.println(s[curLayNum]);\n    }\n    System.out.println(JoinStr(s,\",\"));\n\n    System.out.println(ReturnSysTime(\"yyyy-MM-dd\"));\n    //System.out.println(CoverDate(ReturnSysTime(\"yyyy-MM-dd HH:mm:ss\"),\"yyyy-MM-dd\"));\n    try {\n      System.out.println(StrToTimestamp(\"2003-08-21 18:28:47\", \"yyyy-MM\"));\n      System.out.println(StrToDateTimeFormat(\"2003-08-21 18:28:47\", \"yyyy-MM\"));\n    }\n    catch (ParseException ex) {\n    }\n\n    try {\n      System.out.println(StrToTimestamp(\"2003-08-26\", \"yyyy-MM-dd\"));\n    }\n    catch (ParseException ex) {\n      System.out.println(\"StrToTimestamp error.\");\n    }*/\n\t  \n\t  System.out.println(\"finish!\");\n  }\n\n/*\n<script language=JavaScript>\n\n  var today = new Date();\n  var strDate = (today.getFullYear() + \"年\" +\n(today.getMonth() + 1) + \"月\" + today.getDate() + \"日 \");\n  var n_day = today.getDay();\n  switch (n_day)\n  {\n  case 0:{\n  strDate = strDate + \"星期日\"\n  }break;\n  case 1:{\n  strDate = strDate + \"星期一\"\n  }break;\n  case 2:{\n  strDate = strDate + \"星期二\"\n  }break;\n  case 3:{\n  strDate = strDate + \"星期三\"\n  }break;\n  case 4:{\n  strDate = strDate + \"星期四\"\n  }break;\n  case 5:{\n  strDate = strDate + \"星期五\"\n  }break;\n  case 6:{\n  strDate = strDate + \"星期六\"\n  }break;\n  case 7:{\n  strDate = strDate + \"星期日\"\n  }break;\n  }\n  document.write(strDate);\n\n</script>\n*/\n\n\tpublic String replaceLast(String string, String toReplace, String replacement) {\n\t\tint pos = string.lastIndexOf(toReplace);\n\t\tif (pos > -1) {\n\t\t\treturn string.substring(0, pos) + replacement + string.substring(pos + toReplace.length(), string.length());\n\t\t} else {\n\t\t\treturn string;\n\t\t} \n\t} \n\t\n\tpublic static String getROOTPath(){\n\t\tUtilFuns uf = new UtilFuns();\n\t\treturn uf.getClass().getResource(\"/\").getPath().replace(\"/WEB-INF/classes/\", \"/\").substring(1);\n\t}\n\tpublic String getClassRootPath(){\n\t\treturn this.getClass().getResource(\"/\").getPath();\n\t}\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/java/edu/fjnu/online/util/file/FileUtil.java",
    "content": "package edu.fjnu.online.util.file;\n\nimport java.io.BufferedInputStream;\nimport java.io.BufferedReader;\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundException;\nimport java.io.FileOutputStream;\nimport java.io.FileReader;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.nio.channels.FileChannel;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport edu.fjnu.online.util.FormatStyle;\nimport edu.fjnu.online.util.UtilFuns;\n\npublic class FileUtil {\n\n  /* ======================================== *\n   * Class Methods\n   * ======================================== */\n\n   \n\tpublic String getFileExt(String s){\n\t    String s1 = new String();\n\t    int i = 0;\n\t    int j = 0;\n\t    if(s == null)\n\t        return null;\n\t    i = s.lastIndexOf(46) + 1;\n\t    j = s.length();\n\t    s1 = s.substring(i, j);\n\t    if(s.lastIndexOf(46) > 0)\n\t        return s1.toLowerCase();\n\t    else\n\t        return \"\";\n\t}\n\t\n\n    private String getNameWithoutExtension(String fileName){\n        return fileName.substring(0, fileName.lastIndexOf(\".\"));\n    }\n\t\n\tpublic boolean isImgFile(String file)\n\t{\n\t\tif(UtilFuns.isNotEmpty(file)){\n\t\t\tString s1 = \".\"+this.getFileExt(file);\n\t\t\tif(\".jpg.jpeg.bmp.gif.png\".indexOf(s1)>-1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\tpublic String getFileName(String s){\n\t\ttry{\n\t\t\ts = s.replaceAll(\"/\", \"\\\\\\\\\");\n\t\t\tint fileIndex= s.lastIndexOf(\"\\\\\")+1;\n\t\t\treturn s.substring(fileIndex,s.length());\n\t\t}catch(Exception e){\n\t\t\treturn \"\";\n\t\t}\n\t}\n\t\n\tpublic String getFilePath(String s){\n\t\ttry{\n\t\t\ts = s.replaceAll(\"/\", \"\\\\\\\\\");\n\t\t\tint fileIndex= s.lastIndexOf(\"\\\\\");\n\t\t\treturn s.substring(0,fileIndex);\n\t\t}catch(Exception e){\n\t\t\treturn \"\";\n\t\t}\n\t}\n\t\n\t/* 目录下已经有同名文件,则文件重命名,增加文件序号 add by tony 20110712 */\n\tpublic String newFile(String sPath, String sFile){\n\t\tString newFileName = new String();\n\t\tString withoutExt = new String();\n\t\tFile curFile = new File(sPath + \"\\\\\" + sFile);\n\t\tif (curFile.exists()) {\n\t\t\tfor(int counter = 1; curFile.exists(); counter++){\n\t\t\t\twithoutExt = this.getNameWithoutExtension(curFile.getName());\n\t\t\t\tif(withoutExt.endsWith(counter-1 + \")\")){\n\t\t\t\t\twithoutExt = withoutExt.substring(0,withoutExt.indexOf(\"(\"));\t\t//idea\n\t\t\t\t}\n                newFileName = withoutExt + \"(\" + counter + \")\" + \".\" + getFileExt(curFile.getName());\n                curFile = new File(sPath + \"\\\\\" + newFileName);\n            }\n\t\t}else{\n\t\t\tnewFileName = curFile.getName();\n\t\t}\n\t\treturn newFileName;\n\t}\n    \n  /* 只清空文件夹，不删除文件夹 */\n  public static synchronized void clearDir(String dir_path)\n   throws FileNotFoundException {\n    \n    File file = new File(dir_path);\n    if (!file.exists()) {\n      throw new FileNotFoundException();\n    }\n    if (file.isDirectory()) {\n      File[] fe = file.listFiles();\n      for (int i = 0; i < fe.length; i++) {\n        deleteFiles(fe[i].toString());\n        fe[i].delete(); //删除已经是空的子目录\n      }\n    }\n  }\n   \n  //ex: deleteDir(new File(\"c://aaa\"));\n  /* 清空文件夹，并删除文件夹 */\n  public static synchronized void deleteDir(String dir_path)\n   throws FileNotFoundException,IOException {\n\tdeleteDir(new File(dir_path));\n  }\n  \n  //ex: deleteDir(new File(\"c://aaa\"));\n  /* 清空文件夹，并删除文件夹 */\n  public static synchronized void deleteDir(File f)\n  throws FileNotFoundException,IOException {\n\t  \n\t  if(!f.exists()){//文件夹不存在不存在\n\t\t  throw new IOException(\"指定目录不存在:\"+f.getName());\n\t  }\n\t  boolean rslt=true;//保存中间结果\n\t  if(!(rslt=f.delete())){//先尝试直接删除\n\t\t  //若文件夹非空。枚举、递归删除里面内容\n\t\t  File subs[] = f.listFiles();\n\t\t  for (int i = 0; i <= subs.length - 1; i++) {\n\t\t\t  if (subs[i].isDirectory())\n\t\t\t\t  deleteDir(subs[i]);//递归删除子文件夹内容\n\t\t\t  rslt = subs[i].delete();//删除子文件夹本身\n\t\t  }\n\t\t  rslt = f.delete();//删除此文件夹本身\n\t  }\n\t  //if(!rslt)\n\t  //　throw new IOException(\"无法删除:\"+f.getName());\n\t  //return;\n  }\n     \n  //路径中的多层目录,如果不存在,则建立(mkdir－只可建最后一层目录)\n  public static synchronized void makeDir(String dirPath)\n   throws FileNotFoundException {\n\tString s = \"\";\n\n\tdirPath = dirPath.replaceAll(\"\\\\t\",\"/t\"); \t//replace tab key\n\tdirPath = dirPath.replaceAll(\"\\\\\\\\\",\"/\");\n\tString[] aPath = dirPath.split(\"/\");\n\tfor (int i=0;i<aPath.length;i++){\n\t\ts = s + aPath[i] + \"/\";\n\t\t//System.out.println(s);\n\t    File d = new File(s);\n\t\tif(!d.exists()){\n\t\t\td.mkdir();\n\t\t}\n\t}\n  }\n\n  //修改目录名称或文件名称 dir and file\n  public static synchronized void rename(String sOld,String sNew)\n   throws FileNotFoundException {\n   \tboolean b = false;\n\tFile d = new File(sOld);\n\tif(d.exists()){\n\t\tb = d.renameTo(new File(sNew));\n\t}\n  }\n  \n  public static synchronized String formulaDirName(String dirName){\n\t  dirName = dirName.replaceAll(\"/\",\"\\\\\\\\\");\n\t  return dirName;\n  }\n  \n  public static synchronized String formulaPath(String dirName){\n\t  dirName = dirName.replaceAll(\"\\\\\\\\\",\"/\");\n\t  return dirName;\n  }\n\n  public static synchronized String lastDir(String dir_path){\n    if(dir_path.trim().compareTo(\"\")==0){\n      return \"\";\n    }else{\n      //两个位置，谁后取谁。因为路径中常包含这两种标识\n      int i= dir_path.lastIndexOf(\"\\\\\")>dir_path.lastIndexOf(\"/\")?dir_path.lastIndexOf(\"\\\\\"):dir_path.lastIndexOf(\"/\");\n      if(i>0){\n    \t  return dir_path.substring(i);\n      }else{\n    \t  return \"\";\n      }\n    }\n  }\n  \n  //删除给定的文件\n  public static void deleteFile(String FileName) {\n    File f2 = new File(FileName);\n    f2.delete(); //del file\n    f2 = null;\n  }\n  \n/*\n *删除目录下的所有文件\n **/\n  public static boolean deleteFiles(String dir) {\n    if(dir==null || \"\".equals(dir))\n      return true;\n\n    File f0 = new File(dir);\n    if( !f0.isDirectory() )\n      return false;\n    File[] files = f0.listFiles();\n    boolean status = true;\n    for(int i=0; i<files.length; i++) {\n      File f = files[i];\n      if( !f.isFile() )\n        continue;\n\n      boolean b = f.delete();\n      status = ( status && b );\n    }\n    return status;\n  }\n\n\n  /** Deletes each file in <tt>files</tt> which is under <tt>path</tt>.\n   * It does not delete directory.\n   *\n   * @param path\n   * @param files\n   * @return <tt>true</tt> if and only if all the files are successfully\n   *   deleted; <tt>false</tt> otherwise.\n   */\n  public static boolean deleteFiles(String path, String[] files) {\n    if(path==null || files==null)\n      return true;\n\n    boolean status = true;\n    for(int i=0; i<files.length; i++) {\n      File f = new File(path, files[i]);\n      if( !f.isFile() )\n        continue;\n\t\t//?  (f.getAbsoluteFile()).\n      boolean b = f.delete();\n      status = ( status && b );\n    }\n    return status;\n  }\n  \n  public static boolean deleteFiles(List files) {\n\t  \n    if(files==null || files.size()<=0)\n      return true;\n    \n    String fileName = \"\";\n    boolean status = true;\n    for(int i=0; i<files.size(); i++) {\n      fileName = (String)files.get(i);\n      File f = new File(fileName);\n      if( !f.isFile() )\n        continue;\n\t\t//?  (f.getAbsoluteFile()).\n      boolean b = f.delete();\n      status = ( status && b );\n    }\n    return status;\n  }\n\n  /** Copies byte-content of <tt>f</tt> to <tt>os</tt>.\n   *\n   * @param f\n   * @param os\n   * @throws IOException\n   */\n  public static void fileToOutputStream(File f, OutputStream os)\n      throws IOException {\n    //\n    InputStream is = new BufferedInputStream( new FileInputStream(f) );\n    byte[] barr = new byte[1024];\n    int count;\n    while(true) {\n      count = is.read(barr);\n      if(count == -1)\n        break;\n\n      os.write(barr, 0, count);\n    }\n    is.close();\n    return;\n  }\n  //读日志文件 \"c:\\\\Log.txt\"\n  //输入参数：sFile = Path + FileName 文件路径＋文件名称\n  public List<String> readTxtFile(String sFile) {\n\tString str = \"\";\n    List<String> sList = new ArrayList<String>();\n    try {\n      FileReader fr = new FileReader(sFile);\n      BufferedReader bfr = new BufferedReader(fr);\n      while((str = bfr.readLine())!=null){\n    \t  sList.add(str);\n      }\n      fr.close();\n    }catch (IOException ex){System.out.println(\"readTxtFile IOException Error.\"+ex.getMessage());\n    }catch (Exception ex) {System.out.println(\"readTxtFile Exception Error.\"+ex.getMessage());}\n    return sList;\n  }\n  \n  public String WriteTxt(String sPath,String sFile,String sContent) {\n  \tString s = \"\";\n  \tFile d=new File(sPath);//建立代表Sub目录的File对象，并得到它的一个引用\n  \tif(!d.exists()){//检查Sub目录是否存在\n  \t\td.mkdir();//建立Sub目录\n  \t}\n  \t\n\ttry {\n      FileWriter fw = new FileWriter(sPath + \"\\\\\" + sFile,true);\n      BufferedWriter bfw = new BufferedWriter(fw);\n      bfw.write(sContent);\n      bfw.flush();\n      fw.close();\n    }catch (IOException ex){ s = \"WriteTxt IOException Error.\"; \n    }catch (Exception ex) { s = \"WriteTxt Exception Error.\";}\n    \n\treturn s;\n  }\n  \n  /* 创建新文本文件，如果文件已经存在则覆盖 */\n  public String createTxt(String sPathFile,String sContent) throws FileNotFoundException {\n  \tString s = \"\";\n  \tString sPath = this.getFilePath(sPathFile);\n  \tString sFile = this.getFileName(sPathFile);\n  \t\n  \tFile d=new File(sPath);\t\t//建立代表Sub目录的File对象，并得到它的一个引用\n  \tif(!d.exists()){\t\t\t//检查Sub目录是否存在\n  \t\tthis.makeDir(sPath); \t//建立Sub目录\n  \t}\n  \t\n\ttry {\n      FileWriter fw = new FileWriter(sPath + \"\\\\\" + sFile,false);\n      BufferedWriter bfw = new BufferedWriter(fw);\n      bfw.write(sContent);\n      bfw.flush();\n      fw.close();\n    }catch (IOException ex){ s = \"createTxt IOException Error.\"; \n    }catch (Exception ex) { s = \"createTxt Exception Error.\";}\n    \n\treturn s;\n  }\n  \n  /* 创建新文本文件，如果文件已经存在则覆盖 */\n  public String createTxt(String sPath,String sFile,String sContent) throws FileNotFoundException {\n\t  String s = \"\";\n\t  File d=new File(sPath);\t\t//建立代表Sub目录的File对象，并得到它的一个引用\n\t  if(!d.exists()){\t\t\t//检查Sub目录是否存在\n\t\t  this.makeDir(sPath); \t//建立Sub目录\n\t  }\n\t  \n\t  try {\n\t\t  FileWriter fw = new FileWriter(sPath + \"\\\\\" + sFile,false);\n\t\t  BufferedWriter bfw = new BufferedWriter(fw);\n\t\t  bfw.write(sContent);\n\t\t  bfw.flush();\n\t\t  fw.close();\n\t  }catch (IOException ex){ s = \"createTxt IOException Error.\"; \n\t  }catch (Exception ex) { s = \"createTxt Exception Error.\";}\n\t  \n\t  return s;\n  }\n  \n  /* 创建新文本文件，如果文件已经存在则覆盖，在文件后追加内容 文件格式：encode:UTF-8  add by tony 20100118 */\n  public String createTxt(String sPath,String sFile,String sContent,String enCoding) throws FileNotFoundException {\n  \tString s = \"\";\n  \tFile d=new File(sPath);\t\t//建立代表Sub目录的File对象，并得到它的一个引用\n  \tif(!d.exists()){\t\t\t//检查Sub目录是否存在\n  \t\tthis.makeDir(sPath); \t//建立Sub目录\n  \t}\n  \t\n\ttry {\n\t\tOutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(sPath + \"\\\\\" + sFile), enCoding);\n\t    out.write(sContent);\n\t    out.flush();\n\t    out.close();\n    }catch (IOException ex){ s = \"createTxt IOException Error.\"; \n    }catch (Exception ex)  { s = \"createTxt Exception Error.\"; }\n    \n\treturn s;\n  }\n  \n  /* 创建新文本文件，如果文件已经存在则覆盖，只覆盖不追加 文件格式：encode:UTF-8  add by tony 20100118 */\n  public String newTxt(String sPath,String sFile,String sContent,String enCoding) throws FileNotFoundException {\n\t  String s = \"\";\n\t  File d=new File(sPath);\t\t//建立代表Sub目录的File对象，并得到它的一个引用\n\t  if(!d.exists()){\t\t\t//检查Sub目录是否存在\n\t\t  this.makeDir(sPath); \t//建立Sub目录\n\t  }\n\t  \n\t  try {\n\t\t  OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(sPath + \"\\\\\" + sFile, false), enCoding);\n\t\t  out.write(sContent);\n\t\t  out.flush();\n\t\t  out.close();\n\t  }catch (IOException ex){ s = \"createTxt IOException Error.\"; \n\t  }catch (Exception ex)  { s = \"createTxt Exception Error.\"; }\n\t  \n\t  return s;\n  }\n  \n/*\n    \n    s = \"c:\\\\ex.txt\";\n    String[] aTitle = null; //表示没有标题\n    String[] aContent = {\"a\",\"b\",\"c\",\"a1\",\"a2\",\"a3\"};\n    \n    sMsg = fileUtil.WriteTxt(s,aTitle,aContent,\"\\t\",3); //\\t TAB键\n\n */\n  public String WriteTxt(String sFile,String[] aTitle,String[] aContent,String sSplitFlag,int iColumns) {\n    String sMsg = \"\";\n    long lTime = System.currentTimeMillis();\n    try {\n      if (aTitle!=null){     \n        if (aTitle.length!=iColumns){\n          throw new Exception(\"Title Length is not right!\");\n        }\n      }\n      \n      File f = new File(sFile);\n      if(f.exists())\n      {\n        f.delete();   //if exist then delete()\n      }\n      \n      FileWriter fw = new FileWriter(sFile,true);\n      BufferedWriter bfw = new BufferedWriter(fw);\n      \n      //write Title\n      if (aTitle!=null){\n        for(int i=0;i<aTitle.length;i++){    \n          bfw.write(aTitle[i] + sSplitFlag);\n        }\n        bfw.newLine(); //插入换行符号\n      }\n      \n      //write content\n      for(int i=0;i<aContent.length;i++){    \n        bfw.write(aContent[i] + sSplitFlag);\n        \n        if ((i+1)%iColumns==0){\n          bfw.newLine(); //插入换行符号\n        }\n      }\n      bfw.flush();   //将缓冲区内的数据写入文件中\n      fw.close();\n    }catch (IOException ex){ \n      sMsg = \"WriteTxt IOException Error.\"+ex.getMessage();\n    }catch (Exception ex) {\n      sMsg = \"WriteTxt Exception Error.\"+ex.getMessage();\n    }\n    return sMsg;\n  }\n\n \n  //边生成边写XML文件  对单表结构\n  public String WriteXML(String sFile,String indent,String root,String[] aTrunk,String[] aLeaf,String[] aContent) {\n    int i=0,j=0,k=0;\n    String sIndent = \"\";\n    String[] aTrunkSuffix = new String[aTrunk.length];\n    String[] aLeafSuffix  = new String[aLeaf.length];\n    \n    \n    String sMsg = \"\";\n    long lTime = System.currentTimeMillis();\n    \n    try {\n      \n      File f = new File(sFile);\n      if(f.exists())\n      {\n        f.delete();   //if exist then delete()\n      }\n      \n      //inital array\n      for(i=0;i<aTrunk.length;i++){\n        for(j=0;j<i;j++){\n          sIndent = indent + sIndent;  //add space\n        }\n        aTrunk[i] = sIndent + \"<\" + aTrunk[i] + \">\";\n        aTrunkSuffix[i] = aTrunk[i].replaceFirst(\"<\",\"</\");\n        //System.out.println(i + \" \" + aTrunk[i]+aTrunkSuffix[i]);\n      }\n      \n      sIndent = indent + sIndent;  //add space\n      for(i=0;i<aLeaf.length;i++){\n        aLeafSuffix[i] = \"</\" + aLeaf[i] + \">\";\n        aLeaf[i] = sIndent + \"<\" + aLeaf[i] + \">\";\n      }\n              \n      FileWriter fw = new FileWriter(sFile,true);\n      BufferedWriter bfw = new BufferedWriter(fw);\n     \n      bfw.write(\"<?xml version=\\\"1.0\\\" ?>\");bfw.newLine();\n      if(root.length()>0){\n        bfw.write(\"<\"+root+\">\");bfw.newLine();        \n      }\n      \n      while(k<aContent.length){\n        for(i=0;i<aTrunk.length;i++){\n          bfw.write(aTrunk[i]);bfw.newLine();\n        }\n        for(i=0;i<aLeaf.length;i++){\n          bfw.write(aLeaf[i] + aContent[k++] + aLeafSuffix[i]);bfw.newLine();  \n        }\n        \n        for(i=aTrunkSuffix.length-1;i>-1;i--){\n          bfw.write(aTrunkSuffix[i]);bfw.newLine();\n        }\n      }//end while\n      \n      if(root.length()>0){\n        bfw.write(\"</\"+root+\">\");bfw.newLine();\n      }    \n      \n      \n      bfw.flush();   //将缓冲区内的数据写入文件中\n      fw.close();\n    }catch (IOException ex){ \n      sMsg = this.getClass().getName()+ \" WriteXML IOException Error.\"+ex.getMessage();\n    }catch (Exception ex) {\n      sMsg = this.getClass().getName()+ \" WriteXML Exception Error.\"+ex.getMessage();\n    }\n    return sMsg;\n  }\n\n\n \n  //create xml lines to ArrayList\n  public ArrayList CreateXML(String StartIndent,String indent,String[] aTrunk,String[] aLeaf,String[] aContent) {\n    \n    ArrayList aList = new ArrayList();\n\n    int i=0,j=0,k=0;\n    String sIndent = StartIndent;\n    String[] aTrunkSuffix = new String[aTrunk.length];\n    String[] aLeafSuffix  = new String[aLeaf.length];\n    \n    String sMsg = \"\";\n    long lTime = System.currentTimeMillis();\n    \n    try {\n      \n      //inital array\n      for(i=0;i<aTrunk.length;i++){\n        for(j=0;j<i;j++){\n          sIndent = indent + sIndent;  //add space\n        }\n        aTrunk[i] = sIndent + \"<\" + aTrunk[i] + \">\";\n        aTrunkSuffix[i] = aTrunk[i].replaceFirst(\"<\",\"</\");\n      }\n      \n      sIndent = indent + sIndent;  //add space\n      for(i=0;i<aLeaf.length;i++){\n        aLeafSuffix[i] = \"</\" + aLeaf[i] + \">\";\n        aLeaf[i] = sIndent + \"<\" + aLeaf[i] + \">\";\n      }\n                    \n      while(k<aContent.length){\n        for(i=0;i<aTrunk.length;i++){\n          aList.add(aTrunk[i]);   \n        }\n        for(i=0;i<aLeaf.length;i++){\n          aList.add(aLeaf[i] + aContent[k++] + aLeafSuffix[i]);     \n        }\n        \n        for(i=aTrunkSuffix.length-1;i>-1;i--){\n          aList.add(aTrunkSuffix[i]);   \n        }\n      }//end while\n      \n      return aList;\n    }catch (Exception ex) {\n      sMsg = this.getClass().getName()+ \" CreateXML Exception Error.\"+ex.getMessage();\n    }\n    return null;\n  }\n\n\n  //边生成边写XML文件 \n  public String WriteXML(String sFile,String sXmlVer,String root,ArrayList aList) {\n\n    String sMsg = \"\";\n    long lTime = System.currentTimeMillis();\n    try {\n      \n      File f = new File(sFile);\n      if(f.exists())\n      {\n        f.delete();   //if exist then delete()\n      }\n      \n      FileWriter fw = new FileWriter(sFile,true);\n      BufferedWriter bfw = new BufferedWriter(fw);\n     \n      bfw.write(\"<?\"+sXmlVer+\"?>\");bfw.newLine();  \n      \n      if(root.length()>0){\n        bfw.write(\"<\"+root+\">\");bfw.newLine();        \n      }\n      \n      //write txt\n      for(int i=0;i<aList.size();i++){\n        bfw.write((String)aList.get(i));bfw.newLine();        \n      }      \n      \n      if(root.length()>0){\n         //去掉元素后面的属性\n        bfw.write(\"</\"+root.substring(0,root.indexOf(\" \"))+\">\");\n      }        \n      \n      bfw.flush();   //将缓冲区内的数据写入文件中\n      fw.close();\n    }catch (IOException ex){ \n      sMsg = this.getClass().getName()+ \" WriteXML IOException Error.\"+ex.getMessage();\n    }catch (Exception ex) {\n      sMsg = this.getClass().getName()+ \" WriteXML Exception Error.\"+ex.getMessage();\n    }\n    return sMsg;\n  }\n\n\tpublic boolean isExist(String filename){\n\t\ttry{\n\t\t\tFile file = new File(filename);\n\t\t\tif(!file.exists()){\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\treturn true;\t\t\t\n\t\t\t}\n\t\t}catch(Exception e){\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//用于判断是绝对路径还是相对路径\tadd by tony 20100413\n\tpublic boolean isAbsolutePath(String path){\n\t\tif(path.indexOf(\":\")>0){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/** * 功能:利用nio来快速复制文件 */\n    public void copyFile(String srcFile, String destFile)\n            throws java.io.FileNotFoundException, java.io.IOException {\n        FileInputStream fis = new FileInputStream(srcFile);\n        FileOutputStream fos = new FileOutputStream(destFile);\n        FileChannel fcin = fis.getChannel();\n        FileChannel fcout = fos.getChannel();\n        fcin.transferTo(0, fcin.size(), fcout);\n        fcin.close();\n        fcout.close();\n        fis.close();\n        fos.close();\n    }\n\n\n\t/** 忽略拷贝文件时发生的错误，可能是文件不存在 */\n\tpublic  boolean copyFileIgnore(String file1,String file2){\n\t\ttry{\n\t\t\tFile file_in = new File(file1);\n\t\t\tFile file_out = new File(file2);\n\t\t\tFileInputStream in1 = new FileInputStream(file_in);\n\t\t\tFileOutputStream out1 = new FileOutputStream(file_out);\n\t\t\tbyte[] bytes = new byte[1024];\n\t\t\tint c;\n\t\t\twhile((c=in1.read(bytes))!=-1){\n\t\t\t\tout1.write(bytes,0,c);\n\t\t\t}\n\t\t\tin1.close();\n\t\t\tout1.close();\n\t\t\treturn true;\t//if sucess then return true\n\t\t}catch(Exception e){\n\t\t\treturn false;\t//if fail then return false\n\t\t}\n\t\t\n\t}\n\n\t\n\t/* create by czs 2006-08-08 */\n\tpublic void copyDir(String dir1,String dir2) throws java.io.FileNotFoundException, IOException{\n\t\t(new File(dir2)).mkdir();\n\t\tFile[] file = (new File(dir1)).listFiles();\n\t\t\n\t\tfor(int i=0;i<file.length;i++){\n\t\t\t\n\t\t\tif(file[i].getName().compareTo(\"Thumbs.db\")!=0){\n\t\t\t\tif(file[i].isFile()){\n\t\t\t\t\tcopyFile(dir1+\"\\\\\"+file[i].getName(),dir2+\"\\\\\"+file[i].getName());\n\t\t\t\t}else if(file[i].isDirectory()){\n\t\t\t\t\tcopyDir(dir1+\"\\\\\"+file[i].getName(),dir2+\"\\\\\"+file[i].getName());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n    /** * 功能:利用nio快速复制目录 */\n    public void copyDirectory(String srcDirectory, String destDirectory)\n            throws java.io.FileNotFoundException, java.io.IOException { // 得到目录下的文件和目录数组\n\n        File srcDir = new File(srcDirectory);\n        File[] fileList = srcDir.listFiles();\n        // 循环处理数组\n        \n        if(fileList==null){\n        \tthrow new java.io.FileNotFoundException();\n        }\n        \n        (new File(destDirectory)).mkdir();\n        \n        for (int i = 0; i < fileList.length; i++) {\n            if (fileList[i].isFile()) {\n                // 数组中的对象为文件\n                // 如果目标目录不存在，创建目标目录\n                File descDir = new File(destDirectory);\n                if (!descDir.exists()) {\n                    descDir.mkdir();\n                } // 复制文件到目标目录\n                if(fileList[i].getName().compareTo(\"Thumbs.db\")!=0){\t//windows bug\n                \tcopyFile(srcDirectory + \"/\" + fileList[i].getName(),\n                        destDirectory + \"/\" + fileList[i].getName());\n                }\n            } else {\n                // 数组中的对象为目录\n                // 如果该子目录不存在就创建（其中也包含了对多级目录的处理）\n                File subDir = new File(destDirectory + \"/\"\n                        + fileList[i].getName());\n                if (!subDir.exists()) {\n                    subDir.mkdir();\n                }\n                // 递归处理子目录\n                copyDirectory(srcDirectory + \"/\" + fileList[i].getName(),\n                        destDirectory + \"/\" + fileList[i].getName());\n\n            }\n        }\n    }\n\n\t/* 列出目录下的所有文件 */\n\tpublic List fileList(String dir){\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tif (!files[i].isDirectory()){\n\t\t\t\tlist.add(files[i]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t}\n\t\n\t/* 列出目录下的所有文件，去除prefix路径~虚拟路径 */\n\tpublic List fileList(String dir, String prefix){\n\t\tFormatStyle formatStyle = new FormatStyle();\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tif (!files[i].isDirectory()){\n\t\t\t\tlist.add(String.valueOf(files[i]).substring(prefix.length()));\n\t\t\t\tlist.add(formatStyle.fileSize(String.valueOf(files[i].length())));\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t}\n\t\n\t/* 列出目录下前缀为prefix，后缀为suffix的文件 by tony 20110930 */\n\tpublic List<String> fileList(String dir, String prefix, String suffix){\n\t\tFormatStyle formatStyle = new FormatStyle();\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList _list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tif (!files[i].isDirectory()){\n\t\t\t\tif(files[i].getName().startsWith(prefix) && files[i].getName().endsWith(suffix)){\n\t\t\t\t\t_list.add(dir+\"/\"+files[i].getName());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _list;\n\t}\n\n\n\t/* 列出目录下的所有目录 */\n\tpublic List fileDir(String dir){\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tif (files[i].isDirectory()){\n\t\t\t\tlist.add(files[i]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t}\n\t\n\t/* 列出目录下的所有目录，去除prefix路径~虚拟路径 */\n\tpublic List fileDir(String dir, String prefix){\n\t\tFormatStyle formatStyle = new FormatStyle();\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tif (files[i].isDirectory()){\n\t\t\t\tlist.add(String.valueOf(files[i]).substring(prefix.length()));\n\t\t\t\tlist.add(String.valueOf(files[i].listFiles().length));\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t}\n\n\tpublic List dirfileList(String dir){\n\t\tFile f = new File(dir);\n\t\tFile[] files = f.listFiles();\n\t\tif (files==null){\n\t\t\treturn null;\n\t\t}\n\t\tint count = files.length;\n\t\tList list = new ArrayList(count);\n\t\tfor (int i=0;i<count;i++){\n\t\t\tlist.add(files[i]);\n\t\t}\n\t\treturn list;\n\t}\n\n    /**\n     * Moving a File to Another Directory\n     * @param srcFile  eg: c:\\windows\\abc.txt\n     * @param destPath eg: c:\\temp\n     * @return success \n     */\n    public boolean moveFile(String srcFile, String destPath){\n        // File (or directory) to be moved\n        File file = new File(srcFile);\n        \n        // Destination directory\n        File dir = new File(destPath);\n        \n        // Move file to new directory\n        boolean success = file.renameTo(new File(dir, file.getName()));\n        \n        return success;\n    }\n\n  /* ======================================== *\n   * Tests Methods\n   * ======================================== */\n\n  public static void main(String[] args) throws IOException {\n  \tFileUtil fu = new FileUtil();\n  \t\n  \t\n  \t\n  \t//fu.copyDir(\"E:\\\\WorkSpace\\\\java\\\\pan\\\\userstyle\\\\one\",\"E:\\\\WorkSpace\\\\java\\\\pan\\\\user\\\\test\");\n  \tfu.rename(\"c:\\\\t\",\"c:\\\\a\");\n  \t//fu.fileList(\"E:\\\\WorkSpace\\\\java\\\\pan\\\\21pan\");\n  \t\n  \t//fu.copyDirectory(\"c:\\\\123\",\"c:\\\\456\");\n    //String dir = \"D:\\tmp\\t/t\";\n    //makeDir(dir);\n\n/**\tFileUtil fu = new FileUtil();\n\tboolean copy_ok=fu.copyFile(\"E://WorkSpace//java//eCargo//comm//uploadfile//do_upload.jsp\",\"E://WorkSpace//java//eCargo//comm//uploadfile//hello_backup.jsp\");\n\tSystem.out.print(copy_ok);\n\t\n\tfu.copyDir(\"c:/eclog\",\"c:/ec\");\n\n    String path = \"d:/tmp\";\n    String f1 = \"links.txt\";\n    boolean b = deleteFiles(path, new String[]{f1});\n    System.out.println(b);\n\n    FileUtil fileUtil = new FileUtil();\n    String[] aTrunk = {\"gaosin\",\"ex\"};\n    String[] aLeaf = {\"编号\",\"姓名\",\"标题\",\"价格\"};\n    String[] aContent = {\"a\",\"b\",\"c\",\"d\",\"a1\",\"a2\",\"a3\",\"a4\"};\n    //String[] aContent = sqlDAO.CNRecordToStrings(sql);\n\n    String sMsg = fileUtil.WriteXML(\"c:\\\\ex.xml\",\"  \",\"gaosin-info\",aTrunk,aLeaf,aContent);\n    System.out.print(sMsg);\n    \n    try{\n      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\n      DocumentBuilder builder=factory.newDocumentBuilder();\n      Document doc=builder.parse(\"links.xml\");\n      doc.normalize();\n       //---取得变量----\n      String text=\"Wudong's Homepage\";\n      String url=\"www.wudong.com\";\n      String author=\"Wudong Liu\";\n      String discription=\"A site from Wudong Liu, give u lots of suprise!!!\";\n      //-------------\n      Text textseg;\n      Element link=doc.createElement(\"link\");\n    \n      Element linktext=doc.createElement(\"text\");\n      textseg=doc.createTextNode(text);\n      linktext.appendChild(textseg);\n      link.appendChild(linktext);\n    \n      Element linkurl=doc.createElement(\"url\");\n      textseg=doc.createTextNode(url);\n      linkurl.appendChild(textseg);\n      link.appendChild(linkurl);\n    \n      Element linkauthor=doc.createElement(\"author\");\n      textseg=doc.createTextNode(author);\n      linkauthor.appendChild(textseg);\n      link.appendChild(linkauthor);\n    \n      java.util.Calendar rightNow = java.util.Calendar.getInstance();\n      String day=Integer.toString(rightNow.get(java.util.Calendar.DAY_OF_MONTH));\n      String month=Integer.toString(rightNow.get(java.util.Calendar.MONTH));\n      String year=Integer.toString(rightNow.get(java.util.Calendar.YEAR));\n      Element linkdate=doc.createElement(\"date\");\n    \n      Element linkdateday=doc.createElement(\"day\");\n      textseg=doc.createTextNode(day);\n      linkdateday.appendChild(textseg);\n    \n      Element linkdatemonth=doc.createElement(\"month\");\n      textseg=doc.createTextNode(month);\n      linkdatemonth.appendChild(textseg);\n    \n    \n      Element linkdateyear=doc.createElement(\"year\");\n      textseg=doc.createTextNode(year);\n      linkdateyear.appendChild(textseg);\n    \n      linkdate.appendChild(linkdateday);\n      linkdate.appendChild(linkdatemonth);\n      linkdate.appendChild(linkdateyear);\n      link.appendChild(linkdate);\n    \n      Element linkdiscription=doc.createElement(\"description\");\n      textseg=doc.createTextNode(discription);\n      linkdiscription.appendChild(textseg);\n      link.appendChild(linkdiscription);\n    \n      doc.getDocumentElement().appendChild(link);\n    \n      TransformerFactory tFactory =TransformerFactory.newInstance();\n      Transformer transformer = tFactory.newTransformer();\n      DOMSource source = new DOMSource(doc);\n      StreamResult result = new StreamResult(new java.io.File(\"links.xml\"));\n      transformer.transform(source, result);\n      }catch(Exception e){\n        e.printStackTrace();\n      }\n    */\n  }\n\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/beans.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\t\t\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/mvc \n\t\t\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/context \n\t\t\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/aop \n\t\t\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/tx \n\t\t\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\t\t\n\t<!-- 管理service和dao -->\n\t<context:component-scan base-package=\"edu.fjnu.online.service,edu.fjnu.online.dao\"/>\n\t<context:property-placeholder location=\"classpath:jdbc.properties\"/>\n\t\t\t\t\n\t<!-- 数据库链接信息 -->\t\t\n\t<bean id=\"dataSource\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n\t\t<property name=\"driverClass\" value=\"${jdbc.driverClassName}\"/>\n\t\t<property name=\"jdbcUrl\" value=\"${jdbc.url}\"/>\n\t\t<property name=\"user\" value=\"${jdbc.username}\"/>\n\t\t<property name=\"password\" value=\"${jdbc.password}\"/>\n\n\t\t<property name=\"maxPoolSize\" value=\"${c3p0.pool.size.max}\"/>\n\t\t<property name=\"minPoolSize\" value=\"${c3p0.pool.size.min}\" />\n\t\t<property name=\"initialPoolSize\" value=\"${c3p0.pool.size.ini}\"/>\n\t\t<property name=\"acquireIncrement\" value=\"${c3p0.pool.size.increment}\"/>\n\t</bean>\n\t\t\n\t<!-- sqlSessionFactory spring和myBatis整合 -->\n\t<bean id=\"sqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t\t<property name=\"configLocation\" value=\"classpath:sqlMapConfig.xml\"/>\n\t\t<property name=\"mapperLocations\" value=\"classpath:edu/fjnu/online/mapper/*.xml\"/>\n\t</bean>\n\t\n\t<!-- 事务管理 -->\t\n\t<bean id=\"txManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t</bean>\n\n\t<!-- 通知 -->\t\n\t<tx:advice id=\"txAdvice\" transaction-manager=\"txManager\">\n\t\t<tx:attributes>\n\t\t\t<tx:method name=\"find*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"get*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"view*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"insert*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"update*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"delete*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"*\" propagation=\"REQUIRED\" /><!-- 防止漏网之鱼 -->\n\t\t</tx:attributes>\n\t</tx:advice>\n\n\t<aop:config>\n\t\t<!-- 切点 管理所有Service的方法 -->\n\t\t<aop:pointcut expression=\"execution(* edu.fjnu.online.service.*.*(..))\" id=\"transactionPointCut\"/>\n\t\t<!-- 增强，进行事务控制 Advisor -->\n\t\t<aop:advisor advice-ref=\"txAdvice\" pointcut-ref=\"transactionPointCut\"/>\n\t</aop:config>\n</beans>\t\t\t"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Course.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.CourseMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"courseRM\" type=\"edu.fjnu.online.domain.Course\">\n\t\t<id property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"courseName\" column=\"coursename\"/>\n\t\t<result property=\"courseState\" column=\"coursestate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tinsert into t_course\n\t\t(coursename,coursestate)\n\t\tvalues\n\t\t(#{courseName},#{courseState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tupdate t_course\n\t\t<set>\n\t\t\t<if test=\"courseName!=null\">\n\t\t\t\tcoursename=#{courseName},\n\t\t\t</if>\n\t\t\t<if test=\"courseState!=null\">\n\t\t\t\tcoursestate=#{courseState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere courseid=#{courseId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Course\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere courseid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_course\n\t\twhere courseid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/ErrorBook.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.ErrorBookMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"errorRM\" type=\"edu.fjnu.online.domain.ErrorBook\">\n\t\t<id property=\"bookId\" column=\"bookid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"userAnswer\" column=\"uanswer\"/>\n\t\t<association property=\"question\" javaType=\"edu.fjnu.online.domain.Question\">\n\t\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t\t</association>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tinsert into t_errorbook\n\t\t(userid,courseid,gradeid,uanswer,questionid,typeid)\n\t\tvalues\n\t\t(#{userId},#{courseId},#{gradeId},#{userAnswer},#{question.questionId},#{question.typeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tupdate t_errorbook\n\t\t<set>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuanswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere bookid=#{bookId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.ErrorBook\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere bookid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_errorbook\n\t\twhere bookid=#{id}\n\t</delete>\n\t\n\t<!-- \n\t\tquesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid\n\t -->\n\t<select id=\"getBookInfo\"  resultMap=\"errorRM\" parameterType=\"map\">\n\t\tselect * from t_question a,t_errorbook b\n\t\twhere a.questionid = b.questionid\n\t\tand b.userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Factory.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.FactoryMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"factoryRM\" type=\"edu.fjnu.online.domain.Factory\">\n\t\t<id property=\"id\" column=\"FACTORY_ID\"/>\n\t\t<result property=\"fullName\" column=\"FULL_NAME\"/>\n\t\t<result property=\"factoryName\" column=\"FACTORY_NAME\"/>\n\t\t<result property=\"contractor\" column=\"CONTRACTOR\"/>\n\t\t<result property=\"phone\" column=\"PHONE\"/>\n\t\t<result property=\"mobile\" column=\"MOBILE\"/>\n\t\t<result property=\"fax\" column=\"FAX\"/>\n\t\t<result property=\"cnote\" column=\"CNOTE\"/>\n\t\t<result property=\"orderNo\" column=\"ORDER_NO\"/>\n\t\t<result property=\"state\" column=\"STATE\"/>\n\t</resultMap>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"edu.fjnu.online.domain.Factory\" resultMap=\"factoryRM\">\n\t\tselect * from factory_c\n\t\twhere 1=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Grade.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.GradeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"gradeRM\" type=\"edu.fjnu.online.domain.Grade\">\n\t\t<id property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"gradeName\" column=\"gradename\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tinsert into t_grade\n\t\t(gradename,courseid)\n\t\tvalues\n\t\t(#{gradeName},#{courseId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tupdate t_grade\n\t\t<set>\n\t\t\t<if test=\"gradeName!=null\">\n\t\t\t\tgradename=#{gradeName},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere gradeid=#{gradeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Grade\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere gradeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_grade\n\t\twhere gradeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Paper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.PaperMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"paperRM\" type=\"edu.fjnu.online.domain.Paper\">\n\t\t<id property=\"paperId\" column=\"paperid\"/>\n\t\t<result property=\"paperName\" column=\"papername\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"beginTime\" column=\"begintime\"/>\n\t\t<result property=\"endTime\" column=\"endtime\"/>\n\t\t<result property=\"allowTime\" column=\"allowtime\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"paperState\" column=\"paperstate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tinsert into t_paper\n\t\t(paperid,papername,courseid,gradeid,userid,questionid,begintime,endtime,allowtime,score,paperstate)\n\t\tvalues\n\t\t(#{paperId},#{paperName},#{courseId},#{gradeId},#{userId},#{questionId},#{beginTime},#{endTime},#{allowTime},#{score},#{paperState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"userId!=null\">\n\t\t\t\tuserid=#{userId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperstate!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperstate='0'\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperid=#{id} \n\t\tand paperstate='0'\n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_paper\n\t\twhere paperid=#{id}\n\t</delete>\n\t\n\t<!-- 查询学生已经考试过的试卷 -->\n\t<select id=\"getUserPaperById\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{id} \n\t\tand paperstate = '2'\n\t</select>\n\t<select id=\"getPaperDetail\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{userId}\n\t\tand paperid=#{paperId}\n\t</select>\n\t\n\t<update id=\"updateUserPaper\" parameterType=\"map\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperState!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t\t\tand userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"getUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate='0' \n\t\t\tand paperid not in(select paperid from t_paper where userid=#{userId})\n\t</select>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"qryUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate = '1' and userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Question.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.QuestionMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"questionRM\" type=\"edu.fjnu.online.domain.Question\">\n\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tinsert into t_question\n\t\t(quesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid)\n\t\tvalues\n\t\t(#{quesName},#{optionA},#{optionB},#{optionC},#{optionD},#{answer},#{userAnswer},#{courseId},#{typeId},#{difficulty},#{remark},#{answerDetail},#{gradeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tupdate t_question\n\t\t<set>\n\t\t\t<if test=\"quesName!=null\">\n\t\t\t\tquesname=#{quesName},\n\t\t\t</if>\n\t\t\t<if test=\"optionA!=null\">\n\t\t\t\toptiona=#{optionA},\n\t\t\t</if>\n\t\t\t<if test=\"optionB!=null\">\n\t\t\t\toptionb=#{optionB},\n\t\t\t</if>\n\t\t\t<if test=\"optionC!=null\">\n\t\t\t\toptionc=#{optionC},\n\t\t\t</if>\n\t\t\t<if test=\"optionD!=null\">\n\t\t\t\toptiond=#{optionD},\n\t\t\t</if>\n\t\t\t<if test=\"answer!=null\">\n\t\t\t\tanswer=#{answer},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuseranswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"typeId!=null\">\n\t\t\t\ttypeid=#{typeId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"difficulty!=null\">\n\t\t\t\tdifficulty=#{difficulty},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t\t<if test=\"answerDetail!=null\">\n\t\t\t\tanswerdetail=#{answerDetail},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere questionid=#{questionId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Question\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere questionid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_question\n\t\twhere questionid=#{id}\n\t</delete>\n\t\n\t<!-- 随机生成相应数量的题目 -->\n\t<select id=\"createPaper\" parameterType=\"map\" resultMap=\"questionRM\">\n\t\tselect * from t_question \n\t\t\twhere gradeid=#{gradeId}\n\t\t\tand typeid=#{typeId}\n\t\t\tand courseid=#{courseId}\n\t\t\tORDER BY RAND() LIMIT #{num} \n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/Type.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.TypeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"typeRM\" type=\"edu.fjnu.online.domain.Type\">\n\t\t<id property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"typeName\" column=\"typename\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tinsert into t_type\n\t\t(typename,score,remark)\n\t\tvalues\n\t\t(#{typeName},#{score},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tupdate t_type\n\t\t<set>\n\t\t\t<if test=\"typeName!=null\">\n\t\t\t\ttypename=#{typeName},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere typeid=#{typeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Type\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere typeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_type\n\t\twhere typeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/edu/fjnu/online/mapper/User.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.UserMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"userRM\" type=\"edu.fjnu.online.domain.User\">\n\t\t<id property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"userName\" column=\"username\"/>\n\t\t<result property=\"userPwd\" column=\"userpwd\"/>\n\t\t<result property=\"grade\" column=\"grade\"/>\n\t\t<result property=\"userType\" column=\"usertype\"/>\n\t\t<result property=\"userState\" column=\"userstate\"/>\n\t\t<result property=\"email\" column=\"email\"/>\n\t\t<result property=\"telephone\" column=\"telephone\"/>\n\t\t<result property=\"address\" column=\"address\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tinsert into t_user\n\t\t(userid,username,userpwd,grade,usertype,userstate,email,telephone,address,remark)\n\t\tvalues\n\t\t(#{userId},#{userName},#{userPwd},#{grade},#{userType},'0',#{email},#{telephone},#{address},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tupdate t_user\n\t\t<set>\n\t\t\t<if test=\"userName!=null\">\n\t\t\t\tusername=#{userName},\n\t\t\t</if>\n\t\t\t<if test=\"userPwd!=null\">\n\t\t\t\tuserpwd=#{userPwd},\n\t\t\t</if>\n\t\t\t<if test=\"userType!=null\">\n\t\t\t\tusertype=#{userType},\n\t\t\t</if>\n\t\t\t<if test=\"userState!=null\">\n\t\t\t\tuserstate=#{userState},\n\t\t\t</if>\n\t\t\t<if test=\"email!=null\">\n\t\t\t\temail=#{email},\n\t\t\t</if>\n\t\t\t<if test=\"telephone!=null\">\n\t\t\t\ttelephone=#{telephone},\n\t\t\t</if>\n\t\t\t<if test=\"address!=null\">\n\t\t\t\taddress=#{address},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere 1=1\n\t\torder by userstate\n\t</select>\n\t\n\t<!-- 查询所有待审核记录 -->\n\t<select id=\"findPending\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userstate=0\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_user\n\t\twhere userid=#{id}\n\t</delete>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"getStu\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{userId}\n\t\tand userstate=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/jdbc.properties",
    "content": "jdbc.driverClassName=com.mysql.jdbc.Driver\njdbc.url=jdbc:mysql://localhost:3306/onlinetest?characterEncoding=utf-8\njdbc.username=root\njdbc.password=123456\n\nc3p0.pool.size.max=20\nc3p0.pool.size.min=5\nc3p0.pool.size.ini=3\nc3p0.pool.size.increment=2\n"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/springmvc-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\"\n\txmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\thttp://www.springframework.org/schema/mvc \n\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\thttp://www.springframework.org/schema/context \n\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\thttp://www.springframework.org/schema/aop \n\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\thttp://www.springframework.org/schema/tx \n\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\n\t<mvc:annotation-driven/>\n\t\n\t<!-- 扫描controller -->\n\t<context:component-scan base-package=\"edu.fjnu.online.controller\"/>\n\t<!-- 内部资源视图解析器 -->\n\t<bean id=\"jspInternalResourceViewResolver\" class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n\t\t<property name=\"prefix\" value=\"/WEB-INF/pages/\"/>\n\t\t<property name=\"suffix\" value=\"\"/>\n\t</bean>\n</beans>\t"
  },
  {
    "path": "Check Maven Webapp/src/main/resources/sqlMapConfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE configuration\n\tPUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n\t\"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n<configuration>\n\t<plugins>\n\t\t<!-- com.github.pagehelper为PageHelper类所在包名 -->\n\t\t<plugin interceptor=\"com.github.pagehelper.PageHelper\">\n\t\t\t<property name=\"dialect\" value=\"mysql\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，会将RowBounds第一个参数offset当成pageNum页码使用 -->\n\t\t\t<!-- 和startPage中的pageNum效果一样 -->\n\t\t\t<property name=\"offsetAsPageNum\" value=\"true\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，使用RowBounds分页会进行count查询 -->\n\t\t\t<property name=\"rowBoundsWithCount\" value=\"true\" />\n\t\t\t<!-- 设置为true时，如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->\n\t\t\t<!-- （相当于没有执行分页查询，但是返回结果仍然是Page类型） -->\n\t\t\t<property name=\"pageSizeZero\" value=\"true\" />\n\t\t\t<!-- 3.3.0版本可用 - 分页参数合理化，默认false禁用 -->\n\t\t\t<!-- 启用合理化时，如果pageNum<1会查询第一页，如果pageNum>pages会查询最后一页 -->\n\t\t\t<!-- 禁用合理化时，如果pageNum<1或pageNum>pages会返回空数据 -->\n\t\t\t<property name=\"reasonable\" value=\"false\" />\n\t\t\t<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->\n\t\t\t<!-- 增加了一个`params`参数来配置参数映射，用于从Map或ServletRequest中取值 -->\n\t\t\t<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->\n\t\t\t<!-- 不理解该含义的前提下，不要随便复制该配置 -->\n\t\t\t<property name=\"params\" value=\"pageNum=start;pageSize=limit;\" />\n\t\t\t<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->\n\t\t\t<property name=\"returnPageInfo\" value=\"check\" />\n\t\t</plugin>\n\t</plugins>\n\n</configuration>\t"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/course-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>课程管理</h2></div>\n<form action=\"${ctx}/deleteCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addType()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">课程编号</th>\n                <th class=\"name\">课程名称</th>\n                <th class=\"process\">课程状态</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"courseId\" value=\"${o.courseId}\"/></td>\n\t\t\t\t\t<td>${o.courseId}</td>\n\t\t\t\t\t<td>${o.courseName}</td>\n\t\t\t\t\t<td>${o.courseState}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/delCourse.action?courseId=${o.courseId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdCourse.action?courseId=${o.courseId}\" class=\"edit\">编辑</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/qryCoursePage.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n \t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>课程编号</th><th class='operate'>课程名称</th>\";\n\t\t\t\thtml += \"<th class='time'>课程状态</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\t\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='courseId' value='\"+data[dataList].courseId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].courseId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].courseName+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].courseState+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/delCourse.action?courseId=\"+data[dataList].courseId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toUpdCourse.action?courseId=\"+data[dataList].courseId+\"' class='del'>编辑</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\"; \n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html); \n\t\t    }\n\t\t});\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='courseId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddCourse.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/course-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增课程</h2></div>\n<form action=\"${ctx}/addCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"courseName\" id=\"courseName\" maxlength=\"10\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addCourse()\">确定</a>\n    <a href=\"${ctx}/toCoursePage.action\" class=\"clear\"\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addCourse(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addCourse.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/course-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>更新课程</h2></div>\n<form action=\"${ctx}/updCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程编号：</label>\n        <input type=\"text\" name=\"courseId\" id=\"courseId\" maxlength=\"10\" value=\"${course.courseId }\" readonly=\"readonly\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程名称：</label>\n        <input type=\"text\" name=\"courseName\" id=\"courseName\" maxlength=\"10\" value=\"${course.courseName }\"/>\n    </p>\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程状态：</label>\n        <input type=\"text\" name=\"courseState\" id=\"courseState\" maxlength=\"10\" value=\"${course.courseState }\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toCoursePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updCourse.action\"; \n\t$(\"form\").submit();\n}\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/grade-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>年级管理</h2></div>\n<form action=\"${ctx}/deleteGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addGrade()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteGrade()\">删除</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">年级编号</th>\n                <th class=\"name\">年级名称</th>\n                <th class=\"process\">包含课程</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"gradeId\" value=\"${o.gradeId}\"/></td>\n\t\t\t\t\t<td>${o.gradeId}</td>\n\t\t\t\t\t<td>${o.gradeName}</td>\n\t\t\t\t\t<td>${o.courseId}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deleteGrade.action?gradeId=${o.gradeId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdGrade.action?gradeId=${o.gradeId}\" class=\"edit\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/qryAllGrade.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n \t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>年级编号</th><th class='operate'>年级名称</th>\";\n\t\t\t\thtml += \"<th class='time'>包含课程</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\t\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='gradeId' value='\"+data[dataList].gradeId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].gradeId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].gradeName+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].courseId+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/deleteGrade.action?gradeId=\"+data[dataList].gradeId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toUpdGrade.action?gradeId=\"+data[dataList].gradeId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\"; \n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html); \n\t\t    }\n\t\t});\t\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction deleteGrade(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='gradeId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddGrade.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/grade-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增年级</h2></div>\n<form action=\"${ctx}/addGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级名称：</label>\n        <input type=\"text\" name=\"gradeName\" id=\"gradeName\" maxlength=\"10\"/>\n    </p>\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>包含课程：</label>\n    </p>\n   \t<c:forEach items=\"${dataList}\" var=\"o\">\n    \t<p class=\"short-input ue-clear\">\n    \t\t<label><span style= \"width:100px \"> &nbsp; </span></label>\n    \t\t<input type=\"checkbox\" name=\"courseId\" id=\"courseId\" value=\"${o.courseId}\"/>${o.courseName}\n    \t</p>\n\t</c:forEach>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addGrade()\">确定</a>\n    <a href=\"${ctx}/toGradePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addGrade.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/grade-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看年级信息</h2></div>\n<form action=\"${ctx}/addGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级名称：</label>\n        <input type=\"text\" name=\"gradeName\" id=\"gradeName\" maxlength=\"10\" value=\"${grade.gradeName}\" readonly=\"readonly\"/>\n    </p>\n    \n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>包含课程：</label>\n    \t<input type=\"text\" name=\"courseId\" id=\"courseId\" readonly=\"readonly\" value=\"${grade.courseId}\"/>\n    </p>\n    \n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"${ctx}/toGradePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addGrade.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/index.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/jquery.dialog.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/index.css\" />\n\n<title>在线考试后台管理系统</title>\n</head>\n\n<body>\n<form name=\"icform\" method=\"post\"></form>\n<div id=\"container\">\n\t<div id=\"hd\">\n    \t<div class=\"hd-wrap ue-clear\">\n        \t<div class=\"top-light\"></div>\n             <h1 class=\"logo\"></h1> \n            <div class=\"login-info ue-clear\">\n                <div class=\"welcome ue-clear\"><span>欢迎您,</span><a href=\"javascript:;\" class=\"user-name\">${userName }</a></div>\n<!--                 <div class=\"login-msg ue-clear\">\n                    <a href=\"javascript:;\" class=\"msg-txt\">消息</a>\n                    <a href=\"javascript:;\" class=\"msg-num\">10</a>\n                </div> -->\n            </div>\n            <div class=\"toolbar ue-clear\">\n                <a href=\"javascript:;\" class=\"home-btn\">首页</a>\n                <a href=\"javascript:;\" class=\"quit-btn exit\"></a>\n            </div>\n        </div>\n    </div>\n    <div id=\"bd\">\n    \t<div class=\"wrap ue-clear\">\n        \t<div class=\"sidebar\">\n            \t<h2 class=\"sidebar-header\"><p>功能导航</p></h2>\n                <ul class=\"nav\">\n                    <li class=\"nav-info\">\n                    \t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>题库管理</span><i class=\"icon\"></i></a></div>\n                        <ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toQuestionPage.action','mframe');this.blur();\">试题管理</a></li>\n                            <li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toTypePage.action','mframe');this.blur();\">题型管理</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"konwledge\">\n\t\t\t\t\t\t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>用户管理</span><i class=\"icon\"></i></a></div>\n\t\t\t\t\t\t<ul class=\"subnav\">\n                        \t<li><a href=\"#\" onclick=\"formSubmit('${ctx}/admin/getAllUser.action','mframe');this.blur();\">信息管理</a></li>\n                            <li><a href=\"#\" onclick=\"formSubmit('${ctx}/admin/getFindPending.action','mframe');this.blur();\">身份审核</a></li>\n                        </ul>\n\t\t\t\t\t</li>\n                    <li class=\"agency\">\n\t\t\t\t\t\t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>基础管理</span><i class=\"icon\"></i></a></div>\n\t\t\t\t\t\t<ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toGradePage.action','mframe');this.blur();\">年级管理</a></li>\n                            <li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toCoursePage.action','mframe');this.blur();\">课程管理</a></li>\n                        </ul>\n\t\t\t\t\t</li>\n                    <li class=\"system\"><div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>试卷管理</span><i class=\"icon\"></i></a></div>\n                    \t<ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toPaperPage.action','mframe');this.blur();\">试卷管理</a></li>\n                        </ul>\n                    </li>\n                </ul>\n            </div>\n            <div class=\"content\">\n            \t<iframe name=\"mframe\" id=\"mframe\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n            </div>\n        </div>\n    </div>\n    <div id=\"ft\" class=\"ue-clear\">\n    \t<div class=\"ft-left\">\n            <span>福建师范大学</span>\n            <em>Online&nbsp;Exame&nbsp;System</em>\n        </div>\n        <div class=\"ft-right\">\n            <span>Automation</span>\n            <em>V1.0</em>\n        </div>\n    </div>\n</div>\n<div class=\"exitDialog\">\n\t<div class=\"dialog-content\">\n    \t<div class=\"ui-dialog-icon\"></div>\n        <div class=\"ui-dialog-text\">\n        \t<p class=\"dialog-content\">你确定要退出系统？</p>\n            <p class=\"tips\">如果是请点击“确定”，否则点“取消”</p>\n            \n            <div class=\"buttons\">\n                <input type=\"button\" class=\"button long2 ok\" value=\"确定\" id=\"btn_ok\"/>\n                <input type=\"button\" class=\"button long2 normal\" value=\"取消\" />\n            </div>\n        </div>\n        \n    </div>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/core.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.dialog.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/index.js\"></script>\n<script type=\"text/javascript\">\n\t/* 打开一个新页面：调用时不加第二个参数 add by tony */\n\tfunction formSubmit (url,sTarget){\n\t    document.forms[0].target = sTarget\n\t    document.forms[0].action = url;\n\t    document.forms[0].submit();\n\t    return true;\n\t}\n</script>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-deal.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>身份审核</h2></div>\n<form action=\"${ctx}/admin/failinfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">通过</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">注销</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">账号</th>\n                <th class=\"name\">昵称</th>\n                <th class=\"process\">账户类型</th>\n                <th class=\"process\">账户状态</th>\n                <th class=\"node\">邮箱</th>\n                <th class=\"time\">联系电话</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"userId\" value=\"${o.userId}\"/></td>\n\t\t\t\t\t<td>${o.userId}</td>\n\t\t\t\t\t<td>${o.userName}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userType==0}\">学生</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==1}\">老师</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==2}\">管理员</c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userState==0}\"><font color=\"blue\">待审核</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==1}\">在用</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==2}\"><font color=\"red\">注销</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==3}\"><font color=\"red\">审核不通过</font></c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.email}</td>\n\t\t\t\t\t<td>${o.telephone}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"del\" onclick=\"addUser()\">通过</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"edit\" onclick=\"deleteUser()\">注销</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"count\" onclick=\"showDetail('+${o.userId}+')\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/admin/qryFindPending.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n\t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>账号</th><th class='operate'>昵称</th>\";\n\t\t\t\thtml += \"<th class='process'>账户类型</th><th class='process'>账户状态</th><th class='node'>邮箱</th>\";\n\t\t\t\thtml += \"<th class='time'>联系电话</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='userId' value='\"+data[dataList].userId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].userId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].userName+\"</td>\";\n\t\t\t\t\tif(data[dataList].userType == 0){\n\t\t\t\t\t\thtml += \"<td>学生</td>\";\n\t\t\t\t\t}else if(data[dataList].userType == 1){\n\t\t\t\t\t\thtml += \"<td>老师</td>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<td>管理员</td>\";\n\t\t\t\t\t}\n\t\t\t\t\tif(data[dataList].userState == 0){\n\t\t\t\t\t\thtml += \"<td><font color='blue'>待审核</font></td>\";\n\t\t\t\t\t}else if(data[dataList].userState == 1){\n\t\t\t\t\t\thtml += \"<td>在用</td>\";\n\t\t\t\t\t}else if(data[dataList].userState == 2){\n\t\t\t\t\t\thtml += \"<font color='red'>注销</font>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<font color='red'>审核不通过</font>\";\n\t\t\t\t\t}\n\t\t\t\t\thtml += \"<td>\"+data[dataList].email+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].telephone+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/admin/passinfo.action?userId=\"+data[dataList].userId+\"' class='del'>通过</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/admin/failinfo.action?userId=\"+data[dataList].userId+\"' class='del'>注销</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/admin/toQryUser.action?userId=\"+data[dataList].userId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\";\n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html);\n\t\t    }\n\t\t});\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\n//不通过审核,即注销用户信息\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='userId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n//通过审核\nfunction addUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='userId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要通过的记录！\");\n\t\treturn;\n\t}\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/passinfo.action\"; \n\t$(\"form\").submit();\n}\n\nfunction showDetail(id){\n\talert()\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toQryUser.action?userId=\"+id; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-det.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户信息查询</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    \n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq user.grade  }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/admin/getFindPending.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>信息管理</h2></div>\n<form action=\"${ctx}/admin/deleteUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">账号</th>\n                <th class=\"name\">昵称</th>\n                <th class=\"process\">账户类型</th>\n                <th class=\"process\">账户状态</th>\n                <th class=\"node\">邮箱</th>\n                <th class=\"time\">联系电话</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"userId\" value=\"${o.userId}\"/></td>\n\t\t\t\t\t<td>${o.userId}</td>\n\t\t\t\t\t<td>${o.userName}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userType==0}\">学生</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==1}\">老师</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==2}\">管理员</c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userState==0}\"><font color=\"blue\">待审核</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==1}\"><B>在用</B></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==2}\"><font color=\"red\">注销</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==3}\"><font color=\"red\">审核不通过</font></c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.email}</td>\n\t\t\t\t\t<td>${o.telephone}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/admin/deleteUser.action?userId=${o.userId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/admin/toUpdateUser.action?userId=${o.userId}\" class=\"edit\">编辑</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"count\" onclick=\"showDetail('+${o.userId}+')\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/admin/qryAllUser.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n\t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>账号</th><th class='operate'>昵称</th>\";\n\t\t\t\thtml += \"<th class='process'>账户类型</th><th class='process'>账户状态</th><th class='node'>邮箱</th>\";\n\t\t\t\thtml += \"<th class='time'>联系电话</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='userId' value='\"+data[dataList].userId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].userId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].userName+\"</td>\";\n\t\t\t\t\tif(data[dataList].userType == 0){\n\t\t\t\t\t\thtml += \"<td>学生</td>\";\n\t\t\t\t\t}else if(data[dataList].userType == 1){\n\t\t\t\t\t\thtml += \"<td>老师</td>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<td>管理员</td>\";\n\t\t\t\t\t}\n\t\t\t\t\tif(data[dataList].userState == 0){\n\t\t\t\t\t\thtml += \"<td><font color='blue'>待审核</font></td>\";\n\t\t\t\t\t}else if(data[dataList].userState == 1){\n\t\t\t\t\t\thtml += \"<td>在用</td>\";\n\t\t\t\t\t}else if(data[dataList].userState == 2){\n\t\t\t\t\t\thtml += \"<td><font color='red'>注销</font></td>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<td><font color='red'>审核不通过</font></td>\";\n\t\t\t\t\t}\n\t\t\t\t\thtml += \"<td>\"+data[dataList].email+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].telephone+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/admin/deleteUser.action?userId=\"+data[dataList].userId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/admin/toUpdateUser.action?userId=\"+data[dataList].userId+\"' class='del'>编辑</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/admin/toQryUserInfo.action?userId=\"+data[dataList].userId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\";\n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html);\n\t\t    }\n\t\t});\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='userId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction showDetail(id){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toQryUserInfo.action?userId=\"+id; \n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toAddUser.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户信息查询</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    \n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq user.grade  }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/admin/getAllUser.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户注册</h2></div>\n<form action=\"${ctx}/admin/addUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" placeholder=\"登录账号\" name=\"userId\" id=\"userId\" onblur=\"checkUserId()\" value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" maxlength=\"6\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>密码：</label>\n        <input type=\"password\" placeholder=\"登录密码\" name=\"userPwd\" id=\"userPwd\"/>\n    </p>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"grade\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"2\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onblur=\"checkEmail()\" id=\"email\" name=\"email\"/>\n        <span style=\"color: red\" id=\"emailInfo\"></span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addUser()\">确定</a>\n    <a href=\"${ctx}/admin/getAllUser.action\" class=\"clear\" >返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar userId = $(\"#userId\").val();\n\tvar tipInfo = $(\"#tipInfo\").val();\n\tif(userId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入账号\");\n\t\t$(\"#userId\").focus();\n\t\treturn;\n\t}\n \t$.ajax({\n        type: \"post\",\n        url: \"${ctx}/admin/userRegist.action\",\n        data: {userId:userId},\n        dataType: \"json\",\n        success: function(data){\n        \t$(\"#tipInfo\").html(data.errorInfo);\n        }\n    });\n}\n\nfunction checkEmail(){\n\tvar email = $(\"#email\").val();\n\tif(email == \"\"){\n\t\t$(\"#emailInfo\").html(\"请输入邮箱\");\n\t\treturn;\n\t}\n\tvar req = /^(\\w-*\\.*)+@(\\w-?)+(\\.\\w{2,})+$/;\n\tif(!req.test(email)){\n\t\t$(\"#emailInfo\").html(\"邮箱格式不正确\");\n\t\t$(\"#email\").focus();\n\t\treturn;\n\t}\n}\n\n//注册\nfunction addUser(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/addUser.action\"; \n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/info-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>修改用户信息</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n        <input type=\"text\" placeholder=\"请输入年级\" name=\"grade\" id=\"grade\" value=\"${user.grade }\"/>\n    </p>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addUser()\">确定</a>\n\t<a href=\"${ctx}/admin/getAllUser.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/login.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n\t<link rel=\"stylesheet\" href=\"${ctx}/css/login.css\" />\n\t<title>在线考试后台管理系统</title>\n</head>\n<body>\n\t<div id=\"container\">\n\t\t<div id=\"bd\">\n\t\t\t<div class=\"login\">\n\t\t\t\t<form action=\"userLogin.action\" method=\"post\">\n            \t<div class=\"login-top\"><!-- <h1 class=\"logo\"></h1> --></div>\n                <div class=\"login-input\">\n                \t<p class=\"user ue-clear\">\n                    \t<label>账&nbsp;&nbsp;&nbsp;号</label>\n                        <input type=\"text\" id=\"userId\" name=\"userId\"/>\n                    </p>\n                    <p class=\"password ue-clear\">\n                    \t<label>密&nbsp;&nbsp;&nbsp;码</label>\n                        <input type=\"password\" id=\"userPwd\" name=\"userPwd\"/>\n                    </p>\n                    <div style=\"color: red\" id=\"tipInfo\" align=\"justify\">${message }</div>\n                </div>\n                <div class=\"login-btn ue-clear\">\n                \t<a class=\"btn\" onclick=\"userLogin()\">登录</a>\n                    <div class=\"remember ue-clear\">\n                    \t<input type=\"checkbox\" id=\"remember\" />\n                        <em></em>\n                        <label for=\"remember\">记住密码</label>\n                    </div>\n                </div>\n                </form>\n            </div>\n\t\t</div>\n\t</div>\n    <div id=\"ft\">CopyRight&nbsp;2014&nbsp;&nbsp;<!-- 版权所有&nbsp;&nbsp;uimaker.com专注于ui设计&nbsp;&nbsp;苏ICP备09003079号 --></div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\">\nvar height = $(window).height();\n$(\"#container\").height(height);\n$(\"#bd\").css(\"padding-top\",height/2 - $(\"#bd\").height()/2);\n\n$(window).resize(function(){\n\tvar height = $(window).height();\n\t$(\"#bd\").css(\"padding-top\",$(window).height()/2 - $(\"#bd\").height()/2);\n\t$(\"#container\").height(height);\n\t\n});\n\n$('#remember').focus(function(){\n   $(this).blur();\n});\n\n$('#remember').click(function(e) {\n\tcheckRemember($(this));\n});\n\nfunction checkRemember($this){\n\tif(!-[1,]){\n\t\t if($this.prop(\"checked\")){\n\t\t\t$this.parent().addClass('checked');\n\t\t}else{\n\t\t\t$this.parent().removeClass('checked');\n\t\t}\n\t}\n}\n\nfunction userLogin(){\n\tvar userId = $(\"#userId\").val();\n\tvar userPwd = $(\"#userPwd\").val();\n\tif(userId == \"\" || userPwd == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入完整的账号和密码！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/paper-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>试卷管理</h2></div>\n<form action=\"${ctx}/deletePaper.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\"  id='myDiv'>\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">试卷编号</th>\n                <th class=\"operate\">试卷名称</th>\n                <th class=\"process\">年级</th>\n                <th class=\"process\">对应科目</th>\n                <th class=\"node\">允许时长</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"paperId\" value=\"${o.paperId}\"/></td>\n\t\t\t\t\t<td>${o.paperId}</td>\n\t\t\t\t\t<td><font color=\"blue\">${o.paperName}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.gradeId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.courseId}</font></td>\n\t\t\t\t\t<td>${o.allowTime}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deletePaper.action?paperId=${o.paperId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/qryPaper.action?paperId=${o.paperId}\" class=\"del\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/qryAllPaper.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n\t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>试卷编号</th><th class='operate'>试卷名称</th>\";\n\t\t\t\thtml += \"<th class='process'>年级</th><th class='process'>对应科目</th>\";\n\t\t\t\thtml += \"<th class='time'>允许时长</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='paperId' value='\"+data[dataList].paperId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].paperId+\"</td>\";\n\t\t\t\t\thtml += \"<td><font color='blue'>\"+data[dataList].paperName+\"</font></td>\";\n\t\t\t\t\thtml += \"<td><font color='blue'>\"+data[dataList].gradeId+\"</font></td>\";\n\t\t\t\t\thtml += \"<td><font color='blue'>\"+data[dataList].courseId+\"</font></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].allowTime+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/deletePaper.action?paperId=\"+data[dataList].paperId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/qryPaper.action?paperId=\"+data[dataList].paperId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\";\n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html);\n\t\t    }\n\t\t});\t\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='paperId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddPaperPage.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/paper-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看试卷</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>试卷编号：</label><span style=\"color:blue\" size=\"3\">${paper.paperId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>试卷名称：</label><span style=\"color:blue\" size=\"3\">${paper.paperName }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>允许时长：</label><span style=\"color:blue\" size=\"3\">${paper.allowTime }分钟</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>对应科目：</label><span style=\"color:blue\" size=\"3\">${paper.courseId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>题目编号：</label><span style=\"color:blue\" size=\"3\">${paper.questionId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选择题数量：</label><span style=\"color:blue\" size=\"3\">${paper.score }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>填空题数量：</label><span style=\"color:blue\" size=\"3\">${paper.beginTime }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>简答题数量：</label><span style=\"color:blue\" size=\"3\">${paper.endTime }</span>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"${ctx}/toPaperPage.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addPaper.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/paper-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增试卷</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${course}\" var=\"cs\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${cs.courseId}\" checked=\"checked\"/>${cs.courseName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label>试卷编号：</label>\n        <input type=\"text\" placeholder=\"请输入试卷编号\" name=\"paperId\" id=\"paperId\" />\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>试卷名称：</label>\n        <input type=\"text\" placeholder=\"请输入试卷名称\" name=\"paperName\" id=\"paperName\" />\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>允许时长：</label>\n        <input type=\"text\" placeholder=\"请输入允许时长\" name=\"allowTime\" id=\"allowTime\" />分钟\n    </p>\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>选择题数量：</label>\n        <input type=\"text\" placeholder=\"选择题\" name=\"selectNum\" id=\"selectNum\"/>\n    </p>\n<!--     <p class=\"short-input ue-clear\" id=\"pb\">\n    \t<label><span style=\"color:red\"></span></label>\n    \t<label>简单：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n        <label>中等：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n        <label>较难：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n    </p> -->\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>填空题数量：</label>\n        <input type=\"text\" name=\"inputNum\" id=\"inputNum\"/>\n    </p>\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>简答数量：</label>\n        <input type=\"text\" name=\"descNum\" id=\"descNum\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addQuestion()\">确定</a>\n    <a href=\"${ctx}/toPaperPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addPaper.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/question-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目管理</h2></div>\n<form action=\"${ctx}/deleteQuestion.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">题目编号</th>\n                <th class=\"operate\">题目名称</th>\n                <th class=\"process\">对应科目</th>\n                <th class=\"process\">题型</th>\n                <th class=\"node\">难度</th>\n                <th class=\"time\">备注</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"questionId\" value=\"${o.questionId}\"/></td>\n\t\t\t\t\t<td>${o.questionId}</td>\n\t\t\t\t\t<td>${o.quesName}</td>\n\t\t\t\t\t<td><font color=\"blue\">${o.courseId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.typeId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==0}\">简单</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==1}\">中等</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==2}\">较难</c:if></font>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.remark}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deleteQuestion.action?questionId=${o.questionId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdQuestion.action?questionId=${o.questionId}\" class=\"del\">编辑</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toQryQuestion.action?questionId=${o.questionId}\" class=\"del\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\talert(txt);\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n/* \t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toQuestionPage.action?page=\"+(page+1); \n\t\t$(\"form\").submit(); */\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/quesPage.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n\t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>题目编号</th><th class='operate'>题目名称</th>\";\n\t\t\t\thtml += \"<th class='process'>对应科目</th><th class='process'>题型</th><th class='node'>难度</th>\";\n\t\t\t\thtml += \"<th class='time'>备注</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='questionId' value='\"+data[dataList].questionId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].questionId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].quesName+\"</td>\";\n\t\t\t\t\thtml += \"<td><font color='blue'>\"+data[dataList].courseId+\"</font></td>\";\n\t\t\t\t\thtml += \"<td><font color='blue'>\"+data[dataList].typeId+\"</font></td>\";\n\t\t\t\t\tif(data[dataList].difficulty == 0){\n\t\t\t\t\t\thtml += \"<td>简单</td>\";\n\t\t\t\t\t}else if(data[dataList].difficulty == 1){\n\t\t\t\t\t\thtml += \"<td>中等</td>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<td>较难</td>\";\n\t\t\t\t\t}\n\t\t\t\t\tif(data[dataList].remark==null){\n\t\t\t\t\t\thtml += \"<td>&nbsp;无&nbsp;</td>\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\thtml += \"<td>\"+data[dataList].remark+\"</td>\";\n\t\t\t\t\t}\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/deleteQuestion.action?questionId=\"+data[dataList].questionId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toUpdQuestion.action?questionId=\"+data[dataList].questionId+\"' class='del'>编辑</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toQryQuestion.action?questionId=\"+data[dataList].questionId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\";\n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html);\n\t\t    }\n\t\t});\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction callback(ddatalist){\n\talert(datalist);\n\t//todo:根据返回的datalist数据创建html结构展现给用户。\n}\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='questionId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddQuestion.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/question-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目详细</h2></div>\n<div class=\"main\">\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>问题编号：</label>${question.questionId}\n    </p>\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>年级：</label>${question.gradeId}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>科目：</label>${question.courseId}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>难度：</label>${question.difficulty}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>题型：</label>${question.typeId}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>问题名称：</label>${question.quesName}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项A：</label>${question.optionA}\n    </p>   \n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项B：</label>${question.optionB}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项C：</label>${question.optionC}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项D：</label>${question.optionD}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>答案：</label>${question.answer}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>详解：</label>${question.remark}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>备注：</label>${question.answerDetail}\n    </p>\n</div>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/toQuestionPage.action\" class=\"confirm\" onclick=\"addQuestion()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/question-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目录入</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${course}\" var=\"cs\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${cs.courseId}\" checked=\"checked\"/>${cs.courseName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>难度：</label>\n    \t<input name=\"difficulty\" type=\"radio\" value=\"0\" checked=\"checked\"/>简单\n    \t<input name=\"difficulty\" type=\"radio\" value=\"1\"/>中等\n    \t<input name=\"difficulty\" type=\"radio\" value=\"2\"/>较难\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>题型：</label>\n    \t<c:forEach items=\"${type}\" var=\"cs\">\n\t\t\t<input name=\"typeId\" type=\"radio\" value=\"${cs.typeId}\" checked=\"checked\" onclick=\"typeOnclick()\"/>${cs.typeName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"long-input ue-clear\">\n    \t<label>名称：</label>\n        <input type=\"text\" placeholder=\"请输入问题名称\" name=\"quesName\" id=\"quesName\" />\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pa\">\n    \t<label>选项A：</label>\n        <input type=\"text\" placeholder=\"选项A\" name=\"optionA\" id=\"optionA\" value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pb\">\n    \t<label>选项B：</label>\n        <input type=\"text\" placeholder=\"选项B\" name=\"optionB\" id=\"optionB\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pc\">\n    \t<label>选项C：</label>\n        <input type=\"text\" placeholder=\"选项C\" name=\"optionC\" id=\"optionC\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pd\">\n    \t<label>选项D：</label>\n        <input type=\"text\" placeholder=\"选项D\" name=\"optionD\" id=\"optionD\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>答案：</label>\n        <input type=\"text\" placeholder=\"请输入答案\" id=\"answer\" name=\"answer\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>详解：</label>\n        <input type=\"text\"id=\"answerDetail\" placeholder=\"请输入详解\" name=\"answerDetail\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>备注：</label>\n        <input type=\"text\" id=\"remark\" name=\"remark\" placeholder=\"请输入备注信息\"/>\n    </p>\n\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addQuestion()\">确定</a>\n    <a href=\"${ctx}/toQuestionPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addQuesInfo.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/question-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目更新</h2></div>\n<form action=\"${ctx}/updQuestion.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label>问题编号：</label>\n        <input type=\"text\" name=\"questionId\" id=\"questionId\" value=\"${question.questionId}\" readonly=\"readonly\"/>\n    </p>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${gradeList}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq question.gradeId }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${courseList}\" var=\"course\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${course.courseId}\" \n\t\t\t\t<c:if test=\"${course.courseId eq question.courseId }\">checked</c:if>/>${course.courseName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>难度：</label>\n    \t<input name=\"difficulty\" type=\"radio\" value=\"0\" checked=\"checked\"/>简单\n    \t<input name=\"difficulty\" type=\"radio\" value=\"1\"/>中等\n    \t<input name=\"difficulty\" type=\"radio\" value=\"2\"/>较难\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>题型：</label>\n    \t<c:forEach items=\"${typeList}\" var=\"typeInfo\">\n\t\t\t<input id=\"typeId\" name=\"typeId\" type=\"radio\" onclick=\"typeOnclick()\" value=\"${typeInfo.typeId}\"\n\t\t\t\t<c:if test=\"${typeInfo.typeId eq question.typeId }\">checked</c:if>/>${typeInfo.typeName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"long-input ue-clear\">\n    \t<label>名称：</label>\n        <input type=\"text\" placeholder=\"请输入问题名称\" name=\"quesName\" id=\"quesName\" value=\"${question.quesName}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pa\">\n    \t<label>选项A：</label>\n        <input type=\"text\" placeholder=\"选项A\" name=\"optionA\" id=\"optionA\" value=\"${question.optionA}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pb\">\n    \t<label>选项B：</label>\n        <input type=\"text\" placeholder=\"选项B\" name=\"optionB\" id=\"optionB\"  value=\"${question.optionB}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pc\">\n    \t<label>选项C：</label>\n        <input type=\"text\" placeholder=\"选项C\" name=\"optionC\" id=\"optionC\"  value=\"${question.optionC}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pd\">\n    \t<label>选项D：</label>\n        <input type=\"text\" placeholder=\"选项D\" name=\"optionD\" id=\"optionD\"  value=\"${question.optionD}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>答案：</label>\n        <input type=\"text\" placeholder=\"请输入答案\" id=\"answer\" name=\"answer\" value=\"${question.answer}\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>详解：</label>\n        <input type=\"text\"id=\"answerDetail\" placeholder=\"请输入详解\" name=\"answerDetail\" value=\"${question.answerDetail}\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>备注：</label>\n        <input type=\"text\" id=\"remark\" name=\"remark\" placeholder=\"请输入备注信息\" value=\"${question.remark}\"/>\n    </p>\n\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"updQuestion()\">更新</a>\n    <a href=\"${ctx}/toQuestionPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction updQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updQuestion.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/type-info.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题型详情</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"returnList()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addType.action\"; \n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/type-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题型管理</h2></div>\n<form action=\"${ctx}/deleteType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addType()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\" id=\"myDiv\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">编号</th>\n                <th class=\"name\">类型名称</th>\n                <th class=\"process\">分值</th>\n                <th class=\"process\">备注</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"typeId\" value=\"${o.typeId}\"/></td>\n\t\t\t\t\t<td>${o.typeId}</td>\n\t\t\t\t\t<td>${o.typeName}</td>\n\t\t\t\t\t<td>${o.score}</td>\n\t\t\t\t\t<td>${o.remark}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/delType.action?typeId=${o.typeId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdType.action?typeId=${o.typeId}\" class=\"edit\">编辑</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toQryType.action?typeId=${o.typeId}\" class=\"count\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(${pageInfo.total},{\n\tcallback: function(page){\n\t\t$.ajax({\n\t\t\turl:\"${ctx}/qryTypePage.action\",\n\t\t\tmethod:\"post\",\n\t\t\tdataType: \"json\",\n\t\t\tdata:{page:page+1},\n\t\t\tsuccess: function(data){\n\t\t\t\tvar html = \"\";\n \t\t\t\thtml += \"<div class='table-box' id='myDiv'>\";\n\t\t\t\thtml += \"<table border='1' cellspacing='1'>\";\n\t\t\t\thtml += \"<thead>\";\n\t\t\t\thtml += \"<th class='num'></th>\";\n\t\t\t\thtml += \"<th class='name'>编号</th><th class='operate'>类型名称</th>\";\n\t\t\t\thtml += \"<th class='time'>分值</th><th class='time'>备注</th><th class='operate'>操作</th>\";\n\t\t\t\thtml += \"</thead>\";\n\t\t\t\thtml += \"<tbody align='center'>\";\n\t\t\t\t\n\t\t\t\tfor(dataList in data){\n\t\t\t\t\thtml += \"<tr align='center'>\";\n\t\t\t\t\thtml += \"<td><input type='checkbox' name='typeId' value='\"+data[dataList].typeId+\"'/></td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].typeId+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].typeName+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].score+\"</td>\";\n\t\t\t\t\thtml += \"<td>\"+data[dataList].remark+\"</td>\";\n\t\t\t\t\thtml += \"<td class='operate'><a href='${ctx}/delType.action?typeId=\"+data[dataList].typeId+\"' class='del'>删除</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toUpdType.action?typeId=\"+data[dataList].typeId+\"' class='del'>编辑</a>&nbsp;\";\n\t\t\t\t\thtml += \"<a href='${ctx}/toQryType.action?typeId=\"+data[dataList].typeId+\"' class='del'>查看</a></td>\";\n\t\t\t\t\thtml += \"</tr>\";\n\t\t\t\t}\n\t\t\t\thtml += \"</tbody>\"; \n\t\t\t\thtml += \"</table>\";\n\t\t\t\thtml += \"</div>\"; \n\t\t        $(\"#myDiv\").html(\"\");\n\t\t        $(\"#myDiv\").html(html); \n\t\t    }\n\t\t});\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: false\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='typeId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddType.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/type-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\" value=\"${type.typeName }\" disabled=\"disabled\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\" value=\"${type.score }\" disabled=\"disabled\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\" disabled=\"disabled\">${type.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"returnList()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/type-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toTypePage.action\" class=\"clear\"\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addType.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/admin/type-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>更新题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t <input type=\"hidden\" name=\"typeId\" id=\"typeId\" maxlength=\"10\" value=\"${type.typeId }\"/>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\" value=\"${type.typeName }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\" value=\"${type.score }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\">${type.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toTypePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updType.action\"; \n\t$(\"form\").submit();\n}\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/base.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/baseinfo/left.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../baselist.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>\n</head>\n \n<body id=\"left_frame\">\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n \n \n<!-- begin1  -->\n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n        <div class=\"panel\">\n        <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/document_into.png\" /></div>\n        <div class=\"panel-header\">\n        <div class=\"panel-title\">基础代码管理</div>\n        <div class=\"panel-content\">\n\t\t\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"syscode/jSysCode.jsp\" target=\"main\" id=\"aa_1\" onclick=\"linkHighlighted(this)\">系统代码</a>\n\t\t\t\t\t</li>\t\t\t\t\t\n\t\t\t\t\t<li><a href=\"${ctx}/basicinfo/factory/list.action\" onclick=\"linkHighlighted(this)\" target=\"main\" id=\"aa_1\">厂家信息</a></li>\n\t\t\t</ul>\n        </div>\n        </div>\n    </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>  \n</div>\t  \n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/baseinfo/main.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title>模块介绍</title>\n  \t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/main.css\" media=\"all\"/>\n</head>\n\n<body>\n<form>\n<div class=\"textbox\"></div>\n\n\t<div class=\"modelDiv\">\n\n        <table class=\"modelTable\" cellspacing=\"1\">\n        \t<tr>\n        \t\t<td colspan=\"2\" class=\"modelTitle\">货运模块介绍</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">购销合同</td>\n        \t\t<td class=\"model_intro_right\">客户签单后，公司向厂家下达购销合同，包括货物的具体要求和交期。合同按不同厂家打印购销合同单，附件单独打印，由公司驻当地销售人员分发到各工厂。<br>\n\t\t\t\t归档：标识彻底完成的项目，方便统计。在报运时也不能在选这些合同。<br>\n\t\t\t\t</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">出货表</td>\n        \t\t<td class=\"model_intro_right\">根据合同和指定的船期月份，统计当月的出货情况。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">出口报运单</td>\n        \t\t<td class=\"model_intro_right\">根据购销合同制定出口商品报运单。报运时可以将多个购销合同形成一单报运；也可以只走部分货物。<br>\n        \t\t分批走货：合同可以多个一起报运; 而一个合同可以分多次走货; 根据合同和合同货物的走货状态可以查看合同的走货情况。\n        \t\t<!-- 修改走货状态：1)合同新增货物、修改货物 2)报运货物修改、删除货物、增补货物、删除报运 -->\n        \t\t</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">HOME装箱单</td>\n        \t\t<td class=\"model_intro_right\">根据出口报运单制定HOME装箱单，先制作HOME装箱单给客户看，客人同意，则直接制定相应装箱单；如有调整，则重新复制修改出口报运单，可能拆成多个报运。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">装箱单</td>\n        \t\t<td class=\"model_intro_right\">根据出口报运单制定装箱单，填写发票号、发票时间，以及客人等相关信息。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">委托书</td>\n        \t\t<td class=\"model_intro_right\">根据装箱制定海运或空运委托书。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">发票</td>\n        \t\t<td class=\"model_intro_right\">根据装箱制定发票。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\" nowrap>财务出口报运单</td>\n        \t\t<td class=\"model_intro_right\">根据报运制定财务出口报运单。<br></td>\n        \t</tr> \t\n\t\t\t\n\t\t\t<tfoot>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\" class=\"tableFooter\"></td>\n\t\t\t\t</tr>\n\t\t\t</tfoot>\n        </table>\n \n\t</div>\n</form>\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/baselist.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"base.jsp\"%>\n\n \t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/extreme/extremecomponents.css\" />\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/extreme/extremesite.css\" />"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/bases.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/base.css\" media=\"all\"/>\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/login.css\" media=\"all\"/>\n\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/jquery-1.10.1.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/home/fmain.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<html>\n<head>\n<title>陕西杰信商务综合管理平台</title>\n</head>\n<frameset rows=\"125,*\" name=\"topFrameset\" border=\"0\">\n\t<frame name=\"top_frame\" scrolling=\"no\"  target=\"middleFrameSet\" src=\"title.action\">\t\n\t<frameset cols=\"202,*\" height=\"100%\" name=\"middle\" frameborder=\"no\" border=\"0\" framespacing=\"0\">\n\t\t<frame name=\"leftFrame\" class=\"leftFrame\" target=\"main\" scrolling=\"no\" src=\"left.action\" />\n\t\t<frame name=\"main\" class=\"rightFrame\" src=\"main.action\" />\n\t</frameset>\n</frameset>\n\n<noframes>\n<body>\n    <p>此网页使用了框架，但您的浏览器不支持框架。</p>\n</body>\n</noframes>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/home/left.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n \n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/ajax/setFastMenu.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/pngfix_map.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/skin/default/js/toggle.js\"></script>\n \n\t\n    <script language=\"javascript\">\n    \t$().ready(function(){\n\t\t\t$(fastMenu).hide();\n\t\t\t//document.getElementById('aa_3').click();\t//默认打开我的留言板页面\n    \t});\n    \t\n    \tfunction showMenu( who ){\n    \t\tif(who==\"fastMenu\"){\n    \t\t\t$(fastMenu).show();\n    \t\t\t$(customerMenu).hide();\n    \t\t}else if(who==\"customerMenu\"){\n    \t\t\t$(customerMenu).show();\n    \t\t\t$(fastMenu).hide();\n    \t\t}\n    \t}\n    </script>\n \n    \n</head>\n \n<body id=\"left_frame\">\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n \n \n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n\t   <div class=\"panel\">\n\t       <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/user2.png\" /></div>\n\t       <div class=\"panel-header\">\n\t        <div class=\"panel-title\">个人工作台</div>\n\t        <div class=\"panel-content\">\n\t\t\t\t<ul>\n\t\t\t\t\t\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"olmsgList.jsp\" target=\"main\" id=\"aa_3\" onclick=\"linkHighlighted(this)\">我的留言板</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#\" onclick=\"linkHighlighted(this)\" id=\"aa_2\">系统使用反馈</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\n \n\t\t\t\t</ul>\n\t        </div>\n\t        \n\t       </div>\n\t   </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>\n</div>\n \n \n \n \n \n<div id=\"sidebar\" class=\"sidebar\">\t\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n \t    <div class=\"panel\">\n\t        <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/cubes.png\" /></div>\n\t        <div class=\"panel-header\">\n\t\t    \t<div class=\"panel-title\">我的常用功能</div>\n\t\t\t\t\t<div style=\"margin-top:5px;\"></div>\n\t\t\t\t\t<!-- 以上为永久固定栏目，以下为活动栏目 -->\n\t        <div style=\"border-bottom:1px dotted #cee1df;\"> \n\t         切换:<a href=\"#\" onmousemove=\"javascript:showMenu('fastMenu');\">快捷菜单</a>\n\t        /\n\t        <a href=\"#\" onmousemove=\"javascript:showMenu('customerMenu');\">自定义菜单</a>\n\t        </div>\n\t\t        \t<div id=\"fastMenu\">\n\t\t        \t<div class=\"panel-content\"></div><a href=\"#\" class=\"DelFastMenu\"><font color=\"gray\">清除常用功能列表</font></a>\n\t\t        \t</div>\n\t\t        \t\n\t\t        \t<div id=\"customerMenu\">\n\t\t        \t<div class=\"FastMenu\"><img src=\"${ctx}/skin/default/images/notice.gif\" style=\"margin-right:5px;\" border=\"0\" /><font color=\"gray\">您还没定义您的菜单</font></div>\n\t\t        \t</div>\n\t        </div>\n\t    </div>\n\t <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>    \n</div>\n \n \n<!-- begin1  -->\n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n    <div class=\"panel\">\n    \t<div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/businessman2.png\" /></div>\n        <div class=\"panel-header\">\n        <div class=\"panel-title\">\n\t\t用户设定\n        </div>\n        \n        <div class=\"panel-content\">\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\" id=\"aa_2\" onclick=\"linkHighlighted(this)\">个人信息修改</a>\n\t\t\t\t</li>\t\t\t\t\t\t\n\t\t\t</ul>\n        </div>\n    </div>\n    </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>\n</div>\n<!-- end1 -->\n \n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/home/olmsgList.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<html>\n<head>\n\t<title></title>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n<script type=\"text/javascript\" src=\"/components/jquery-ui/jquery-1.2.6.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script> \n<style> \n\t.curbody{ CURSOR: url(${ctx}/images/olmsg/shubiao.ani);background:url(${ctx}/images/olmsg/pic738x571.jpg); }\n\t.msgcontent{ width:218px;overflow:hidden;word-break:break-all;padding:10px;font-size:14px;color:#339966;font-family:Tahoma;line-height:180%; }\n\t.msgcontent p{ text-indent:0px;}\n\t.msgcontent ul( margin:0px;}\n\t.msgbackcontent{ width:218px;overflow:hidden;word-break:break-all;padding:10px;font-size:14px;color:#339966;font-family:Tahoma;line-height:180%; }\n\t.msgbackcontent p{ text-indent:0px;}\n\t.msgbackcontent ul( margin:0px;}\n\tli{ text-indent:0px;margin:0px;list-style:default; }\n</style>\n\t\n</head>\n<script language=\"javascript\"> \n//-- 控制层移动start of script -->\nvar Obj='';\nvar index=10000;//z-index;\nvar color='';\nvar str='';\ndocument.onmouseup=MUp\ndocument.onmousemove=MMove\n \nfunction MMove(){\n\tif(Obj!=''){\n\t\tdocument.all(Obj).style.left=event.x-pX;\n\t\tdocument.all(Obj).style.top=event.y-pY;\n\t}\n}\n \nfunction MUp(){\n\tif(Obj!=''){\n\t\tdocument.all(Obj).releaseCapture();\n\t\tObj='';\n\t}\n\tvar srcEle = event.srcElement;\n\t\n\tvar children = srcEle.children;\n\tif(children.length>0){\n\t\tchildren[1].value = \"1\";\t\t//isChange\n\t\tchildren[2].value = event.x-pX;\n\t\tchildren[3].value = event.y-pY;\n\t}\n}\n \nfunction MDown(objtd,id){\n\tObj=id\n\tdocument.all(Obj).setCapture()\n\tpX = event.x-document.all(Obj).style.pixelLeft;\n\tpY = event.y-document.all(Obj).style.pixelTop;\n}\n \n//-- 控制层移动end of script -->\n//获得焦点;\nfunction getFocus(obj)\n{\n       if(obj.style.zIndex!=index)\n       {\n               index = index + 2;\n               var idx = index;\n               obj.style.zIndex=idx;\n               //obj.nextSibling.style.zIndex=idx-1;\n       }\n}\n \n//针对未已阅的、未回复的、工作任务\nfunction msgrevoke( id ){\n\tif(confirm(\"是否确定要撤销此条信息?\")){\n\t\t//_Submit(\"/home/olmsgRevokeAction.do?flag=revoke&id=\"+id,null,\"撤销\");\n\t}\n}\n \n//需回复的留言\nfunction msgback( id ){\n\t//_Submit(\"/home/olmsgUpdateAction.do?flag=back&id=\"+id,null,\"回复\");\n}\n \nfunction msgupdate( id , flag ){\n\tif(flag==\"read\"){\n\t\tif(!confirm(\"是否确定已阅此条信息?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"accept\"){\n\t\tif(!confirm(\"是否确定接受此任务?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"fail\"){\n\t\tif(!confirm(\"是否确定此任务未完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"success\"){\n\t\tif(!confirm(\"是否确定此任务已完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"finished\"){\n\t\tif(!confirm(\"是否确定完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t//_Submit(\"/home/olmsgUpdateAction.do?flag=\"+flag+\"&id=\"+id,null,\"修改\");\n\t\n}\n \nfunction msgdel( id ){\n\tif(confirm(\"是否确定要删除此条信息?\")){\n\t\t//_Submit(\"/home/olmsgDeleteAction.do?delId=\"+id,null,\"删除\");\n\t}\n}\n \nfunction msgstate( id , flag ){\n\tif(flag==\"read\"){\n\t\tif(!confirm(\"是否确定已阅此条信息?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"accept\"){\n\t\tif(!confirm(\"是否确定接受此任务?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"fail\"){\n\t\tif(!confirm(\"是否确定此任务未完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"success\"){\n\t\tif(!confirm(\"是否确定此任务已完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"finished\"){\n\t\tif(!confirm(\"是否确定完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t//_Submit(\"/home/olmsgStateAction.do?flag=\"+flag+\"&delId=\"+id,null,\"已阅\");\n}\n \nfunction changRowColor(obj){\n\t//obj.removeAttribute(\"className\");\n\t//alert(obj.className);\n\t//obj.setAttribute(\"bgcolor\",\"#FFECB0\");\n\t//obj.sytle.backgroundColor = \"#FFECB0\";\n}\n \nfunction removeOverRowColor(obj){\n\t//alert(obj.getAttribute(\"style\"));\n}\n \nfunction killErrors() {\n\treturn true;\n}\n \nwindow.onerror = killErrors;\n</script>\n \n<body class=\"curbody\">\n \n<form name=\"form2\">\n<!-- 工具栏部分 ToolBar -->\n<div id=\"menubar\">\n<div id=\"middleMenubar\">\n<div id=\"innerMenubar\">\n    <div id=\"navMenubar\">\n<ul>\n \n<li id=\"new\"><a href=\"#\">新建</a></li>\n<li id=\"save\"><a href=\"#\" title=\"保存留言窗口的位置信息\">位置</a></li>\n \n<li id=\"stat\"><a href=\"#\">历史</a></li>\n \n</ul>\n    </div>\n</div>\n</div>\n</div>\n \n<logic:notEmpty name=\"olmsgList\">\n \n\t\n\t\t\n\t\t<div id='ff8080813d00613e013d0067909e0009' style='position:absolute;left:122px;top:97px;z-index:1001; height:164px;background:none;' onmousedown='getFocus(this)'>\n\t\t\t<table border=0 cellspacing=\"0\" cellpadding=\"0\" width=\"220\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;' onmousedown=\"MDown(this,'ff8080813d00613e013d0067909e0009')\" background=\"${ctx}/images/olmsg/C0FFE51.gif\" height=\"45\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"id\" class=\"input\" value=\"ff8080813d00613e013d0067909e0009\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"isChange\" class=\"input\" value=\"0\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posX\" class=\"input\" value=\"122\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posY\" class=\"input\" value=\"97\" />\n\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;white-space:nowrap;' width='100%' onmousedown=\"MDown('ff8080813d00613e013d0067909e0009')\" background=\"${ctx}/images/olmsg/C0FFE52.gif\" >\n\t\t\t\t\t\t<div style=\"float:left;width:130px;padding-left:7px;font-family:Tahoma;color:gray;font-style : oblique;\">\n\t\t\t\t\t\t\t2013-02-22 13:37\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"float:right;width:80px;text-align:right;padding-right:7px;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"编辑\" onclick=\"msgupdate('ff8080813d00613e013d0067909e0009','edit')\"><img src=\"${ctx}/images/olmsg/doc_edit.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"删除\" onclick=\"msgdel('ff8080813d00613e013d0067909e0009')\"><img src=\"${ctx}/images/olmsg/doc_del.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td background=\"${ctx}/images/olmsg/C0FFE52.gif\">\n\t\t\t\t\t<div class=\"msgcontent\">\n\t\t\t\t\t欢迎使用杰管理平台\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td id=\"tagBPic\" background=\"${ctx}/images/olmsg/C0FFE53.gif\" height=\"63\">\n\t\t\t\t\t\t<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td width=\"50\" align=\"center\">\n\t\t\t\t\t\t\t\t<img border=\"0\" src=\"${ctx}/images/olmsg/2.gif\">\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td style=\"text-align:right;padding-right:8px;\" nowrap>\n\t\t\t\t\t\t\t\t[备忘]\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t <!-- [回复] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<!-- [回执] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- [撤销原因] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<!-- state==99[完成] -->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\n\t\t\n\t\t<div id='ff8080813d00613e013d00681494000a' style='position:absolute;left:442px;top:91px;z-index:1002; height:164px;background:none;' onmousedown='getFocus(this)'>\n\t\t\t<table border=0 cellspacing=\"0\" cellpadding=\"0\" width=\"220\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;' onmousedown=\"MDown(this,'ff8080813d00613e013d00681494000a')\" background=\"${ctx}/images/olmsg/FFE7E81.gif\" height=\"45\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"id\" class=\"input\" value=\"ff8080813d00613e013d00681494000a\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"isChange\" class=\"input\" value=\"0\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posX\" class=\"input\" value=\"442\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posY\" class=\"input\" value=\"91\" />\n\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;white-space:nowrap;' width='100%' onmousedown=\"MDown('ff8080813d00613e013d00681494000a')\" background=\"${ctx}/images/olmsg/FFE7E82.gif\" >\n\t\t\t\t\t\t<div style=\"float:left;width:130px;padding-left:7px;font-family:Tahoma;color:gray;font-style : oblique;\">\n\t\t\t\t\t\t\t2013-02-22 13:37\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"float:right;width:80px;text-align:right;padding-right:7px;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"编辑\" onclick=\"msgupdate('ff8080813d00613e013d00681494000a','edit')\"><img src=\"${ctx}/images/olmsg/doc_edit.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"删除\" onclick=\"msgdel('ff8080813d00613e013d00681494000a')\"><img src=\"${ctx}/images/olmsg/doc_del.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td background=\"${ctx}/images/olmsg/FFE7E82.gif\">\n\t\t\t\t\t<div class=\"msgcontent\">\n\t\t\t\t\t本系统实现货运企业日常管理<br />\n包括合同、报运、装箱、委托、发票等业务\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td id=\"tagBPic\" background=\"${ctx}/images/olmsg/FFE7E83.gif\" height=\"63\">\n\t\t\t\t\t\t<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td width=\"50\" align=\"center\">\n\t\t\t\t\t\t\t\t<img border=\"0\" src=\"${ctx}/images/olmsg/0.gif\">\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td style=\"text-align:right;padding-right:8px;\" nowrap>\n\t\t\t\t\t\t\t\t[备忘]\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t <!-- [回复] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<!-- [回执] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- [撤销原因] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<!-- state==99[完成] -->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\n</logic:notEmpty>\n \n \n</form>\n</body>\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/home/title.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/fmt\" prefix=\"fmt\"%>\n<jsp:useBean id=\"now\" class=\"java.util.Date\" />\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n\n    <!-- 调用样式表 -->\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/title.css\" media=\"all\"/>\n\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>    \t\n\t<script language=\"javascript\" src=\"${ctx}/js/pngfix_map.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n    <!-- 调用外部 JavaScript 脚本语言 -->\n\t\n<script language=\"javascript\">\n\n\tfunction CustomTitle(){\n\t\tvar Me = document.getElementById('memos');\n\t\tvar Loin = document.getElementById('logins');\n\t\tvar Lout = document.getElementById('logout');\n\t\tMe.onmouseover = function(){document.getElementById('memo').style.background='url(${ctx}/skin/default/images/title/memo2.gif) no-repeat'};\n\t\tMe.onmouseout = function(){document.getElementById('memo').style.background='url(${ctx}/skin/default/images/title/memo.gif) no-repeat'};\n\t\t\n\t\tLoin.onmouseover = function(){document.getElementById('small_login').style.background='url(${ctx}/skin/default/images/title/small_login2.gif) no-repeat'};\n\t\tLoin.onmouseout = function(){document.getElementById('small_login').style.background='url(${ctx}/skin/default/images/title/small_login.gif) no-repeat'};\n\t\t\n\t\tLout.onmouseover = function(){document.getElementById('small_login_out').style.background='url(${ctx}/skin/default/images/title/login_out2.gif) no-repeat left -55px;'};\n\t\tLout.onmouseout = function(){document.getElementById('small_login_out').style.background='url(${ctx}/skin/default/images/title/login_out.gif) no-repeat'};\n\t}\n\t\n\tfunction linkHighlightMenu(obj){\n\t\tvar links=document.getElementsByTagName('span');\n\t\tfor(var i=0;i<links.length;i++){\n\t\t\tif(links[i].id.indexOf('topmenu')!=-1){\n\t\t\t\tlinks[i].style.background = 'url(\"${ctx}/skin/default/images/title/li_dot.gif1\") no-repeat right 8px';\n\t\t\t\tlinks[i].style.color = '';\n\t\t\t\tlinks[i].style.fontWeight  = '';\n\t\t\t\tlinks[i].style.borderTop = '';\n\t\t\t\tlinks[i].style.borderLeft = '';\n\t\t\t\tlinks[i].style.borderRight = '';\n\t\t\t\tlinks[i].style.padding = '';\n\t\t\t}\n\t\t}\n\t\tobj.style.background ='url(\"${ctx}/skin/default/images/title/button_bg.jpg\") no-repeat';\n\t\tobj.style.color = \"#fff\";                                                                                                                                                                                                                                                   \n\t\tobj.style.fontWeight  = 'bold';\n\t\tobj.style.padding= '6px 11x 5px 13px;';\n\t\tobj.blur();\t\t//去掉图片的焦点框,使界面看起来漂亮 updated by tony\n\t}\n\n\t//sendRequest('000001');\t\n\tvar y = -5; \t\t//个人信息栏初始Y坐标\n\tvar dy = -40; \t\t//显示后Y坐标\n\t\n\tfunction doLoginDiv(){\n\t\tShowLoginDiv();\n\t}\n\t\n\tfunction HideLoginDiv(){\n\t\t dy = dy - 5;\n\t\t MoveHideLoginDiv();\n\t}\t\n\tfunction MoveHideLoginDiv(){\n\t\tif( dy > -40){setTimeout(\"HideLoginDiv()\",10);}else{ y = -40; dy = -40;}\n\t\tdocument.getElementById(\"userInfo\").style.top = dy;\n\t\t\n\t}\n\tfunction ShowLoginDiv(){\n\t\t y = y + 5;\n\t\t MoveShowLoginDiv();\n\t}\t\n\tfunction MoveShowLoginDiv(){\t\t\t\n\t\t\tif( y < -5){setTimeout(\"ShowLoginDiv()\",10);}else{ dy = -5; y = -1 }\n\t\t\tdocument.getElementById(\"userInfo\").style.top = y;\n\t}\n\tfunction ShowFrameDiv(queryString){\n\t\t\treturn false;\t\t//暂时屏蔽\n\t\ttop.middle.switches.loading.style.display = 'block';\n\t//\ttop.middle.switches.note_iframe.location.href=\"../home/empmemo/empMemoExpressCreate.jsp\";\n\t\tsetTimeout(ShowFrameMain(queryString),10);\n\t}\n\tfunction ShowFrameMain(passValue){\n\t\t\t\n\t\t\tvar url = \"../home/doConsoleListAction.do\";\t//../home/empMemoCreateAction.do\n\t\t\tvar topFrame = top.middle.switches;\n\n\t\t\tdocument.getElementById('PositionFrame').style.display = \"block\";\n\t\t\ttop.middle.contents.left_frame.style.border = \"none\";\n\t\t\ttop.middle.contents.left_frame.style.overflow = \"hidden\";\n\t\t\t\n\t\t\ttopFrame.PositionFrame_main.style.display =\"block\";\n\t\t\ttopFrame.PositionFrame.style.display =\"block\";\n\t\t\ttopFrame.PositionFrame_notebook.style.display = 'block';\n\t\t\ttopFrame.PositionFrame_notebook2.style.display = 'none';\t\n\t\t\ttopFrame.PositionFrame_my_note.style.display = 'block';\n\t\t\t//topFrame.note_iframe.location.href=url;\n\t\t\tform1.action = url;\n\t\t\tform1.method = \"post\";\n\t\t\tform1.target = \"note_iframe\";\n//\t\t\talert(passValue);\n\t\t\tif(passValue){\n\t\t\t\tform1.innerHTML='<input type=\"hidden\"  name=\"passTitle\" value=\"' + passValue[0] + '\"/>';\n\t\t\t\tform1.innerHTML=form1.innerHTML + '<input type=\"hidden\"  name=\"passContent\" value=\"' +passValue[1]+ '\"/>';\n\t\t\t}\n\t\t\tform1.submit();\n\t\t\t\n\t\t\ttop.middle.contents.PositionFrame.style.display =\"block\";\n\t\t\ttopFrame.loading.style.display = 'none';\n\t\t\ttopFrame.PositionFrame_main.style.visibility = 'visible';\n\t\t\ttopFrame.visibility.style.display = 'block';\n\t}\n\t\n   \n\tfunction offset(place){\n\t\n\t\tvar mask = $('#mask');\n\t\tvar targetObj = $('#menuContent');\n\t\t\n\t\tvar maxOffset = targetObj.width()-mask.width();\n\t\t\n\t\tvar currLeft = targetObj.css('left');\n//\t\talert(maxOffset + \" \" + currLeft);\n\t\tvar currLeft = Number(currLeft.substring(0,currLeft.length-2));\n\t\tif(place==\"right\" && (0-currLeft) <= maxOffset){\n\t\t\ttargetObj.css('left', currLeft - 5);\n\t\t} else if(place==\"left\" && currLeft < 0){\n\t\t\t\ttargetObj.css('left', currLeft + 5);\n\t\t}\n\t\t\n\t}\n\tfunction periodOffset(thisObj, place){\n\t\tvar intervalId = window.setInterval(function(){offset(place)}, 1);\n\t\t$(thisObj).mouseout(function(){window.clearInterval(intervalId)});\n\t}\n\t\n\t\tfunction checkDirectionKey(){\n\t\t\tvar mask = $('#mask');\n\t\t\t\n\t\t\tvar bodyWidth = $('body').width();\n\t\t\t\n\t\t\t//alert(bodyWidth - 450);\n\t\t\tmask.width(bodyWidth - 250);\t//450\n\t\t\t//alert(mask.width());\n\t\t\tvar targetObj = $('#menuContent');\n\t\t\t\n\t\t\tvar maxOffset = targetObj.width()-mask.width();\n\t\t\t\n\t\t\tvar currLeft = targetObj.css('left');\n//\t\t\talert(maxOffset + \" \" + currLeft);\n\t\t\tvar currLeft = Number(currLeft.substring(0,currLeft.length-2));\n//\t\t\talert((0-currLeft) <= maxOffset);\n\t\t\tif(!(0-currLeft) <= maxOffset || currLeft < 0) {\n\t\t\t\t$(\"#rightKey\").show(\"slow\");\n\t\t\t\t$(\"#leftKey\").show(\"slow\");\n\t\t\t\tif(!isShow){\n\t\t\t\t\t$(\"#prompt_div\").show(\"slow\", function(){window.setTimeout(function(){$(\"#prompt_div\").hide(\"slow\")}, 10000);isShow = true;});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$(\"#rightKey\").hide();\n\t\t\t\t$(\"#leftKey\").hide();\n\t\t\t\t$(\"#prompt_div\").hide();\n\t\t\t}\n\t\t}\n\t\tvar isShow = false;\n\t\t$(function(){\n\t\t\twindow.onresize = checkDirectionKey;\n\t\t\t$(\"#rightKey\").hide();\n\t\t\t$(\"#leftKey\").hide();\n\t\t\t$(\"#prompt_div\").hide();\n\t\t\tcheckDirectionKey();\n\t\t});\n\t\t\n\t\tfunction logout(){\n\t\t\treturn formSubmit(\"${ctx}/.action\", \"_top\");\n\t\t}\n</script>\n\t\n</head>\n\n<body onSelectStart=\"return true\"><!-- 文档主题部分开始 -->\n\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n\t<div id=\"userInfo\" style=\"z-index:999;\" onclick=\"HideLoginDiv()\" title=\"点击关闭\">\n\t\t<img src=\"${ctx}/skin/default/images/title/avataronline.gif\" border=\"0\" style=\"margin-top:-1px;\"/>\n\t\t您好：<strong>${_CURRENT_USER.realName}</strong>&nbsp;&nbsp;|\n\t\t您所属单位：<strong title=\"${_CURRENT_USER.dept.deptNameFull}\">${_CURRENT_USER.dept.deptName}</strong>&nbsp;&nbsp;\n\t\t<img src=\"${ctx}/skin/default/images/title/close.gif\" border=\"0\" />\n\t</div>\n\n\t<a id=\"memos\"  style=\"cursor:pointer;\" href=\"${ctx}/home/welcome.do\" target=\"_top\" title=\"点击切换到系统首页\"><div id=\"memo\" class=\"memo\" title=\"点击切换到系统首页\"></div></a>\n\t<a id=\"logins\" style=\"cursor:pointer;\" onclick=\"doLoginDiv();\" title=\"点击显示您的登录信息\"><div id=\"small_login\" class=\"small_login\" title=\"点击显示您的登录信息\"></div></a>\n\t<a id=\"logout\" style=\"cursor:pointer;\" onclick=\"logout();\" target=\"_top\" title=\"点击退出系统\"><div id=\"small_login_out\" class=\"small_login_out\" title=\"点击退出系统\"></div></a>\n\n<div class=\"headerBg\">\n\t<div class=\"top_logo\">\n\t    <div class=\"navMenu\"  style=\"float:left;text-align:left;\">\n\t    \t\t<div class=\"titleDate\" style=\"float:left;\"><fmt:formatDate value=\"${now}\" pattern=\"yyyy年M月d日 E\" /> </div>\n\t    \t\t<div style=\"height:29px;\">\n\t\t    \t\t<span id=\"leftKey\"  onmouseover=\"periodOffset(this, 'left')\"><img src=\"${ctx}/skin/default/images/title/left_arrow.png\"/></span>\n\t\t\t    \t<div class=\"mavMeau_top\"></div>\n\t\t\t    \t<div id=\"mask\">\n\t\t\t    \t\t<div id=\"menuContent\"><span id=\"topmenu\"\nonclick=\"top.location.href='fmain.action';linkHighlightMenu(this);\">系统首页</span><span id=\"tm_separator\"></span><span id=\"topmenu\" \nonclick=\"top.leftFrame.location.href='cargoLeft.action';top.main.location.href='cargoMain.action';linkHighlightMenu(this);\">货运管理</span><span id=\"tm_separator\"></span><span id=\"topmenu\"\nonclick=\"top.leftFrame.location.href='baseinfoLeft.action';top.main.location.href='baseinfoMain.action';linkHighlightMenu(this);\">基础信息</span><span id=\"tm_separator\"></span><span id=\"topmenu\" \nonclick=\"top.leftFrame.location.href='/system_admin/left.jsp';top.main.location.href='/system_admin/main.jsp';;linkHighlightMenu(this);\">系统管理</span></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span id=\"rightKey\" onmouseover=\"periodOffset(this, 'right')\"><img src=\"${ctx}/skin/default/images/title/right_arrow.png\"/></span>\n\t\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<div id=\"prompt_div\"><img src=\"${ctx}/skin/default/images/title/prompt.png\"/><span style=\"position:absolute;top:2px;left:35px;z-index: 99999;width:100%;color:#FFFFFF;text-align: left; \">鼠标指向箭头位置<br/>可显示更多菜单项</span></div>\n\n<form name=\"form1\" style=\"display: none;\"></form>\t<%//备忘录等使用%>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/index1.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>陕西杰信商务综合管理平台</title>\n\t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/login.css\" media=\"all\" />\n</head>\n\n<body>\n<form id=\"login_main\" method=\"post\">\n<div id=\"warpbox\">\n\t<div class=\"main\">\n\t\t <div class=\"zck\">\n\t\t  <div class=\"zc\">\n\t\t\t\t<div class=\"zc_line\">用户名：\n\t\t\t\t<input type=\"text\" value=\"\" name=\"userName\" id=\"userName\"\n\t\t\t\t onkeyup=\"showGs(event)\"\n\t\t\t\t onFocus=\"this.select();\"\n\t\t\t\t autocomplete=\"off\" title=\"请您输入用户名\"/><div id=\"ts\" style=\"z-index:1;\"></div></div>\n\t\t\t    <div class=\"zc_line\">密　码：\n\t\t\t\t<input type=\"password\" value=\"\" name=\"password\" id=\"password\"\n\t\t\t\t onfocus=\"$('#ts').css('display','none');this.select();\"\n\t\t\t\t onKeyDown=\"javascript:if(event.keyCode==13){ submitFind(); }\"\n\t\t\t\t title=\"请您输入密码\"/></div>\n\t\t  </div>\n\t\t\t<div class=\"dl\">\n\t\t\t\t<input  class=\"loginImgOut\" value=\"\" type=\"button\" onclick=\"formSubmit('${ctx}/fmain.action','_self');\"\n\t\t\t\t  onmouseover=\"this.className='loginImgOver'\" \n\t\t\t\t  onmouseout=\"this.className='loginImgOut'\"\n\t\t\t\t/>\n\t\t\t\t<input class=\"resetImgOut\" value=\"\" type=\"button\"   \n\t\t\t\t  onmouseover=\"this.className='resetImgOver'\" \n\t\t\t\t  onmouseout=\"this.className='resetImgOut'\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"bqxx\" style=\"text-align:right;margin-top:0px;\">\n\t\t<a href=\"#\">系统帮助</a> | <a href=\"#\" onclick=\"bookmarkit();\">加入收藏</a>\n\t    </div>\n\n\t  \t<div class=\"mirro\"></div>\n\t\t\t<logic:notEmpty name=\"loginFailed\">\n\t\t\t\t<c:if test=\"${loginFailed==1}\">\n\t\t\t\t\t<c:set var=\"errorInfo\" value=\"用户名或密码错误, 请重新输入!\"/>\n\t\t\t\t</c:if>\n\t\t\t\t<c:if test=\"${loginFailed==2}\">\n\t\t\t\t\t<c:set var=\"errorInfo\" value=\"用户名不存在, 请重新输入!\"/>\n\t\t\t\t</c:if>\n\t\t\t\t<div class=\"erro\" id=\"erro\">\n\t\t\t\t\t<div class=\"erro_intro\">\n\t\t\t\t\t${errorInfo}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</logic:notEmpty>\n\t\t</div>\n</div>\n</form>\n<script type=\"text/JavaScript\">\n\tdocument.getElementById('login_main').userName.focus();\n</script>\n\n</body>\n</html>\n\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/about.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<script src=\"js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">Home</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"about.html\">About</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"typography.html\">Academics</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"services.html\">Services</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"contact.html\">Contact</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<form>\n\t\t\t\t\t\t\t\t\t<input class=\"sb-search-input\" placeholder=\"Enter your search term...\" type=\"search\" name=\"search\" id=\"search\">\n\t\t\t\t\t\t\t\t\t<input class=\"sb-search-submit\" type=\"submit\" value=\"\">\n\t\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\"> </span>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t\t\n\t\t\t\t\t<!-- search-scripts -->\n\t\t\t\t\t<script src=\"js/classie.js\"></script>\n\t\t\t\t\t<script src=\"js/uisearch.js\"></script>\n\t\t\t\t\t\t<script>\n\t\t\t\t\t\t\tnew UISearch( document.getElementById( 'sb-search' ) );\n\t\t\t\t\t\t</script>\n\t\t\t\t\t<!-- //search-scripts -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<div class=\"banner page-head\">\n</div>\n\n<div class=\"about-bottom-last\">\n\t<div class=\"container\">\n\t\t\t\t<div class=\"help-info\">\n\t\t\t\t\t<h3 class=\"tittle\">在线考试系统</h3>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"client-say-grids\">\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>界面简洁</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>操作简单</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>响应速度快</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>可扩展性高</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"></div>\n\t\t\t\t</div>\n\t</div>\n</div>\n<!-- //about -->\n<!-- footer -->\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<div class=\"footer-grids\">\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>简洁美观</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">SUMMER CAMPS</a></li>\n\t\t\t\t\t<li><a href=\"#\">CELEBRATIONS</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>联系地址</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">福州闽侯上街</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>联系电话</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">+86 183****1234</a></li>\n\t\t\t\t\t<li><a href=\"#\">0591 55555555</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>响应速度快</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">PRESENTATIONS</a></li>\n\t\t\t\t\t<li><a href=\"#\">SEMINARS</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\n\t\t</div>\n</p>\n\t</div>\n</div>\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/about.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n<!-- \t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n<div class=\"about-bottom-last\">\n\t<div class=\"container\">\n\t\t\t\t<div class=\"help-info\">\n\t\t\t\t\t<h3 class=\"tittle\">在线考试系统</h3>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"client-say-grids\">\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>界面简洁</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>操作简单</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>响应速度快</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-3 client-say-grid\">\n\t\t\t\t\t\t<p>At vero eos et accusamus \n\t\t\t\t\t\tet iusto odio dignissimos ducimus \n\t\t\t\t\t\tqui blanditiis praesentium voluptatum \n\t\t\t\t\t\tdeleniti atque corrupti quos dolores \n\t\t\t\t\t\tet quas molestias excepturi sint </p>\n\t\t\t\t\t\t<h4>可扩展性高</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"></div>\n\t\t\t\t</div>\n\t</div>\n</div>\n<!-- //about -->\n<!-- footer -->\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<div class=\"footer-grids\">\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>简洁美观</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">SUMMER CAMPS</a></li>\n\t\t\t\t\t<li><a href=\"#\">CELEBRATIONS</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>联系地址</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">福州闽侯上街</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>联系电话</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">+86 183****1234</a></li>\n\t\t\t\t\t<li><a href=\"#\">0591 55555555</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>响应速度快</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">PRESENTATIONS</a></li>\n\t\t\t\t\t<li><a href=\"#\">SEMINARS</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\n\t\t</div>\n</p>\n\t</div>\n</div>\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link rel=\"stylesheet\" href=\"css/swipebox.css\">\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<link href='#' rel='stylesheet' type='text/css'>\n<link href='#' rel='stylesheet' type='text/css'>\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<div class=\"banner\">\n\t<div class=\"container\">\n\t\t<script src=\"js/responsiveslides.min.js\"></script>\n\t\t\t<script>\n\t\t\t\t\t\t\t\t\t// You can also use \"$(window).load(function() {\"\n\t\t\t\t\t\t\t\t\t$(function () {\n\t\t\t\t\t\t\t\t\t // Slideshow 4\n\t\t\t\t\t\t\t\t\t$(\"#slider3\").responsiveSlides({\n\t\t\t\t\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\t\t\t\t\tpager: true,\n\t\t\t\t\t\t\t\t\t\tnav: false,\n\t\t\t\t\t\t\t\t\t\tspeed: 500,\n\t\t\t\t\t\t\t\t\t\tnamespace: \"callbacks\",\n\t\t\t\t\t\t\t\t\t\tbefore: function () {\n\t\t\t\t\t\t\t\t\t$('.events').append(\"<li>before event fired.</li>\");\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafter: function () {\n\t\t\t\t\t\t\t\t\t\t$('.events').append(\"<li>after event fired.</li>\");\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t</script>\n\n\t\t\t<div  id=\"top\" class=\"callbacks_container\">\n\t\t\t\t<ul class=\"rslides\" id=\"slider3\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t</div>\n</div>\n<!-- //banner -->\n<!-- banner-bottom -->\n<div class=\"banner-bottom\">\n\t<div class=\"container\">\n\t\t<div class=\"bottom-grids\">\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR INSTRUCTIONS</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR SUPPORT</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR GUARANTEE</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-star\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR RELIABILITY</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-thumbs-up\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- //banner-bottom -->\n<!-- team -->\n<div class=\"teachers\">\n\t<div class=\"container\">\n\t\t<div class=\"teach-head\">\n\t\t\t<h3>OUR TEACHERS</h3>\n\t\t\t<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis \n\t\t\tpraesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate.</p>\n\t\t</div>\n\t\t<div class=\"team-grids\">\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/1.png\" alt=\"\"/>\n\t\t\t\t\t<h3>FEDERICA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/2.png\" alt=\"\"/>\n\t\t\t\t\t<h3>PATRICK</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/3.png\" alt=\"\"/>\n\t\t\t\t\t<h3>THOMPSON</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/4.png\" alt=\"\"/>\n\t\t\t\t\t<h3>VICTORIA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- team -->\n<!-- our facilities -->\n<div class=\"facilities\">\n\t<div class=\"container\">\n\t\t<h3 class=\"tittle\">FACILITIES</h3> \t\n\t\t\t<script src=\"js/jquery.swipebox.min.js\"></script> \n\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\tjQuery(function($) {\n\t\t\t\t\t\t\t$(\".swipebox\").swipebox();\n\t\t\t\t\t\t});\n\t\t\t</script>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g1.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g1.jpg\" alt=\"\" >\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g2.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g2.jpg\" alt=\"\" >\n                    <div class=\"mask\">\n                         <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g3.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g3.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                         <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g4.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g4.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g5.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g5.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g6.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g6.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"clearfix\"></div>\n\t</div>\n</div>\n<!-- //our facilities -->\n<!-- features -->\n<div class=\"features\">\n\t<div class=\"container\">\n\t\t<h3 class=\"tittle\">FEATURES</h3> \n\t\t<div class=\"col-md-5 features-left\">\n\t\t\t<img src=\"images/f1.jpg\" alt=\"\"/>\n\t\t</div>\n\t\t<div class=\"col-md-7 features-right\">\n\t\t\t<h4>SPECIAL CARE ON STUDENTS</h4>\n\t\t\t\t<p> Neque porro quisquam est, qui dolorem ipsum \n\t\t\t\tquia dolor sit amet, consectetur, adipisci velit, \n\t\t\t\tsed quia non numquam eius modi tempora incidunt ut \n\t\t\t\tlabore et dolore magnam aliquam quaerat voluptatem. \n\t\t\t\tUt enim ad minima veniam, quis nostrum exercitationem \n\t\t\t\tullam corporis suscipit laboriosam, nisi ut aliquid \n\t\t\t\tex ea commodi consequatu.</p>\n\t\t\t\t<p>Temporibus autem quibusdam et aut officiis debitis aut rerum \n\t\t\t\tnecessitatibus saepe eveniet ut et voluptates repudiandae sint et \n\t\t\t\tmolestiae non recusandae. Itaque earum rerum veniam, quis nostrum exercitationem \n\t\t\t\tullam corporis suscipit laboriosam, nisi ut aliquid \n\t\t\t\tex ea commodi consequatu.</p>\n\n\t\t</div>\n\t\t<div class=\"clearfix\"></div>\n\t</div>\n</div>\n<!-- //features -->\n<!-- footer -->\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/index.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){\n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/swipebox.css\">\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\t\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n<!-- \t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"banner\">\n\t<div class=\"container\">\n\t\t<script src=\"${ctx}/js/responsiveslides.min.js\"></script>\n\t\t\t<script>\n\t\t\t\t$(function () {\n\t\t\t\t\t$(\"#slider3\").responsiveSlides({\n\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\tpager: true,\n\t\t\t\t\t\tnav: false,\n\t\t\t\t\t\tspeed: 500,\n\t\t\t\t\t\tnamespace: \"callbacks\",\n\t\t\t\t\t\tbefore: function () {\n\t\t\t\t\t\t\t$('.events').append(\"<li>before event fired.</li>\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tafter: function () {\n\t\t\t\t\t\t\t$('.events').append(\"<li>after event fired.</li>\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t</script>\n\n\t\t\t<div  id=\"top\" class=\"callbacks_container\">\n\t\t\t\t<ul class=\"rslides\" id=\"slider3\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t</div>\n</div>\n<!-- //banner -->\n<!-- banner-bottom -->\n<div class=\"banner-bottom\">\n\t<div class=\"container\">\n\t\t<div class=\"bottom-grids\">\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR INSTRUCTIONS</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR SUPPORT</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR GUARANTEE</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-star\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR RELIABILITY</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-thumbs-up\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- //banner-bottom -->\n<!-- team -->\n<div class=\"teachers\">\n\t<div class=\"container\">\n\t\t<div class=\"teach-head\">\n\t\t\t<h3>OUR TEACHERS</h3>\n\t\t\t<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis \n\t\t\tpraesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate.</p>\n\t\t</div>\n\t\t<div class=\"team-grids\">\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/1.png\" alt=\"\"/>\n\t\t\t\t\t<h3>FEDERICA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/2.png\" alt=\"\"/>\n\t\t\t\t\t<h3>PATRICK</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/3.png\" alt=\"\"/>\n\t\t\t\t\t<h3>THOMPSON</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/4.png\" alt=\"\"/>\n\t\t\t\t\t<h3>VICTORIA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t/*\n\t\tvar defaults = {\n\t\tcontainerID: 'toTop', // fading element id\n\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\tscrollSpeed: 1200,\n\t\teasingType: 'linear' \n\t\t};\n\t*/\t\t\t\t\t\t\t\t\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/login.html",
    "content": "\n<!DOCTYPE html>\n<html lang=\"en\" class=\"no-js\">\n\n    <head>\n\n        <meta charset=\"utf-8\">\n        <title>Fullscreen Login</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <meta name=\"description\" content=\"\">\n        <meta name=\"author\" content=\"\">\n\n        <!-- CSS -->\n        <link rel=\"stylesheet\" href=\"assets/css/reset.css\">\n        <link rel=\"stylesheet\" href=\"assets/css/supersized.css\">\n        <link rel=\"stylesheet\" href=\"assets/css/userlogin.css\">\n\n        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->\n        <!--[if lt IE 9]>\n            <script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script>\n        <![endif]-->\n\n    </head>\n\n    <body>\n\n        <div class=\"page-container\">\n            <h1>Login</h1>\n            <form action=\"\" method=\"post\">\n                <input type=\"text\" name=\"username\" class=\"username\" placeholder=\"Username\">\n                <input type=\"password\" name=\"password\" class=\"password\" placeholder=\"Password\">\n                <button type=\"submit\">登录</button>\n                <div class=\"error\"><span>+</span></div>\n            </form>\n            <div class=\"connect\">\n\n            </div>\n        </div>\n        <div align=\"center\">没有账号？ <a href=\"http://www.cssmoban.com/\" target=\"_self\" title=\"模板之家\">注册</a></div>\n\n        <!-- Javascript -->\n        <script src=\"assets/js/jquery-1.8.2.min.js\"></script>\n        <script src=\"assets/js/supersized.3.2.7.min.js\"></script>\n        <script src=\"assets/js/supersized-init.js\"></script>\n        <script src=\"assets/js/scripts.js\"></script>\n\n    </body>\n\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/login.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\" class=\"no-js\">\n    <head>\n\n        <meta charset=\"utf-8\">\n        <title>在线考试系统</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <meta name=\"description\" content=\"\">\n        <meta name=\"author\" content=\"\">\n\n        <!-- CSS -->\n        <link rel=\"stylesheet\" href=\"${ctx}/css/reset.css\">\n        <link rel=\"stylesheet\" href=\"${ctx}/css/supersized.css\">\n        <link rel=\"stylesheet\" href=\"${ctx}/css/userlogin.css\">\n\n        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->\n        <!--[if lt IE 9]>\n            <script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script>\n        <![endif]-->\n\n    </head>\n\n    <body>\n\n        <div class=\"page-container\">\n            <h1>用户登录</h1>\n            <form action=\"${ctx}/user/toIndex.action\" method=\"post\" name=\"myform\" id=\"myform\">\n                <input type=\"text\" name=\"userId\" id=\"userId\" class=\"username\" placeholder=\"用户账号\">\n                <input type=\"password\" name=\"userPwd\" id=\"userPwd\" class=\"password\" placeholder=\"登录密码\">\n               <%--  <span>${message }</span> --%>\n                <button type=\"button\" onclick=\"login()\">登录</button>\n                <div class=\"error\"><span>${message }</span></div>\n            </form>\n            <div class=\"connect\">\n\n            </div>\n        </div>\n        <div align=\"center\">没有账号？ <a href=\"${ctx}/toRegistPage.action\" target=\"_self\" title=\"模板之家\">注册</a></div>\n\n        <!-- Javascript -->\n        <script src=\"${ctx}/js/jquery-1.8.2.min.js\"></script>\n        <script src=\"${ctx}/js/supersized.3.2.7.min.js\"></script>\n        <script src=\"${ctx}/js/supersized-init.js\"></script>\n        <script src=\"${ctx}/js/scripts.js\"></script>\n        <script type=\"text/javascript\">\n        \tfunction login(){\n        \t\tvar userId = $(\"#userId\").val();\n        \t\tvar userPwd = $(\"#userPwd\").val();\n        \t\t$.post(\"${ctx}/checkPwd.action\", { userId:userId, userPwd:userPwd },function(data){\n    \t\t\t\tif(data.errorNo != \"0\"){\n    \t\t\t\t\talert(data.errorInfo);\n    \t\t\t\t}else{\n    \t\t\t\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/user/toIndex.action\"; \n    \t\t\t\t\t$(\"form\").submit();\n    \t\t\t\t}\n        \t\t},\"json\");\n        \t}\n        </script>\n\n    </body>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/mybooks.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"login.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">高三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三下</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">语文</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">数学</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">英语</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>学期：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">期中</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">期末</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">选择题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">填空题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">判断题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">简答题</span></a>\n\t\t\t  </h5>\n\t\t\t</div>\t  \n\t\t\t<div class=\"progress\">\n\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t</div>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t</div>\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/mybooks.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n<!-- \t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"grade()\">${grade.gradeName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<c:forEach items=\"${course}\" var=\"course\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"course()\">${course.courseName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<c:forEach items=\"${type}\" var=\"type\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"type()\">${type.typeName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t</div>\t  \n\t\t\t<div class=\"progress\">\n\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t</div>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t\n\t\t\t<c:forEach items=\"${requestScope.errorBook }\" var=\"errorBook\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${errorBook.question.quesName }</h4></p>\n\t\t\t\t<c:if test=\"${errorBook.question.typeId==1}\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionA }</font></br>\n\t\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionB }</font></br>\n\t\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionC }</font></br>\n\t\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionD }</font></br>\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p>\n\t\t\t\t\t</div>\n\t\t\t\t</c:if>\n\t\t\t\t<c:if test=\"${errorBook.question.typeId==4}\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p>\n\t\t\t\t\t</div>\n\t\t\t\t</c:if>\n\t\t\t\t<c:if test=\"${errorBook.question.typeId==5}\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p>\n\t\t\t\t\t</div>\n\t\t\t\t</c:if>\n\t\t\t\t\n\t\t\t</c:forEach>\n\t</div>\n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/mypaper.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\t  \n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/mypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n              \t<c:forEach items=\"${paper}\" var=\"paper\">\n              \t  <tr>\n\t                 <td><a href=\"${ctx}/qryPaperDetail.action?paperId=${paper.paperId}&userId=${paper.userId}\"><font color=\"blue\">${paper.paperName}</font></a></td>\n\t                 <td>${paper.courseId}</td>\n\t                 <td>${paper.beginTime}</td>\n\t\t\t\t  \t <td>${paper.endTime}</td>\n\t\t\t\t\t <td>${paper.score}</td>\n\t\t\t\t\t <td><font color=\"blue\">\n\t\t\t\t\t \t<c:if test=\"${paper.paperstate==0}\">准备考试</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==1}\">尚未开始</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==2}\">考试结束</c:if>\n\t\t\t\t\t </td>\n\t              </tr>\n\t\t\t\t</c:forEach>\n              </tbody>\n            </table>\n\t</div>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/onlinecheck.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tvar startFalg = true;\n\t\t\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\t\t\tfunction timer(intDiff){\n\t\t\t\twindow.setInterval(function(){\n\t\t\t\tvar day=0,\n\t\t\t\t\thour=1,\n\t\t\t\t\tminute=30,\n\t\t\t\t\tsecond=0;//时间默认值\t\t\n\t\t\t\tif(intDiff > 0){\n\t\t\t\t\tstartFalg =false;\n\t\t\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t\t\t}else{\n\t\t\t\t\tstartFalg = true;\n\t\t\t\t}\n\t\t\t\tif (minute <= 9) minute = '0' + minute;\n\t\t\t\tif (second <= 9) second = '0' + second;\n\t\t\t\t$('#day_show').html(day+\"天\");\n\t\t\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\t\t\tintDiff--;\n\t\t\t\t}, 1000);\n\t\t\t} \n\t\t\tfunction doStart(){\n\t\t\t\tif(startFalg)\n\t\t\t\t\ttimer(intDiff);\n\t\t\t}\t\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\t\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">高三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三下</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">语文</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">数学</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">英语</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>学期：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">期中</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">期末</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">选择题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">填空题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">判断题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">简答题</span></a>\n\t\t\t  </h5>\t\t\t \t\t\t  \n\t\t\t</div>\t  \n\t\t\t<div class=\"time-item\">\n\t\t\t\t<table class=\"table\">\n\t\t\t\t  <thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span id=\"day_show\">0天</span>\n\t\t\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\">考试中...</span></a>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t  </thead>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/paperdetail.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%  \n\t java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");  \n\t java.util.Date currentTime = new java.util.Date();//得到当前系统时间  \n\t String str_date1 = formatter.format(currentTime); //将日期时间格式化  \n\t String str_date2 = currentTime.toString(); //将Date型日期时间转换成字符串形式  \n\t request.setAttribute(\"starttime \", str_date1);\n %> \n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n\tvar beginTime =\"\";\n\tvar startFalg = true;\n\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\tfunction timer(intDiff){\n\t\twindow.setInterval(function(){\n\t\tvar day=0,\n\t\t\thour=1,\n\t\t\tminute=30,\n\t\t\tsecond=0;//时间默认值\t\t\n\t\tif(intDiff > 0){\n\t\t\tstartFalg =false;\n\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t}else{\n\t\t\tstartFalg = true;\n\t\t}\n\t\tif (minute <= 9) minute = '0' + minute;\n\t\tif (second <= 9) second = '0' + second;\n\t\t$('#day_show').html(day+\"天\");\n\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\tintDiff--;\n\t\t}, 1000);\n\t} \n\tfunction doStart(){\n\t\tbeginTime= CurentTime();\n\t\t$(\"#sp_start\").html(\"考试中.....\");\n\t\tif(startFalg)\n\t\t\ttimer(intDiff);\n\t}\t\n\t\n\tfunction CurentTime()  \n    {   \n        var now = new Date();  \n        var year = now.getFullYear();       //年  \n        var month = now.getMonth() + 1;     //月  \n        var day = now.getDate();            //日  \n        var hh = now.getHours();            //时  \n        var mm = now.getMinutes();          //分  \n        var ss = now.getSeconds();           //秒  \n          \n        var clock = year + \"-\";  \n        if(month < 10)  \n            clock += \"0\";  \n        clock += month + \"-\";  \n        if(day < 10)  \n            clock += \"0\";  \n        clock += day + \" \";  \n        if(hh < 10)  \n            clock += \"0\";  \n        clock += hh + \":\";  \n        if (mm < 10) clock += '0';   \n        clock += mm + \":\";   \n        if (ss < 10) clock += '0';   \n        clock += ss;   \n        return(clock);   \n} \n\t\n\tfunction getNowFormatDate() {\n\t    var date = new Date();\n\t    var seperator1 = \"-\";\n\t    var seperator2 = \":\";\n\t    var month = date.getMonth() + 1;\n\t    var strDate = date.getDate();\n\t    if (month >= 1 && month <= 9) {\n\t        month = \"0\" + month;\n\t    }\n\t    if (strDate >= 0 && strDate <= 9) {\n\t        strDate = \"0\" + strDate;\n\t    }\n\t    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate\n\t            + \" \" + date.getHours() + seperator2 + date.getMinutes()\n\t            + seperator2 + date.getSeconds();\n\t    return currentdate;\n\t}\n\t\n\tfunction submitPaper(){\n\t\tvar paperName = $(\"#paperName\").val();\n\t\tvar paperId = $(\"#paperId\").val();\n\t\tvar score = $('#myForm').serialize();\n\t\t$.post(\"${ctx}/dealPaper.action\", \n\t\t\t\t{\n\t\t\t\t\t\"beginTime\":beginTime,\n\t\t\t\t\t\"paperName\":paperName,\n\t\t\t\t\t\"paperId\":paperId,\n\t\t\t\t\t\"score\":score,\n\t\t\t\t},\n\t\tfunction(data){\n\t\t\talert(data.errorInfo);\n\t\t\tdocument.myForm.attributes[\"action\"].value = \"${ctx}/toScoreQry.action?userId=${user.userId}\"; \n\t\t\t$(\"form\").submit(); \n\t\t},\"json\");\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\t<div class=\"time-item\">\n\t\t<table class=\"table\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t\t<th>\n\t\t\t\t\t<!-- <span id=\"day_show\">0天</span> -->\n\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t</th>\n\t\t\t\t<th>\n\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\" id=\"sp_start\">开始考试</span></a>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t</table>\n\t</div>\n\t <form action=\"${ctx}/dealPaper.action\" method=\"post\" id=\"myForm\" name=\"myForm\">\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t \t\t<!-- 试卷名称 -->\n\t\t\t<h2 class=\"bars\" align=\"center\"><font color=\"blue\">${paper.paperName }</font></h2>\n\t \t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${selectQ }</font></h4>\n\t\t\t</div>\n\t\t\t<input type=\"hidden\" name=\"paperId\" id=\"paperId\" value=\"${paper.paperId }\"/>\n\t\t\t<c:forEach items=\"${selList}\" var=\"selType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${selType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"A\" checked=\"checked\"/><font size=\"4\">${selType.optionA }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"B\"/><font size=\"4\">${selType.optionB }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"C\"/><font size=\"4\">${selType.optionC }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"D\"/><font size=\"4\">${selType.optionD }</font></br>\n<%--  \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${inpQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${inpList }\" var=\"inpType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${inpType.quesName }</h4></p><br/>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">答案：</span>\n\t\t\t\t  <input type=\"text\" name=\"${inpType.questionId }\" id=\"${inpType.questionId }\" \n\t\t\t\t  \t\tclass=\"form-control\" placeholder=\"请在此输入答案...\">\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${desQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${desList }\" var=\"desType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${desType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">答案：</span>\n\t\t\t\t  <input type=\"text\" name=\"${desType.questionId }\" id=\"${desType.questionId }\" \n\t\t\t\t  \t\tclass=\"form-control\" placeholder=\"请在此输入答案...\">\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t<div class=\"grid_3 grid_5\" align=\"center\">\n\t\t  <h3 class=\"t-button\">\n\t\t\t<a href=\"javascript:;\" onclick=\"submitPaper()\"><span class=\"label label-success\">提交试卷</span></a>&nbsp;&nbsp;\n\t\t\t<a href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\"><span class=\"label label-info\">返回上一页</span></a>\n\t\t  </h3>\n      </div>\n\t</div>\n</form>\t  \n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/qrypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%  \n\t java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");  \n\t java.util.Date currentTime = new java.util.Date();//得到当前系统时间  \n\t String str_date1 = formatter.format(currentTime); //将日期时间格式化  \n\t String str_date2 = currentTime.toString(); //将Date型日期时间转换成字符串形式  \n\t request.setAttribute(\"starttime \", str_date1);\n %> \n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tvar beginTime =\"\";\n\tvar startFalg = true;\n\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\tfunction timer(intDiff){\n\t\twindow.setInterval(function(){\n\t\tvar day=0,\n\t\t\thour=1,\n\t\t\tminute=30,\n\t\t\tsecond=0;//时间默认值\t\t\n\t\tif(intDiff > 0){\n\t\t\tstartFalg =false;\n\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t}else{\n\t\t\tstartFalg = true;\n\t\t}\n\t\tif (minute <= 9) minute = '0' + minute;\n\t\tif (second <= 9) second = '0' + second;\n\t\t$('#day_show').html(day+\"天\");\n\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\tintDiff--;\n\t\t}, 1000);\n\t} \n\tfunction doStart(){\n\t\tbeginTime= getNowFormatDate();\n\t\t$(\"#sp_start\").html(\"考试中.....\");\n\t\tif(startFalg)\n\t\t\ttimer(intDiff);\n\t}\t\n\t\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n\t\n\tfunction getNowFormatDate() {\n\t    var date = new Date();\n\t    var seperator1 = \"-\";\n\t    var seperator2 = \":\";\n\t    var month = date.getMonth() + 1;\n\t    var strDate = date.getDate();\n\t    if (month >= 1 && month <= 9) {\n\t        month = \"0\" + month;\n\t    }\n\t    if (strDate >= 0 && strDate <= 9) {\n\t        strDate = \"0\" + strDate;\n\t    }\n\t    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate\n\t            + \" \" + date.getHours() + seperator2 + date.getMinutes()\n\t            + seperator2 + date.getSeconds();\n\t    return currentdate;\n\t}\n\t\n\tfunction submitPaper(){\n\t\t/* var beginTime = getNowFormatDate(); */\n\t\tvar paperName = $(\"#paperName\").val();\n\t\tvar paperId = $(\"#paperId\").val();\n\t\tvar score = $('#myForm').serialize();\n\t\t$.post(\"${ctx}/dealPaper.action\", \n\t\t\t\t{\n\t\t\t\t\t\"beginTime\":beginTime,\n\t\t\t\t\t\"paperName\":paperName,\n\t\t\t\t\t\"paperId\":paperId,\n\t\t\t\t\t\"score\":score,\n\t\t\t\t},\n\t\tfunction(data){\n\t\t\talert(data.errorInfo);\n\t\t\tdocument.myForm.attributes[\"action\"].value = \"${ctx}/toScoreQry.action?userId=${user.userId}\"; \n\t\t\t$(\"form\").submit(); \n\t\t},\"json\");\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n<!-- \t<div class=\"time-item\">\n\t\t<table class=\"table\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t\t<th>\n\t\t\t\t\t<span id=\"day_show\">0天</span>\n\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t</th>\n\t\t\t\t<th>\n\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\" id=\"sp_start\">开始考试</span></a>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t</table>\n\t</div> -->\n\t <form action=\"${ctx}/dealPaper.action\" method=\"post\" id=\"myForm\" name=\"myForm\">\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t \t\t<!-- 试卷名称 -->\n\t\t\t<h2 class=\"bars\" align=\"center\"><font color=\"blue\">${paper.paperName }</font></h2>\n\t \t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${selectQ }</font></h4>\n\t\t\t</div>\n\t\t\t<input type=\"hidden\" name=\"paperId\" id=\"paperId\" value=\"${paper.paperId }\"/>\n\t\t\t<c:forEach items=\"${selList}\" var=\"selType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${selType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"A\" checked=\"checked\"/><font size=\"4\">${selType.optionA }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"B\"/><font size=\"4\">${selType.optionB }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"C\"/><font size=\"4\">${selType.optionC }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"D\"/><font size=\"4\">${selType.optionD }</font></br>\n<%--  \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${inpQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${inpList }\" var=\"inpType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${inpType.quesName }</h4></p><br/>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">答案：</span>\n\t\t\t\t  <input type=\"text\" name=\"${inpType.questionId }\" id=\"${inpType.questionId }\" \n\t\t\t\t  \t\tclass=\"form-control\" placeholder=\"请在此输入答案...\">\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${desQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${desList }\" var=\"desType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${desType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionA }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionB }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionC }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionD }</font></br>\n<%-- \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t<div class=\"grid_3 grid_5\" align=\"center\">\n\t\t  <h3 class=\"t-button\">\n\t\t\t<!-- <a href=\"javascript:;\" onclick=\"submitPaper()\"><span class=\"label label-success\">提交试卷</span></a>&nbsp;&nbsp; -->\n\t\t\t<a href=\"${ctx}/toScoreQry.action?userId=${user.userId}\"><span class=\"label label-info\">返回上一页</span></a>\n\t\t  </h3>\n      </div>\n\t</div>\n</form>\t  \n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/regist.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\">\n\taddEventListener(\"load\", function() {\n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<script src=\"js/modernizr.custom.js\"></script>\n<script src=\"js/bootstrap.js\"></script>\n<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<div class=\"typrography\">\n    <div class=\"container\">\n\t\t<h3 class=\"bars\">用户注册</h3>\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"password\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"basic-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号：\" aria-describedby=\"basic-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">登录账号</span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t\t</div>\n\t\t<div class=\"input-group input-group-lg\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group input-group-sm\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon3\">\n\t\t</div>\n\t\t<p>我已经有一个账户，我要 <code>登录</code></p>\n\t</div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/regist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\" class=\"no-js\">\n<head>\n<meta charset=\"utf-8\">\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta name=\"description\" content=\"\">\n<meta name=\"author\" content=\"\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/reset.css\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/supersized.css\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/userlogin.css\">\n<script src=\"${ctx}/js/jquery-1.8.2.min.js\"></script>\n<script src=\"${ctx}/js/supersized.3.2.7.min.js\"></script>\n<script src=\"${ctx}/js/supersized-init.js\"></script>\n<script src=\"${ctx}/js/scripts.js\"></script>\n<script type=\"text/javascript\">\n\tfunction regist(){\n\t\tvar Pwd = $(\"#Pwd\").val();\n\t\tvar userPwd =$(\"#userPwd\").val();\n\t\tif(Pwd ==\"\"){\n\t\t\talert(\"登录密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(userPwd ==\"\"){\n\t\t\talert(\"确认密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(Pwd!=userPwd){\n\t\t\talert(\"两次密码不一致，请重新输入！\");\n\t\t\treturn;\n\t\t}\n\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addUserInfo.action\"; \n\t\t$(\"form\").submit();\n\t}\n\t\n\tfunction checkUserId(){\n\t\tvar userId = $(\"#userId\").val();\n\t\tvar tipInfo = $(\"#tipInfo\").val();\n\t\tif(userId == \"\"){\n\t\t\t$(\"#tipInfo\").html(\"请输入账号\");\n\t\t\t$(\"#userId\").focus();\n\t\t\treturn;\n\t\t}\n\t \t$.ajax({\n\t        type: \"post\",\n\t        url: \"${ctx}/admin/userRegist.action\",\n\t        data: {userId:userId},\n\t        dataType: \"json\",\n\t        success: function(data){\n\t        \t$(\"#tipInfo\").html(data.errorInfo);\n\t        }\n\t    });\n\t}\n\t\n\tfunction checkPwd(){\n\t\tvar Pwd = $(\"#Pwd\").val();\n\t\tvar userPwd =$(\"#userPwd\").val();\n\t\tif(Pwd ==\"\"){\n\t\t\talert(\"登录密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(userPwd ==\"\"){\n\t\t\talert(\"确认密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(Pwd!=userPwd){\n\t\t\talert(\"两次密码不一致，请重新输入！\");\n\t\t\treturn;\n\t\t}\n\t\t\n\t}\n\t\n</script>\n</head>\n<body>\n    <div class=\"page-container\">\n        <h1>用户注册</h1>\n        <form action=\"${ctx}/user/toIndex.action\" method=\"post\" name=\"myform\" id=\"myform\">\n            <input type=\"text\" name=\"userId\" id=\"userId\" class=\"username\" placeholder=\"用户账号\" onblur=\"checkUserId()\"><br><span style=\"color: red\" id=\"tipInfo\">${message }</span><br>\n            <input type=\"text\" name=\"userName\" id=\"userName\" placeholder=\"用户昵称\">\n            <input type=\"password\" name=\"Pwd\" id=\"Pwd\" class=\"password\" placeholder=\"登录密码\">\n            <input type=\"password\" name=\"userPwd\" id=\"userPwd\" class=\"password\" placeholder=\"确认密码\" onblur=\"checkPwd()\"><br/>\n            <c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t\t<input type=\"radio\" checked=\"checked\" name=\"grade\" value=\"${grade.gradeId }\" \n\t\t\t\t\tclass=\"radio\" />${grade.gradeName } &nbsp;\n\t\t\t</c:forEach>\n            <input type=\"text\" name=\"email\" id=\"email\" class=\"username\" placeholder=\"邮箱\">\n            <input type=\"text\" name=\"telphone\" id=\"telphone\" placeholder=\"联系电话\">\n            <input type=\"text\" name=\"address\" id=\"address\" placeholder=\"联系地址\">\n            <button type=\"button\" onclick=\"regist()\">注册</button>\n            <div class=\"error\"><span>${message }</span></div>\n        </form>\n        <div class=\"connect\"></div>\n    </div>\n    <div align=\"center\">我已经有一个账号，我要 <a href=\"${ctx}/toLogin.action\" target=\"_self\">登录</a></div>\n</body>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/regist1.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\">\n\taddEventListener(\"load\", function() {\n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<div class=\"typrography\">\n    <div class=\"container\">\n\t\t<h3 class=\"bars\">用户注册</h3>\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"password\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"basic-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号：\" aria-describedby=\"basic-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">登录账号</span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t\t</div>\n\t\t<div class=\"input-group input-group-lg\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group input-group-sm\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon3\">\n\t\t</div>\n\t\t<p>我已经有一个账户，我要 <code>登录</code></p>\n\t</div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/scorequery.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<link href='#' rel='stylesheet' type='text/css'>\n<link href='#' rel='stylesheet' type='text/css'>\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n\n<!-- //banner -->\n<!-- about -->\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n\t\t\t  <tr>\n                  <td><a href=\"#\"><font color=\"blue\">高三（上）语文（期中）试题</font></a></td>\n                  <td>语文</td>\n                  <td>2017-03-14 10:00:00</td>\n\t\t\t\t  <td>2017-03-14 11:23:00</td>\n\t\t\t\t  <td>60</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）数学（期中）试题</font></a></td>\n                  <td>数学</td>\n                  <td>2017-03-15 10:00:00</td>\n\t\t\t\t  <td>2017-03-15 11:23:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）语文（期中）试题</font></a></td>\n                  <td>语文</td>\n                  <td>2017-03-16 10:00:00</td>\n\t\t\t\t  <td>2017-03-16 11:30:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）英语（期中）试题</font></a></td>\n                  <td>英语</td>\n                  <td>2017-03-17 10:00:00</td>\n\t\t\t\t  <td>2017-03-17 11:30:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）英语（期末）试题</font></a></td>\n                  <td>语文</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）数学（期末）试题</font></a></td>\n                  <td>数学</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）语文（期末）试题</font></a></td>\n                  <td>英语</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n              </tbody>\n            </table>\n\t</div>\n</div>\n\n<!-- //about -->\n<!-- footer\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<p>Copyright &copy; 2015.Company name All rights reserved.More Templates </p>\n\t</div>\n</div>\n\n-->\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/scorequery.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n              \t<c:forEach items=\"${paper}\" var=\"paper\">\n              \t  <tr>\n\t                 <td><a href=\"${ctx}/qrypaper.action?paperId=${paper.paperId}&userId=${paper.userId}\"><font color=\"blue\">${paper.paperName}</font></a></td>\n\t                 <td>${paper.courseId}</td>\n\t                 <td>${paper.beginTime}</td>\n\t\t\t\t  \t <td>${paper.endTime}</td>\n\t\t\t\t\t <td>${paper.score}</td>\n\t\t\t\t\t <td><font color=\"blue\">\n\t\t\t\t\t \t<c:if test=\"${paper.paperstate==0}\">准备考试</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==1}\">尚未开始</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==2}\">考试结束</c:if>\n\t\t\t\t\t </td>\n\t              </tr>\n\t\t\t\t</c:forEach>\n              </tbody>\n            </table>\n\t</div>\n</div>\n<script src=\"js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/tomypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\t <div class=\"container\">\t  \n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/userinfo.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<div class=\"banner page-head\">\n</div>\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\n\t\t\n\t <div class=\"grid_3 grid_4\">\n\t\t     <h3 class=\"bars\">Headings</h3>\n\t\t     <div class=\"bs-example\">\n\t\t\t\t <table class=\"table\">\n\t\t\t\t  <tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h1 id=\"h1.-bootstrap-heading\">h1. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h1.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h1></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 36px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h2 id=\"h2.-bootstrap-heading\">h2. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h2.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h2></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 30px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h3 id=\"h3.-bootstrap-heading\">h3. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h3.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h3></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 24px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h4 id=\"h4.-bootstrap-heading\">h4. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h4.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h4></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 18px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h5 id=\"h5.-bootstrap-heading\">h5. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h5.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h5></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 14px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h6>h6. Bootstrap heading</h6></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 12px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t  </tbody>\n\t\t\t\t </table>\n\t\t\t </div>\n\t      </div>  \n\t\t  <div class=\"grid_3 grid_5\">\n\t\t\t<h3 class=\"bars\">Buttons</h3>\n\t\t\t \t  <h1 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h1>\n\t\t\t  <h2 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h2>\n\t\t\t  <h3 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h3>\n\t\t\t  <h4 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h4>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h5>\n\t\t\t  <h6 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h6>\n\t      </div>\n\t\t  <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Progress Bars</h3>\n\t\t\t  <div class=\"tab-content\">\n\t\t\t\t <div class=\"tab-pane active\" id=\"domprogress\">\n\t\t\t\t\t <div class=\"progress\">    \n\t\t\t\t\t      <div class=\"progress-bar progress-bar-primary\" style=\"width: 20%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Info with <code>progress-bar-info</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">    \n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-info\" style=\"width: 60%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Success with <code>progress-bar-success</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 30%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Warning with <code>progress-bar-warning</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 70%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Danger with <code>progress-bar-danger</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 50%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Inverse with <code>progress-bar-inverse</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-inverse\" style=\"width: 40%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Inverse with <code>progress-bar-inverse</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t\t\t </div>\n\t\t\t\t   </div>\n\t\t\t   </div>\n\t\t   </div>\n\t\t   \n\t\t   <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Pagination</h3>\n\t\t\t <div class=\"col-md-6\">\n\t\t\t\t  <nav>\n\t\t\t\t  <ul class=\"pagination pagination-lg\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t  </nav>\n\t\t\t\t  <nav>\n\t\t\t\t  <ul class=\"pagination\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t </nav>\n\t\t\t\t <nav>\n\t\t\t\t   <ul class=\"pagination pagination-sm\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t </nav>\t\t\t\t \n\t\t\t </div>\n\t\t\t <div class=\"col-md-6\">\n\t\t\t\t\t<ul class=\"pagination pagination-lg\">\n\t\t\t\t\t\t\t\t\t<li class=\"disabled\"><a href=\"#\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t\t\t\t\t<li class=\"active\"><a href=\"#\">1</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t<nav>\n\t\t\t\t  <ul class=\"pagination\">\n\t\t\t\t\t<li class=\"disabled\"><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li class=\"active\"><a href=\"#\">1 <span class=\"sr-only\">(current)</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t </ul>\n\t\t\t   </nav>\n\t\t\t\t <ul class=\"pagination pagination-sm\">\n\t\t\t\t\t<li class=\"disabled\"><a href=\"#\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li class=\"active\"><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t   <div class=\"clearfix\"> </div>\n\t\t </div>\n\t\t <div class=\"grid_3 grid_5\">\n\t\t\t\t<h3 class=\"bars\">Breadcrumbs</h3>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li class=\"active\">Home</li>\n\t\t\t\t</ol>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t\t<li class=\"active\">Library</li>\n\t\t\t\t</ol>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t\t<li><a href=\"#\">Library</a></li>\n\t\t\t\t\t<li class=\"active\">Data</li>\n\t\t\t\t</ol>\n\t\t\t</div>\n\n\t   <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Badges</h3>\n\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t<p>Add modifier classes to change the appearance of a badge.</p>\n\t\t\t\t\t  <table class=\"table table-bordered\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>Classes</th>\n\t\t\t\t\t\t\t\t<th>Badges</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>No modifiers</td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge\">42</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-primary</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-primary\">1</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-success</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-success\">22</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-info</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-info\">30</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-warning</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-warning\">412</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-danger</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-danger\">999</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t  </table>                    \n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t  <p>Easily highlight new or unread items with the <code>.badge</code> class</p>\n\t\t\t\t\t<div class=\"list-group list-group-alternate\"> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">201</span> <i class=\"ti ti-email\"></i> Inbox </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-primary\">5021</span> <i class=\"ti ti-eye\"></i> Profile visits </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">14</span> <i class=\"ti ti-headphone-alt\"></i> Call </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">20</span> <i class=\"ti ti-comments\"></i> Messages </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-warning\">14</span> <i class=\"ti ti-bookmark\"></i> Bookmarks </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-danger\">30</span> <i class=\"ti ti-bell\"></i> Notifications </a> \n\t\t\t\t\t</div>\n\t\t\t   </div>\n\t\t\t   <div class=\"clearfix\"> </div>\n\t\t\t </div>\n\t\t\t <div class=\"grid_3 grid_5\">\n\t\t\t\t <h3 class=\"bars\">Tabs</h3>\n\t\t\t\t   <div class=\"bs-example bs-example-tabs\" role=\"tabpanel\" data-example-id=\"togglable-tabs\">\n\t\t\t<ul id=\"myTab\" class=\"nav nav-tabs\" role=\"tablist\">\n\t\t\t  <li role=\"presentation\" class=\"active\"><a href=\"#home\" id=\"home-tab\" role=\"tab\" data-toggle=\"tab\" aria-controls=\"home\" aria-expanded=\"true\">Home</a></li>\n\t\t\t  <li role=\"presentation\"><a href=\"#profile\" role=\"tab\" id=\"profile-tab\" data-toggle=\"tab\" aria-controls=\"profile\">Profile</a></li>\n\t\t\t  <li role=\"presentation\" class=\"dropdown\">\n\t\t\t\t<a href=\"#\" id=\"myTabDrop1\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" aria-controls=\"myTabDrop1-contents\">Dropdown <span class=\"caret\"></span></a>\n\t\t\t\t<ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"myTabDrop1\" id=\"myTabDrop1-contents\">\n\t\t\t\t  <li><a href=\"#dropdown1\" tabindex=\"-1\" role=\"tab\" id=\"dropdown1-tab\" data-toggle=\"tab\" aria-controls=\"dropdown1\">@fat</a></li>\n\t\t\t\t  <li><a href=\"#dropdown2\" tabindex=\"-1\" role=\"tab\" id=\"dropdown2-tab\" data-toggle=\"tab\" aria-controls=\"dropdown2\">@mdo</a></li>\n\t\t\t\t</ul>\n\t\t\t  </li>\n\t\t\t</ul>\n\t\t\t<div id=\"myTabContent\" class=\"tab-content\">\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade in active\" id=\"home\" aria-labelledby=\"home-tab\">\n\t\t\t\t<p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"profile\" aria-labelledby=\"profile-tab\">\n\t\t\t\t<p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"dropdown1\" aria-labelledby=\"dropdown1-tab\">\n\t\t\t\t<p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"dropdown2\" aria-labelledby=\"dropdown2-tab\">\n\t\t\t\t<p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t\t\t  </div>\n\t\t\t</div>\n\t\t   </div>\n\t\t  </div>\n\n  <h3 class=\"bars\">Unordered List</h3>\n\t\t<ul class=\"list-group\">\n\t\t  <li class=\"list-group-item\">Cras justo odio</li>\n\t\t  <li class=\"list-group-item\">Dapibus ac facilisis in</li>\n\t\t  <li class=\"list-group-item\">Morbi leo risus</li>\n\t\t  <li class=\"list-group-item\">Porta ac consectetur ac</li>\n\t\t  <li class=\"list-group-item\">Vestibulum at eros</li>\n\t\t</ul>\n  <h3 class=\"bars\">Ordered List</h3>\n\t\t<ol>\n\t\t\t<li class=\"list-group-item1\">Cras justo odio</li>\n\t\t\t<li class=\"list-group-item1\">Dapibus ac facilisis in</li>\n\t\t\t<li class=\"list-group-item1\">Morbi leo risus</li>\n\t\t\t<li class=\"list-group-item1\">Porta ac consectetur ac</li>\n\t\t\t<li class=\"list-group-item1\">Vestibulum at eros</li>\n\t\t</ol>\n<h3 class=\"bars\">Forms</h3>\n<div class=\"input-group\">\n  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n</div>\n\n<div class=\"input-group\">\n  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n</div>\n\n<div class=\"input-group\">\n  <span class=\"input-group-addon\">$</span>\n  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n  <span class=\"input-group-addon\">.00</span>\n</div>\n<div class=\"input-group input-group-lg\">\n  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n</div>\n\n<div class=\"input-group\">\n  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n</div>\n\n<div class=\"input-group input-group-sm\">\n  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n</div>\n\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-addon\">\n        <input type=\"checkbox\" aria-label=\"...\">\n      </span>\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <span class=\"input-group-addon\">\n        <input type=\"radio\" aria-label=\"...\">\n      </span>\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n\n\t\t<section id=\"tables\">\n          <div class=\"page-header\">\n            <h3>Tables</h3>\n          </div>\n\n          <h2>Default styles</h2>\n          <p>For basic stylinglight padding and only horizontal add the base class <code>.table</code> to any <code>&lt;table&gt;</code>.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td>Larry</td>\n                  <td>the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n\t<hr class=\"bs-docs-separator\">\n          <p>Add any of the following classes to the <code>.table</code> base class.</p>\n          <p>Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-striped\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td>Larry</td>\n                  <td>the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <p>Add borders and rounded corners to the table.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td rowspan=\"2\">1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@getbootstrap</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td colspan=\"2\">Larry the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <p>Enable a hover state on table rows within a <code>&lt;tbody&gt;</code>.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-hover\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td colspan=\"2\">Larry the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n\t\t</section>\n\t</div>\n</div>\n\n<!--//typo-->\n\n<!-- footer -->\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<div class=\"footer-grids\">\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>高效</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">组卷快</a></li>\n\t\t\t\t\t<li><a href=\"#\">评分快</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>简洁</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">界面美观</a></li>\n\t\t\t\t\t<li><a href=\"#\">操作简单</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>方便</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">流程简单</a></li>\n\t\t\t\t\t<li><a href=\"#\">一站式体验</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>准确</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">考点清晰</a></li>\n\t\t\t\t\t<li><a href=\"#\">评卷准确</a></li>\n\t\t\t\t\t<li><a href=\"#\">错误率低</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t\t<p>Copyright &copy; 2015.Company name All rights reserved.More Templates </p>\n\t</div>\n</div>\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/pages/user/userinfo.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toAbout.action\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"container\">\n\t<form action=\"${ctx}/updateUserInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n\t<div class=\"bs-example bs-example-tabs\" role=\"tabpanel\" data-example-id=\"togglable-tabs\">\n\t\t<ul id=\"myTab\" class=\"nav nav-tabs\" role=\"tablist\">\n\t\t  <li role=\"presentation\" class=\"active\"><a href=\"#home\" id=\"home-tab\" role=\"tab\" data-toggle=\"tab\" aria-controls=\"home\" aria-expanded=\"true\" onclick=\"userInfo()\">个人信息</a></li>\n\t\t  <li role=\"presentation\"><a href=\"#profile\" role=\"tab\" id=\"profile-tab\" data-toggle=\"tab\" aria-controls=\"profile\" onclick=\"updatePwd()\">修改密码</a></li>\n\t\t</ul>\n\t\t<div id=\"myTabContent\" class=\"tab-content\">\n\t\t  <div role=\"tabpanel\" class=\"tab-pane fade in active\" id=\"home\" aria-labelledby=\"home-tab\">\n\t\t  \t<input type=\"hidden\" id=\"userState\" name=\"userState\" value=\"${user.userState }\"/>\n\t\t  \t<input type=\"hidden\" id=\"userType\" name=\"userType\" value=\"${user.userType }\"/>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">用户账号：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"userId\" name=\"userId\" value=\"${user.userId }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">用户昵称：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"userName\" name=\"userName\" value=\"${user.userName }\"/>\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;级：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"grade\" name=\"grade\" value=\"${user.grade }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">常用邮箱：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\"\n\t\t\t  \t\tid=\"email\" name=\"email\" value=\"${user.email }\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">联系电话：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"telephone\" name=\"telephone\" value=\"${user.telephone }\">\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">家庭地址：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\"\n\t\t\t  \t\tid=\"address\" name=\"address\" value=\"${user.address }\">\n\t\t\t</div>\n\t\t  </div>\n\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"profile\" aria-labelledby=\"profile-tab\">\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">原&nbsp;密&nbsp;码&nbsp;：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\" name=\"userPwd\" id=\"userPwd\"\n\t\t\t  \t\tvalue=\"${user.userPwd }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">新&nbsp;密&nbsp;码&nbsp;：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\"\n\t\t\t  \t\tid=\"pwd\" name=\"pwd\" value=\"\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">重复密码：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\"\n\t\t\t  \t\tid=\"newPwd\" name=\"newPwd\" value=\"\">\n\t\t\t</div>\n\t\t</div>\n\t </div>\n\t</form>\n\t<h3 class=\"t-button\">\n\t\t<a href=\"javascript:;\"><span class=\"label label-success\" onclick=\"update()\">&nbsp;更&nbsp;新&nbsp;</span></a>\n\t\t<a href=\"${ctx}/user/toIndex.action\"><span class=\"label label-info\">返回首页</span></a>\n\t</h3>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n\t\n\tfunction update(){\n\t\tvar pwd = $(\"#pwd\").val();\n\t\tvar newPwd = $(\"#newPwd\").val();\n\t\tif(pwd!= newPwd){\n\t\t\talert(\"两次密码不一致，请重新输入!\");\n\t\t\treturn;\n\t\t}\n\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updateUserInfo.action\"; \n\t\t$(\"form\").submit();\n\t}\n\t\n\t//用户信息tab\n\tfunction userInfo(){\n\t\tdocument.getElementById(\"myform\").reset(); \n\t}\n\t\n\t//密码tab\n\tfunction updatePwd(){\n\t\tdocument.getElementById(\"myform\").reset(); \n\t}\n\t\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/WEB-INF/web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n\txsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd\"\n\tid=\"WebApp_ID\" version=\"3.0\">\n\t<display-name>Check</display-name>\n\t<!-- 配置编码过滤器 -->\n\t<filter>\n\t\t<filter-name>encodingFilter</filter-name>\n\t\t<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n\t\t<init-param>\n\t\t\t<param-name>encoding</param-name>\n\t\t\t<param-value>UTF-8</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>forceEncoding</param-name>\n\t\t\t<param-value>true</param-value>\n\t\t</init-param>\n\t</filter>\n\t<filter-mapping>\n\t\t<filter-name>encodingFilter</filter-name>\n\t\t<url-pattern>/*</url-pattern>\n\t</filter-mapping>\n\t\n\t<!-- spring整合 -->\n\t<context-param>\n\t\t<param-name>contextConfigLocation</param-name>\n\t\t<param-value>classpath:beans.xml</param-value>\n\t</context-param>\n\t<listener>\n\t\t<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n\t</listener>\n\n\t<!-- 加载springMVC servlet -->\n\t<servlet>\n\t\t<servlet-name>spingmvc</servlet-name>\n\t\t<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n\t\t<init-param>\n\t\t\t<param-name>contextConfigLocation</param-name>\n\t\t\t<param-value>classpath:springmvc-servlet.xml</param-value>\n\t\t</init-param>\n\t</servlet>\n\t<servlet-mapping>\n\t\t<servlet-name>spingmvc</servlet-name>\n\t\t<url-pattern>*.action</url-pattern>\n\t</servlet-mapping>\n</web-app>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/amcharts_key.txt",
    "content": "AMCHART-LNKS-1966-6679-1965-1082"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/amcolumn_data.txt",
    "content": "USA;4.2;3.5\nUK;3.1;1.7\nCanada;2.9;2.8\nJapan;2.3;2.6\nFrance;2.1;1.4\nBrazil;4.9;2.6\nRussia;7.2;6.4\nIndia;7.4;8.0\nChina;10.1;9.9  \n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/amcolumn_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!-- <message bg_color=\"#BBBB00\" text_color=\"#FFFFFF\"><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"100\">1950</value>\n\t\t<value xid=\"101\">1951</value>\n\t\t<value xid=\"102\">1952</value>\n\t\t<value xid=\"103\">1953</value>\n\t\t<value xid=\"104\">1954</value>\n\t\t<value xid=\"105\">1955</value>\n\t\t<value xid=\"106\">1956</value>\n\t\t<value xid=\"107\">1957</value>\n\t\t<value xid=\"108\">1958</value>\n\t\t<value xid=\"109\">1959</value>\n\t\t<value xid=\"110\">1960</value>\n\t\t<value xid=\"111\">1961</value>\n\t\t<value xid=\"112\">1962</value>\n\t\t<value xid=\"113\">1963</value>\n\t\t<value xid=\"114\">1964</value>\n\t\t<value xid=\"115\">1965</value>\n\t\t<value xid=\"116\">1966</value>\n\t\t<value xid=\"117\">1967</value>\n\t\t<value xid=\"118\">1968</value>\n\t\t<value xid=\"119\">1969</value>\n\t\t<value xid=\"120\">1970</value>\n\t\t<value xid=\"121\">1971</value>\n\t\t<value xid=\"122\">1972</value>\n\t\t<value xid=\"123\">1973</value>\n\t\t<value xid=\"124\">1974</value>\n\t\t<value xid=\"125\">1975</value>\n\t\t<value xid=\"126\">1976</value>\n\t\t<value xid=\"127\">1977</value>\n\t\t<value xid=\"128\">1978</value>\n\t\t<value xid=\"129\">1979</value>\n\t\t<value xid=\"130\">1980</value>\n\t\t<value xid=\"131\">1981</value>\n\t\t<value xid=\"132\">1982</value>\n\t\t<value xid=\"133\">1983</value>\n\t\t<value xid=\"134\">1984</value>\n\t\t<value xid=\"135\">1985</value>\n\t\t<value xid=\"136\">1986</value>\n\t\t<value xid=\"137\">1987</value>\n\t\t<value xid=\"138\">1988</value>\n\t\t<value xid=\"139\">1989</value>\n\t\t<value xid=\"140\">1990</value>\n\t\t<value xid=\"141\">1991</value>\n\t\t<value xid=\"142\">1992</value>\n\t\t<value xid=\"143\">1993</value>\n\t\t<value xid=\"144\">1994</value>\n\t\t<value xid=\"145\">1995</value>\n\t\t<value xid=\"146\">1996</value>\n\t\t<value xid=\"147\">1997</value>\n\t\t<value xid=\"148\">1998</value>\n\t\t<value xid=\"149\">1999</value>\n\t\t<value xid=\"150\">2000</value>\n\t\t<value xid=\"151\">2001</value>\n\t\t<value xid=\"152\">2002</value>\n\t\t<value xid=\"153\">2003</value>\n\t\t<value xid=\"154\">2004</value>\n\t\t<value xid=\"155\">2005</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"100\" color=\"#318DBD\">-0.307</value>\n\t\t\t<value xid=\"101\" color=\"#318DBD\">-0.168</value>\n\t\t\t<value xid=\"102\" color=\"#318DBD\">-0.073</value>\n\t\t\t<value xid=\"103\" color=\"#318DBD\">-0.027</value>\n\t\t\t<value xid=\"104\" color=\"#318DBD\">-0.251</value>\n\t\t\t<value xid=\"105\" color=\"#318DBD\">-0.281</value>\n\t\t\t<value xid=\"106\" color=\"#318DBD\">-0.348</value>\n\t\t\t<value xid=\"107\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"108\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"109\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"110\" color=\"#318DBD\">-0.124</value>\n\t\t\t<value xid=\"111\" color=\"#318DBD\">-0.024</value>\n\t\t\t<value xid=\"112\" color=\"#318DBD\">-0.022</value>\n\t\t\t<value xid=\"113\">0.000</value>\n\t\t\t<value xid=\"114\" color=\"#318DBD\">-0.296</value>\n\t\t\t<value xid=\"115\" color=\"#318DBD\">-0.217</value>\n\t\t\t<value xid=\"116\" color=\"#318DBD\">-0.147</value>\n\t\t\t<value xid=\"117\" color=\"#318DBD\">-0.150</value>\n\t\t\t<value xid=\"118\" color=\"#318DBD\">-0.160</value>\n\t\t\t<value xid=\"119\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"120\" color=\"#318DBD\">-0.068</value>\n\t\t\t<value xid=\"121\" color=\"#318DBD\">-0.190</value>\n\t\t\t<value xid=\"122\" color=\"#318DBD\">-0.056</value>\n\t\t\t<value xid=\"123\">0.077</value>\n\t\t\t<value xid=\"124\" color=\"#318DBD\">-0.213</value>\n\t\t\t<value xid=\"125\" color=\"#318DBD\">-0.170</value>\n\t\t\t<value xid=\"126\" color=\"#318DBD\">-0.254</value>\n\t\t\t<value xid=\"127\">0.019</value>\n\t\t\t<value xid=\"128\" color=\"#318DBD\">-0.063</value>\n\t\t\t<value xid=\"129\">0.050</value>\n\t\t\t<value xid=\"130\">0.077</value>\n\t\t\t<value xid=\"131\">0.120</value>\n\t\t\t<value xid=\"132\">0.011</value>\n\t\t\t<value xid=\"133\">0.177</value>\n\t\t\t<value xid=\"134\" color=\"#318DBD\">-0.021</value>\n\t\t\t<value xid=\"135\" color=\"#318DBD\">-0.037</value>\n\t\t\t<value xid=\"136\">0.030</value>\n\t\t\t<value xid=\"137\">0.179</value>\n\t\t\t<value xid=\"138\">0.180</value>\n\t\t\t<value xid=\"139\">0.104</value>\n\t\t\t<value xid=\"140\">0.255</value>\n\t\t\t<value xid=\"141\">0.210</value>\n\t\t\t<value xid=\"142\">0.065</value>\n\t\t\t<value xid=\"143\">0.110</value>\n\t\t\t<value xid=\"144\">0.172</value>\n\t\t\t<value xid=\"145\">0.269</value>\n\t\t\t<value xid=\"146\">0.141</value>\n\t\t\t<value xid=\"147\">0.353</value>\n\t\t\t<value xid=\"148\">0.548</value>\n\t\t\t<value xid=\"149\">0.298</value>\n\t\t\t<value xid=\"150\">0.267</value>\n\t\t\t<value xid=\"151\">0.411</value>\n\t\t\t<value xid=\"152\">0.462</value>\n\t\t\t<value xid=\"153\">0.470</value>\n\t\t\t<value xid=\"154\">0.445</value>\n\t\t\t<value xid=\"155\">0.470</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"100\">-0.171</value>\n\t\t\t<value xid=\"101\">-0.175</value>\n\t\t\t<value xid=\"102\">-0.176</value>\n\t\t\t<value xid=\"103\">-0.174</value>\n\t\t\t<value xid=\"104\">-0.169</value>\n\t\t\t<value xid=\"105\">-0.162</value>\n\t\t\t<value xid=\"106\">-0.151</value>\n\t\t\t<value xid=\"107\">-0.139</value>\n\t\t\t<value xid=\"108\">-0.125</value>\n\t\t\t<value xid=\"109\">-0.114</value>\n\t\t\t<value xid=\"110\">-0.106</value>\n\t\t\t<value xid=\"111\">-0.104</value>\n\t\t\t<value xid=\"112\">-0.108</value>\n\t\t\t<value xid=\"113\">-0.114</value>\n\t\t\t<value xid=\"114\">-0.120</value>\n\t\t\t<value xid=\"115\">-0.125</value>\n\t\t\t<value xid=\"116\">-0.127</value>\n\t\t\t<value xid=\"117\">-0.125</value>\n\t\t\t<value xid=\"118\">-0.120</value>\n\t\t\t<value xid=\"119\">-0.114</value>\n\t\t\t<value xid=\"120\">-0.108</value>\n\t\t\t<value xid=\"121\">-0.104</value>\n\t\t\t<value xid=\"122\">-0.100</value>\n\t\t\t<value xid=\"123\">-0.097</value>\n\t\t\t<value xid=\"124\">-0.091</value>\n\t\t\t<value xid=\"125\">-0.082</value>\n\t\t\t<value xid=\"126\">-0.068</value>\n\t\t\t<value xid=\"127\">-0.050</value>\n\t\t\t<value xid=\"128\">-0.028</value>\n\t\t\t<value xid=\"129\">-0.006</value>\n\t\t\t<value xid=\"130\">0.015</value>\n\t\t\t<value xid=\"131\">0.032</value>\n\t\t\t<value xid=\"132\">0.046</value>\n\t\t\t<value xid=\"133\">0.058</value>\n\t\t\t<value xid=\"134\">0.069</value>\n\t\t\t<value xid=\"135\">0.081</value>\n\t\t\t<value xid=\"136\">0.094</value>\n\t\t\t<value xid=\"137\">0.108</value>\n\t\t\t<value xid=\"138\">0.123</value>\n\t\t\t<value xid=\"139\">0.137</value>\n\t\t\t<value xid=\"140\">0.150</value>\n\t\t\t<value xid=\"141\">0.163</value>\n\t\t\t<value xid=\"142\">0.178</value>\n\t\t\t<value xid=\"143\">0.195</value>\n\t\t\t<value xid=\"144\">0.216</value>\n\t\t\t<value xid=\"145\">0.241</value>\n\t\t\t<value xid=\"146\">0.268</value>\n\t\t\t<value xid=\"147\">0.296</value>\n\t\t\t<value xid=\"148\">0.323</value>\n\t\t\t<value xid=\"149\">0.348</value>\n\t\t\t<value xid=\"150\">0.370</value>\n\t\t\t<value xid=\"151\">0.389</value>\n\t\t\t<value xid=\"152\">0.404</value>\n\t\t\t<value xid=\"153\">0.415</value>\n\t\t\t<value xid=\"154\">0.422</value>\n\t\t\t<value xid=\"155\">0.426</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/amcolumn_data333.txt",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!-- <message bg_color=\"#BBBB00\" text_color=\"#FFFFFF\"><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"100\">1950</value>\n\t\t<value xid=\"101\">1951</value>\n\t\t<value xid=\"102\">1952</value>\n\t\t<value xid=\"103\">1953</value>\n\t\t<value xid=\"104\">1954</value>\n\t\t<value xid=\"105\">1955</value>\n\t\t<value xid=\"106\">1956</value>\n\t\t<value xid=\"107\">1957</value>\n\t\t<value xid=\"108\">1958</value>\n\t\t<value xid=\"109\">1959</value>\n\t\t<value xid=\"110\">1960</value>\n\t\t<value xid=\"111\">1961</value>\n\t\t<value xid=\"112\">1962</value>\n\t\t<value xid=\"113\">1963</value>\n\t\t<value xid=\"114\">1964</value>\n\t\t<value xid=\"115\">1965</value>\n\t\t<value xid=\"116\">1966</value>\n\t\t<value xid=\"117\">1967</value>\n\t\t<value xid=\"118\">1968</value>\n\t\t<value xid=\"119\">1969</value>\n\t\t<value xid=\"120\">1970</value>\n\t\t<value xid=\"121\">1971</value>\n\t\t<value xid=\"122\">1972</value>\n\t\t<value xid=\"123\">1973</value>\n\t\t<value xid=\"124\">1974</value>\n\t\t<value xid=\"125\">1975</value>\n\t\t<value xid=\"126\">1976</value>\n\t\t<value xid=\"127\">1977</value>\n\t\t<value xid=\"128\">1978</value>\n\t\t<value xid=\"129\">1979</value>\n\t\t<value xid=\"130\">1980</value>\n\t\t<value xid=\"131\">1981</value>\n\t\t<value xid=\"132\">1982</value>\n\t\t<value xid=\"133\">1983</value>\n\t\t<value xid=\"134\">1984</value>\n\t\t<value xid=\"135\">1985</value>\n\t\t<value xid=\"136\">1986</value>\n\t\t<value xid=\"137\">1987</value>\n\t\t<value xid=\"138\">1988</value>\n\t\t<value xid=\"139\">1989</value>\n\t\t<value xid=\"140\">1990</value>\n\t\t<value xid=\"141\">1991</value>\n\t\t<value xid=\"142\">1992</value>\n\t\t<value xid=\"143\">1993</value>\n\t\t<value xid=\"144\">1994</value>\n\t\t<value xid=\"145\">1995</value>\n\t\t<value xid=\"146\">1996</value>\n\t\t<value xid=\"147\">1997</value>\n\t\t<value xid=\"148\">1998</value>\n\t\t<value xid=\"149\">1999</value>\n\t\t<value xid=\"150\">2000</value>\n\t\t<value xid=\"151\">2001</value>\n\t\t<value xid=\"152\">2002</value>\n\t\t<value xid=\"153\">2003</value>\n\t\t<value xid=\"154\">2004</value>\n\t\t<value xid=\"155\">2005</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"100\" color=\"#318DBD\">-0.307</value>\n\t\t\t<value xid=\"101\" color=\"#318DBD\">-0.168</value>\n\t\t\t<value xid=\"102\" color=\"#318DBD\">-0.073</value>\n\t\t\t<value xid=\"103\" color=\"#318DBD\">-0.027</value>\n\t\t\t<value xid=\"104\" color=\"#318DBD\">-0.251</value>\n\t\t\t<value xid=\"105\" color=\"#318DBD\">-0.281</value>\n\t\t\t<value xid=\"106\" color=\"#318DBD\">-0.348</value>\n\t\t\t<value xid=\"107\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"108\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"109\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"110\" color=\"#318DBD\">-0.124</value>\n\t\t\t<value xid=\"111\" color=\"#318DBD\">-0.024</value>\n\t\t\t<value xid=\"112\" color=\"#318DBD\">-0.022</value>\n\t\t\t<value xid=\"113\">0.000</value>\n\t\t\t<value xid=\"114\" color=\"#318DBD\">-0.296</value>\n\t\t\t<value xid=\"115\" color=\"#318DBD\">-0.217</value>\n\t\t\t<value xid=\"116\" color=\"#318DBD\">-0.147</value>\n\t\t\t<value xid=\"117\" color=\"#318DBD\">-0.150</value>\n\t\t\t<value xid=\"118\" color=\"#318DBD\">-0.160</value>\n\t\t\t<value xid=\"119\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"120\" color=\"#318DBD\">-0.068</value>\n\t\t\t<value xid=\"121\" color=\"#318DBD\">-0.190</value>\n\t\t\t<value xid=\"122\" color=\"#318DBD\">-0.056</value>\n\t\t\t<value xid=\"123\">0.077</value>\n\t\t\t<value xid=\"124\" color=\"#318DBD\">-0.213</value>\n\t\t\t<value xid=\"125\" color=\"#318DBD\">-0.170</value>\n\t\t\t<value xid=\"126\" color=\"#318DBD\">-0.254</value>\n\t\t\t<value xid=\"127\">0.019</value>\n\t\t\t<value xid=\"128\" color=\"#318DBD\">-0.063</value>\n\t\t\t<value xid=\"129\">0.050</value>\n\t\t\t<value xid=\"130\">0.077</value>\n\t\t\t<value xid=\"131\">0.120</value>\n\t\t\t<value xid=\"132\">0.011</value>\n\t\t\t<value xid=\"133\">0.177</value>\n\t\t\t<value xid=\"134\" color=\"#318DBD\">-0.021</value>\n\t\t\t<value xid=\"135\" color=\"#318DBD\">-0.037</value>\n\t\t\t<value xid=\"136\">0.030</value>\n\t\t\t<value xid=\"137\">0.179</value>\n\t\t\t<value xid=\"138\">0.180</value>\n\t\t\t<value xid=\"139\">0.104</value>\n\t\t\t<value xid=\"140\">0.255</value>\n\t\t\t<value xid=\"141\">0.210</value>\n\t\t\t<value xid=\"142\">0.065</value>\n\t\t\t<value xid=\"143\">0.110</value>\n\t\t\t<value xid=\"144\">0.172</value>\n\t\t\t<value xid=\"145\">0.269</value>\n\t\t\t<value xid=\"146\">0.141</value>\n\t\t\t<value xid=\"147\">0.353</value>\n\t\t\t<value xid=\"148\">0.548</value>\n\t\t\t<value xid=\"149\">0.298</value>\n\t\t\t<value xid=\"150\">0.267</value>\n\t\t\t<value xid=\"151\">0.411</value>\n\t\t\t<value xid=\"152\">0.462</value>\n\t\t\t<value xid=\"153\">0.470</value>\n\t\t\t<value xid=\"154\">0.445</value>\n\t\t\t<value xid=\"155\">0.470</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"100\">-0.171</value>\n\t\t\t<value xid=\"101\">-0.175</value>\n\t\t\t<value xid=\"102\">-0.176</value>\n\t\t\t<value xid=\"103\">-0.174</value>\n\t\t\t<value xid=\"104\">-0.169</value>\n\t\t\t<value xid=\"105\">-0.162</value>\n\t\t\t<value xid=\"106\">-0.151</value>\n\t\t\t<value xid=\"107\">-0.139</value>\n\t\t\t<value xid=\"108\">-0.125</value>\n\t\t\t<value xid=\"109\">-0.114</value>\n\t\t\t<value xid=\"110\">-0.106</value>\n\t\t\t<value xid=\"111\">-0.104</value>\n\t\t\t<value xid=\"112\">-0.108</value>\n\t\t\t<value xid=\"113\">-0.114</value>\n\t\t\t<value xid=\"114\">-0.120</value>\n\t\t\t<value xid=\"115\">-0.125</value>\n\t\t\t<value xid=\"116\">-0.127</value>\n\t\t\t<value xid=\"117\">-0.125</value>\n\t\t\t<value xid=\"118\">-0.120</value>\n\t\t\t<value xid=\"119\">-0.114</value>\n\t\t\t<value xid=\"120\">-0.108</value>\n\t\t\t<value xid=\"121\">-0.104</value>\n\t\t\t<value xid=\"122\">-0.100</value>\n\t\t\t<value xid=\"123\">-0.097</value>\n\t\t\t<value xid=\"124\">-0.091</value>\n\t\t\t<value xid=\"125\">-0.082</value>\n\t\t\t<value xid=\"126\">-0.068</value>\n\t\t\t<value xid=\"127\">-0.050</value>\n\t\t\t<value xid=\"128\">-0.028</value>\n\t\t\t<value xid=\"129\">-0.006</value>\n\t\t\t<value xid=\"130\">0.015</value>\n\t\t\t<value xid=\"131\">0.032</value>\n\t\t\t<value xid=\"132\">0.046</value>\n\t\t\t<value xid=\"133\">0.058</value>\n\t\t\t<value xid=\"134\">0.069</value>\n\t\t\t<value xid=\"135\">0.081</value>\n\t\t\t<value xid=\"136\">0.094</value>\n\t\t\t<value xid=\"137\">0.108</value>\n\t\t\t<value xid=\"138\">0.123</value>\n\t\t\t<value xid=\"139\">0.137</value>\n\t\t\t<value xid=\"140\">0.150</value>\n\t\t\t<value xid=\"141\">0.163</value>\n\t\t\t<value xid=\"142\">0.178</value>\n\t\t\t<value xid=\"143\">0.195</value>\n\t\t\t<value xid=\"144\">0.216</value>\n\t\t\t<value xid=\"145\">0.241</value>\n\t\t\t<value xid=\"146\">0.268</value>\n\t\t\t<value xid=\"147\">0.296</value>\n\t\t\t<value xid=\"148\">0.323</value>\n\t\t\t<value xid=\"149\">0.348</value>\n\t\t\t<value xid=\"150\">0.370</value>\n\t\t\t<value xid=\"151\">0.389</value>\n\t\t\t<value xid=\"152\">0.404</value>\n\t\t\t<value xid=\"153\">0.415</value>\n\t\t\t<value xid=\"154\">0.422</value>\n\t\t\t<value xid=\"155\">0.426</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/amcolumn_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <type>column</type>                                         <!-- [column] (column / bar) -->\n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Tahoma</font>                                         <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- this function is beta, be careful. Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <depth>0</depth>                                            <!-- [0] (Number) the depth of chart and columns (for 3D effect) -->\n  <angle>0</angle>                                            <!-- [30] (0 - 90) angle of chart area and columns (for 3D effect) -->\n  <colors></colors>                                           <!-- [#FF6600,#FCD202,#B0DE09,#0D8ECF,#2A0CD0,#CD0D74,#CC0000,#00CC00,#0000CC,#DDDDDD,#999999,#333333,#990000] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->  \n    \n  <column>\n    <type></type>                                             <!-- [clustered] (clustered, stacked, 100% stacked, 3d column) -->\n    <width>85</width>                                         <!-- [80] (0 - 100) width of column (in percents)  -->\n    <spacing>0</spacing>                                      <!-- [5] (Number) space between columns of one category axis value, in pixels. Negative values can be used. -->\n    <grow_time>3</grow_time>                                  <!-- [0] (Number) grow time in seconds. Leave 0 to appear instantly -->\n    <grow_effect></grow_effect>                               <!-- [elastic] (elastic, regular, strong) -->\n    <sequenced_grow>true</sequenced_grow>                     <!-- [false] (true / false) whether columns should grow at the same time or one after another -->    \n    <alpha></alpha>                                           <!-- [100] (Number) alpha of all columns -->\n    <border_color></border_color>                             <!-- [#FFFFFF] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (Number) -->\n    <data_labels>\n      <![CDATA[]]>                                            <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </data_labels>\n    <data_labels_text_color></data_labels_text_color>         <!-- [text_color] (hex color code) --> \n    <data_labels_text_size></data_labels_text_size>           <!-- [text_size] (Number) -->\n    <data_labels_position></data_labels_position>             <!-- [outside] (inside, outside, above). This setting is only for clustered chart. --> \n                                                              <!-- if you set \"above\" for column chart, the data label will be displayed inside column, rotated  by 90 degrees -->\n    <data_labels_always_on></data_labels_always_on>           <!-- [false] (true / false) If the data label is placed inside of the bar or column (stacked chart) and the bar or column is too small for the label to fit, it is hidden. If you set this setting to \"true\", the data labels will always be visible. -->\n    <balloon_text>                                                    \n     <![CDATA[]]>                                             <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </balloon_text>    \n    <link_target></link_target>                               <!-- [] (_blank, _top ...) -->\n    <gradient></gradient>                                     <!-- [vertical] (horizontal / vertical) Direction of column gradient. Gradient colors are defined in graph settings below. -->\n    <bullet_offset></bullet_offset>                           <!-- [0] (Number) distance from column / bar to the bullet -->\n    <hover_brightness></hover_brightness>                     <!-- [0] (from -255 to 255) The column may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <hover_color>#EED600</hover_color>                        <!-- [] (hex color code) -->\n    <corner_radius_top></corner_radius_top>                   <!-- [0] (Number, Number%) Corner radius of the column's top. Works only if depth is = 0 -->\n    <corner_radius_bottom></corner_radius_bottom>             <!-- [0] (Number, Number%) Corner radius of the column's bottom. Works only if depth is = 0 -->             \n  </column>\n  \n  <line>                                                      <!-- Here are general settings for \"line\" graph type. You can set most of these settings for individual lines in graph settings below -->\n    <connect></connect>                                       <!-- [false] (true / false) whether to connect points if data is missing -->\n    <width></width>                                           <!-- [2] (Number) line width -->\n    <alpha></alpha>                                           <!-- [100] (Number) line alpha -->\n    <fill_alpha></fill_alpha>                                 <!-- [0] (Number) fill alpha -->\n    <bullet></bullet>                                         <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n    <bullet_size></bullet_size>                               <!-- [8] (Number) bullet size -->\n    <data_labels>\n       <![CDATA[]]>                                           <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </data_labels>\n    <data_labels_text_color></data_labels_text_color>         <!-- [text_color] (hex color code) --> \n    <data_labels_text_size></data_labels_text_size>           <!-- [text_size] (Number) -->\n    <balloon_text>                                                    \n      <![CDATA[]]>                                            <!-- [] use the same formatting rules as for data labels -->\n    </balloon_text>      \n    <link_target></link_target>                               <!-- [] (_blank, _top ...) -->\n  </line>\n    \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha>15</border_alpha>                           <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->                                            \n    <margins>                                                 <!-- plot area margins -->\n      <left>70</left>                                         <!-- [60](Number / Number%) --> \n      <top>60</top>                                           <!-- [60](Number / Number%) --> \n      <right>50</right>                                       <!-- [60](Number / Number%) -->\n      <bottom>80</bottom>                                     <!-- [80](Number / Number%) -->\n    </margins>\n  </plot_area>\n  \n  <grid>                                                      <!-- GRID -->\n    <category>                                                <!-- category axis grid -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n    </category>\n    <value>                                                   <!-- value axis grid -->      \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color>000000</fill_color>                         <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha>5</fill_alpha>                              <!-- [0] (0 - 100) opacity of fill -->\n    </value>\n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <category>                                                <!-- category axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <frequency>3</frequency>                                <!-- [1] (Number) how often values should be placed -->\n      <start_from></start_from>                               <!-- [1] (Number) you can set series from which category values will be displayed -->\n      <rotate>45</rotate>                                     <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->    \n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->      \n    </category>\n    <value>                                                   <!-- value axis -->\n      <enabled>true</enabled>                                 <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <min>0</min>                                            <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) -->\n      <unit_position></unit_position>                         <!-- [right] (right / left) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                   \n    </value>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <category>                                                <!-- category axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </category>\n    <value>                                                   <!-- value axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </value>\n  </axes>  \n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current column color will be used -->\n    <alpha>85</alpha>                                         <!-- [100] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be below plot area -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->    \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->        \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n  </legend>\n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amcolumn/export.php or amcolumn/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>  \n  \n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                     <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                   <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>10</x>                                               <!-- [0] (Number / Number% / !Number) -->\n      <y>400</y>                                              <!-- [0] (Number / Number% / !Number) -->\n      <rotate>true</rotate>                                   <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Temperature anomaly, C (1950 - 2005)</b>]]>\n      </text>        \n    </label>\n    <label lid=\"1\">\n      <x>0</x> \n      <y>380</y>\n      <width></width> \n      <align>right</align>  \n      <text_color></text_color>\n      <text_size>11</text_size>  \n      <text>                   \n        <![CDATA[Source: <a href=\"http://www.cru.uea.ac.uk/cru/info/warming/\" target=\"_blank\"><u>Climatic Research Unit</u></a>]]>\n      </text>        \n    </label>\n  </labels>\n\n  \n  <graphs>                                                     <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                               <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                               <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                               <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                            <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n      <type>column</type>                                      <!-- [column] (column/line) -->                  \n      <title>Anomaly</title>                                   <!-- [] (graph title) -->\n      <color>B92F2F</color>                                    <!-- [] (hex color code) -->\n      <alpha></alpha>                                          <!-- [column.alpha (line.alpha)] (0 - 100) -->\n      <data_labels>\n        <![CDATA[]]>                                           <!-- [column.data_labels (line.data_labels)] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </data_labels>      \n      <gradient_fill_colors></gradient_fill_colors>            <!-- [] (hex color codes separated by comas) columns can be filled with gradients. Set any number of colors here. Note, that the legend key will be filled with color value, not with gradient. -->\n      <balloon_color></balloon_color>                          <!-- [balloon.color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                          <!-- [balloon.alpha] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>                <!-- [balloon.text_color] (hex color code) -->\n      <balloon_text>\n        <![CDATA[Anomaly in {series}: {value}C]]>              <!-- [column(line).balloon.text] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>       \n      <fill_alpha></fill_alpha>                                <!-- [0] (0 - 100) fill alpha (use it if you want to have area chart) -->\n      <width></width>                                          <!-- [2] (Number) line width -->\n      <bullet></bullet>                                        <!-- [line.bullet] (round, square, round_outlined, square_outline, round_outline, square_outlined, filename) -->            \n      <bullet_size></bullet_size>                              <!-- [line.bullet_size] (Number) bullet size -->\n      <bullet_color></bullet_color>                            <!-- [] (hex color code) bullet color. If not defined, line color is used -->\n      <visible_in_legend></visible_in_legend>                  <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n      <pattern></pattern>                                      <!-- [] (path to the pattern file) Pattern file can be: swf, jpg, gif or png. The chart looks for the file in the \"path\" folder. the pattern can be also set for individual columns in the data xml file -->\n      <pattern_color></pattern_color>                          <!-- [] (hex color code) the color of the pattern -->      \n    </graph>\n\n    <graph gid=\"2\">\n      <type>line</type>                                     \n      <title>Smoothed</title>                               \n      <color></color>                                   \n      <alpha></alpha>\n      <balloon_text>\n        <![CDATA[Anomaly in {series}: {value}C (Smoothed)]]>  <!-- [column(line).balloon.text] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>                                         \n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t<max_min></max_min>                                        <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n  \t <behind></behind>                                       <!-- [false] (true / false) whether your guides should appear in front of columns or behind them -->\n\t   <start_value></start_value>                             <!-- (number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- (string) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.value.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.value.rotate] (0 - 90) angle of rotation of title. -->\n\t   <text_size></text_size>                                 <!-- [values.value.text_size] (Number)  -->\n\t   <text_color></text_color>                               <!-- [values.value.color] (hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n\t\n\t<!-- DATA can also be set in settings file. Just place data in CSV or XML format between <data></data> -->\n\t\n\t<!--<data>\n\t</data> -->\t\n\t\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amcolumn/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",escape(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/amcharts_key.txt",
    "content": "AMCHART-LNKS-1966-6679-1965-1082"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/amline_data.txt",
    "content": "1949;2.54;20.21\n1950;2.51;19.73\n1951;2.53;18.43\n1952;2.53;18.08\n1953;2.68;19.01\n1954;2.78;19.57\n1955;2.77;19.58\n1956;2.79;19.43\n1957;3.09;20.83\n1958;3.01;19.73\n1959;2.90;18.87\n1960;2.88;18.43\n1961;2.89;18.31\n1962;2.90;18.19\n1963;2.89;17.89\n1964;2.88;17.60\n1965;2.86;17.20\n1966;2.88;16.84\n1967;2.92;16.56\n1968;2.94;16.00\n1969;3.09;15.95\n1970;3.18;15.52\n1971;3.39;15.85\n1972;3.39;15.36\n1973;3.89;16.59\n1974;6.87;26.39\n1975;7.67;27.00\n1976;8.19;27.26\n1977;8.57;26.78\n1978;9.00;26.14\n1979;12.64;32.98\n1980;21.59;49.63\n1981;31.77;66.20\n1982;28.52;55.98\n1983;26.19;49.80\n1984;25.88;47.18\n1985;24.09;42.40\n1986;12.51;21.62\n1987;15.40;25.68\n1988;12.58;20.14\n1989;15.86;24.22\n1990;20.03;29.03\n1991;16.54;23.00\n1992;15.99;21.59\n1993;14.25;18.68\n1994;13.19;16.86\n1995;14.62;18.17\n1996;18.46;22.40\n1997;17.23;20.39\n1998;10.87;12.66\n1999;15.56;17.78\n2000;26.72;29.54\n2001;21.84;23.39\n2002;22.51;23.78\n2003;27.54;28.42\n2004;38.93;54.93\n2005;46.47;47.97\n2006;58.30;58.30\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!--<message><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1951</value>\n\t\t<value xid=\"4\">1951</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">5</value>\n\t\t\t<value xid=\"4\">1</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents, used only in stacked charts) -->\n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n  \n \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient-->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n\n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>\n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->    \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->\n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->    \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->    \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>    \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width>44</width>                                       <!-- [80] (Number) width of text field for value -->\n      <align>left</align>                                     <!-- [right] (right / left) -->\n      <text><![CDATA[: ${value}]]></text>                     <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>\n  </legend>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>    \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  \n  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code). Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">                                                            \n      <axis>left</axis>\n      <title>Inflation adjusted</title>              \n      <color>#999999</color>\n      <selected>false</selected>                     \n      <balloon_text>\n        <![CDATA[${value}]]>\n      </balloon_text>\n    </graph>\n  </graphs>  \n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n\t\n\t<!-- DATA can also be set in settings file. Just place data in CSV or XML format between <data></data> -->\n\t\n\t<!--<data>\n\t</data> -->\t\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",encodeURIComponent(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/amline.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Line & Area chart</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline/amline_settings.xml\"));                // you can set two or more different settings files here (separated by commas)\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline/amline_data.xml\"));\n\t\t\n//\tso.addVariable(\"chart_data\", encodeURIComponent(\"data in CSV or XML format\"));                    // you can pass chart data as a string directly from this file\n//\tso.addVariable(\"chart_settings\", encodeURIComponent(\"<settings>...</settings>\"));                 // you can pass chart settings as a string directly from this file\n//\tso.addVariable(\"additional_chart_settings\", encodeURIComponent(\"<settings>...</settings>\"));      // you can append some chart settings to the loaded ones\n//  so.addVariable(\"loading_settings\", \"LOADING SETTINGS\");                                           // you can set custom \"loading settings\" text here\n//  so.addVariable(\"loading_data\", \"LOADING DATA\");                                                   // you can set custom \"loading data\" text here\n//\tso.addVariable(\"preloader_color\", \"#999999\");\n//  so.addVariable(\"error_loading_file\", \"ERROR LOADING FILE\");                                   // you can set custom \"error loading file\" text here\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/changelog.txt",
    "content": "*** CHANGE LOG *****************************************************************\n*** 1.6.4.0 ********************************************************************\nFEATURE ADDED\namReturnParam function also returns the param name:\namReturnParam(chart_id, value, param);\n*** 1.6.3.1 ********************************************************************\nFIX: stacking issue with missing values fixed\nFIX: balloons do not go above the plot area \nFIX: js function print could print three charts instead of one\n*** 1.6.3.0 ********************************************************************\nFEATURE ADDED:\nNew settings <scientific_min> and <scientific_max> added. If absolute value of \nyour number is equal or bigger then scientific_max or equal or less then \nscientific_min, this number will be formatted using scientific notation, for\nexample:\n\n15000000000000000 -> 1.5e16\n0.0000023 -> 2.3e-6\n\nFIX: amClickedOnSeries is not called anymore when zooming the chart.\n*** 1.6.2.1 ********************************************************************\nFEATURE ADDED:\na new setting, <js_enabled> was added. It allows disabling all javascript-html\ncommunication. Id you set this to false, then the chart won't listen and won't\ncall any JavaScript functions. This will also disable the security warning\nmessage when opening the chart from your hard drive or CD.\n*** 1.6.2.0 ********************************************************************\nFEATURE ADDED:Y axis values can be formatted as duration. To do this, you have to\ntell the duration unit of your data. For example, if your data represents seconds,\nyou have to set: <values><y_left><duration>ss</duration></y_left></values>\nThe units of the duration can be changed in the <strings> section.\n\nFIX: you can call JS functions after amError function was called by the chart\n\nFIX: amClickedOnSeries function is called even the zoomable is set to false now\n*** 1.6.1.4 ********************************************************************\nFEATURE ADDED: Margins can be set in percents now\nFIX: balloon.text_color setting was ignored\nFIX: in some cases, when values were missing and axis type was \"stacked\" or\n\"100% stacked\" the area to the stacked graph was filled incorrectly\nFIX: amGetZoom was called when resizing window (if the redraw was set to true)\nFIX: if balloon.only_one was set to true, the balloon wasn't appearing if the \ngraph was hidden or not selected and the mouse was close to this graph.\n*** 1.6.1.3 ********************************************************************\nFIX: amGetZoom returned \"undefined\" if the indicator was moved off the plot area\nto the right side. \n*** 1.6.1.2 ********************************************************************\nFIX: incorrect scroller could appear after reloadData javascript function was\ncalled. \n\nThe chart didn't accept new JS functions if error, such as no data occureed \n\n*** 1.6.1.1 ********************************************************************\nFIX: the indicator could go left of the plot area\n\n*** 1.6.1.0 ********************************************************************\nIMPORTANT UPDATE:\nJS functions amClickedOnSeries(), amClickedOnBullet() and amRolledOverBullet()\nchanged - now the first parameter they return is chart_id, like for all the other\nJS functions which are called by flash. If you are using these functions, you \nwill have to update your scripts.\n\nFEATURE ADDED: JavaScript functions are cued now - previously you could call one\nJS function at a time and call another only after the chart finished the\nprevious process. Now, you can call several functions one after another, without\nwaiting for the chart to finish doing something. The functions are cued and all\nof them will be executed.\n\n\nFEATURE ADDED: New JavaScript function amProcessCompleted(chart_id, process) \nThis function is called after some process initialized by some JS function is\nfinished. For example, if you make the chart to reload data by calling reloadData\nfunction, after the data is reloaded, the chart will call amProcessCompleted \nfunction and the \"process\" parameter will be \"reloadData\" - the same as the \nfunction name you called. Check examples/javascript_control example to see this\nin action.\n\nFIX: The bullets might be displayed out of plot area, when the <strict_min_max>\nwas set to true and the graph's values were out of the <min> and <max> range.\n\nFIX: If all the graphs of one axis were hidden, the grid and values still \nremained.\n\nFIX: chart_id was lost after the use of setSettings JS function.\n\n\n*** 1.6.0.0 ********************************************************************\n\nFEATURE ADDED: RESCALING THE CHART WHEN THE GRAPH IS HIDDEN\nWhen you click on the legend key, the graph is hidden or shown. Now the chart\nrecalculates min and max values (rescales the chart) when you do this. You can\nturn this feature off by setting <rescale_on_hide> to \"false\".\n\n\nFEATURE ADDED: AUTO-FITTING OF THE LEGEND and X AXIS VALUES\n\nThe legend now automatically adjusts bottom margin to fit to the flash object's \narea. If your X axis values are rotated, the legend position is adjusted not to\noverlap the values. In order this to work, you have to leave <legend><y> setting\nempty.\n\n\nFEATURE ADDED: Y BALLOONS NO LONGER OVERLAP\n\n\nFEATURE ADDED: NEW BULLET TYPES\n\nNew bullet types are: square_outline and round_outline\n\n\nFEATURE ADDED: CHART TYPE CAN BE SET SEPARATELY FOR RIGHT AND LEFT AXES\n\nPreviously you set the same <type> (line, stacked, 100% stacked) for both\nleft and right axes. Now you can set the type separately. This setting is now \nin <axes> section.\n\n\nFEATURE ADDED: MORE SETTINGS FOR THE Y BALLOON\n\nNew balloon settings allows you to have balloon border and rounded corners:\n\n   <balloon>\n      <only_one></only_one>\n      <on_off></on_off>\n      <color></color>          \n      <alpha></alpha>          \n      <text_color></text_color>\n      <text_size></text_size>  \n      <max_width></max_width>  \n      <corner_radius></corner_radius>\n      <border_width></border_width>  \n      <border_alpha></border_alpha>  \n      <border_color></border_color>    \n   </balloon> \n   \nThe <only_one> setting replaced the <indicator><one_y_balloon> setting, and the\n<on_off></on_off> replaced the <indicator><y_balloon_on_off>. The old ones will\nalso work.\n\n\nFEATURE ADDED: POSSIBILITY TO SET ARRAY OF COLORS\n\nUsing <colors></colors> setting, you can set an array fo colors, which will\nbe used if the graph's color is not set.\n\n\nFEATURE ADDED: CHANGE MULTIPLE SETTINGS WITH JAVASCRIPT\n\nUsing new function, flashMovie.setSettings(settings, rebuild) You can control\nmultiple settings.  It is recommended to use this new function even for one \nsetting, instead of setParam() function. The \"rebuild\" option might be \"true\" \nor \"false\" (the default is \"true\"). If you set it to \"false\", then the settings\nwill not be applied until you call another new JS function: flashMovie.rebuild()\nor pass another set of settings with the \"rebuild\" set to \"true\". \n\nA new function flashMovie.getSettings() will return the full settings \nXML by calling amReturnSettings(chart_id, settings) function. \n\n\nFEATURE ADDED: IMAGE DATA IS PASSED TO JAVASCRIPT\n\nWhen exporting chart as an image, the chart passes image data to JavaScript \nfunction: amReturnImageData(chart_id, data) \n\n\nFEATURE ADDED: FONT COLOR AND SIZE OF A LABEL TEXT\n\n<labels> Can accept  font color and font size HTML tags now, for example:\n<text><![CDATA[Source: <font color=\"#CC0000\" size=\"14\">amCharts</font>]]></text>\n\n\nCHANGE OF THE DEFAULT SETTINGS:\n<context_menu><default_items><zoom> default value was changed to \"false\"\n\n\nFIXES:\nWhen adding some settings using additional_chart_settings variable, you don't \nneed to set all the <graph> or <label> settings anymore. When \nchanging some <label> property using additional_chart_settings, in order to\nidentify <label>, the labels id (lid) must be added, for example: <label lid=\"0\">\n\nWhen <connect> is set to true, and there are values missing, the chart shows\nfull line when zoomed.\n\n\"aditional_chart_settings\" variable can accept multiple guides now.\n\nmin / max calculation bug with stacked chart type fixed.\n\n\n\n*** 1.5.2.0 ********************************************************************\n\n\nNew features:\n\nJavaScript function amError(chart_id, error_message) is called when one of the\nknown errors occurs.\n\nNew JavaScript function for showing/hiding and selecting/deselecting graphs \nadded:\n\nflashMovie.showGraph(index)\nflashMovie.hideGraph(index)\nflashMovie.selectGraph(index)\nflashMovie.deselectGraph(index)\n\nYou can also use these functions in case you load chart to another swf movie.\n\n\n\n*** 1.5.1.0 ********************************************************************\n\n\nNew feature: the area between every second y axis grid can be filled with\ncolor. The color is defined at: <grid><y_left><fill_color>. Fill alpha can be\ndefined at <grid><y_left><fill_alpha>\n\nBug fix: When reloading settings with reloadSettings() function, if settings\nfile contained data, the data wasn't refreshed. This is fixed in this version.\n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n\t<guides>\t                                   \n\t <guide>                                     \n\t   <start_value>26.16</start_value>               \n\t   <title>Average world ($26,16)</title>                           \n\t   <color>#00CC00</color>                             \n\t   <inside>true</inside>                         \n\t </guide>  \n\t</guides>\t\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>15</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw>true</redraw>                                       <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count>20</hide_bullets_count>                 <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->  \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color>000000</fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha>5</fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                         <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                       <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width>80</width>                                         <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines> \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha>0</line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                              <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                             <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected>false</selected>                              <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[{value}]]>                                   <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines>true</vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>\n      <line_width>2</line_width>              \n      <color>#999999</color>\n      <bullet>square</bullet> \n      <bullet_size>8</bullet_size>\n      <selected>true</selected>\n      <balloon_text>\n        <![CDATA[${value}]]>\n      </balloon_text>                              \n    </graph>    \n </graphs>\n \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>   \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Auto-resizing chart</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"100%\", \"100%\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/amline_data.txt",
    "content": "1900;-0.220;-0.362\n1901;-0.300;-0.376\n1902;-0.430;-0.395\n1903;-0.507;-0.414\n1904;-0.553;-0.434\n1905;-0.411;-0.452\n1906;-0.328;-0.468\n1907;-0.507;-0.480\n1908;-0.559;-0.489\n1909;-0.564;-0.492\n1910;-0.547;-0.488\n1911;-0.580;-0.478\n1912;-0.490;-0.462\n1913;-0.489;-0.443\n1914;;\n1915;;\n1916;;\n1917;;\n1918;;\n1919;-0.327;-0.355\n1920;-0.313;-0.345\n1921;-0.262;-0.334\n1922;-0.381;-0.322\n1923;-0.346;-0.310\n1924;-0.360;-0.298\n1925;-0.274;-0.285\n1926;-0.162;-0.272\n1927;-0.252;-0.258\n1928;-0.255;-0.246\n1929;-0.376;-0.233\n1930;-0.164;-0.219\n1931;-0.124;-0.205\n1932;-0.154;-0.189\n1933;-0.296;-0.172\n1934;-0.158;-0.151\n1935;-0.183;-0.128\n1936;-0.152;-0.103\n1937;-0.033;-0.078\n1938;0.009;-0.054\n1939;;\n1940;;\n1941;;\n1942;;\n1943;;\n1944;;\n1945;;\n1946;-0.204;-0.102\n1947;-0.196;-0.126\n1948;-0.203;-0.147\n1949;-0.210;-0.162\n1950;-0.307;-0.171\n1951;-0.168;-0.175\n1952;-0.073;-0.176\n1953;-0.027;-0.174\n1954;-0.251;-0.169\n1955;-0.281;-0.162\n1956;-0.348;-0.151\n1957;-0.074;-0.139\n1958;-0.011;-0.125\n1959;-0.074;-0.114\n1960;-0.124;-0.106\n1961;-0.024;-0.104\n1962;-0.022;-0.108\n1963;0.000;-0.114\n1964;-0.296;-0.120\n1965;-0.217;-0.125\n1966;-0.147;-0.127\n1967;-0.150;-0.125\n1968;-0.160;-0.120\n1969;-0.011;-0.114\n1970;-0.068;-0.108\n1971;-0.190;-0.104\n1972;-0.056;-0.100\n1973;0.077;-0.097\n1974;-0.213;-0.091\n1975;-0.170;-0.082\n1976;-0.254;-0.068\n1977;0.019;-0.050\n1978;-0.063;-0.028\n1979;0.050;-0.006\n1980;0.077;0.015\n1981;0.120;0.032\n1982;0.011;0.046\n1983;0.177;0.058\n1984;-0.021;0.069\n1985;-0.037;0.081\n1986;0.030;0.094\n1987;0.179;0.108\n1988;0.180;0.123\n1989;0.104;0.137\n1990;0.255;0.150\n1991;0.210;0.163\n1992;0.065;0.178\n1993;0.110;0.195\n1994;0.172;0.216\n1995;0.269;0.241\n1996;0.141;0.268\n1997;0.353;0.296\n1998;0.548;0.323\n1999;0.298;0.348\n2000;0.267;0.370\n2001;0.411;0.389\n2002;0.462;0.404\n2003;0.470;0.415\n2004;0.445;0.422\n2005;0.470;0.426\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font>Georgia</font>                                        <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>12</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count>15</hide_bullets_count>                 <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color>#000000</color>                                    <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color>#000000</color>                                    <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#555555</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>70</left>                                         <!-- [60](Number / Number%) --> \n      <top>70</top>                                           <!-- [60](Number / Number%) --> \n      <right>70</right>                                       <!-- [60](Number / Number%) --> \n      <bottom>100</bottom>                                    <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color>#FFFFFF</color>                                           <!-- [#DADADA] (hex color code) scrollbar color -->\n    <alpha>50</alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color>#FFFFFF</bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color -->\n    <bg_alpha>20</bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->             \n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                            \n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->    \n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->      \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off>false</graph_on_off>                        <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align>left</align>                                     <!-- [right] (right / left) -->\n      <text><![CDATA[{value} C]]></text>                      <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file>../amline/export.php</file>                         <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>14</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Temperature anomaly</b>]]>\n      </text>        \n    </label>    \n  \n    <label lid=\"1\">\n      <x>0</x> \n      <y>380</y>\n      <width></width> \n      <align>right</align>  \n      <text_size>11</text_size>  \n      <text>                   \n        <![CDATA[Source: <a href=\"http://www.cru.uea.ac.uk/cru/info/warming/\" target=\"_blank\"><u>Climatic Research Unit</u></a>]]>\n      </text>        \n    </label>  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph>                                                   <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Anomaly</title>                                  <!-- [] (graph title) -->\n      <color>#76BC2C</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover>#FF0000</color_hover>                      <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round_outlined</bullet>                         <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected>false</selected>                              <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[{value} C]]>                                 <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph>\n                                                            \n      <axis>left</axis>                   \n      <title>Smoothed</title>              \n      <color>#2CA9BC</color> \n      <color_hover>#FF0000</color_hover> \n      <fill_alpha>30</fill_alpha>\n      <bullet>round_outlined</bullet>\n      <bullet_size>10</bullet_size>      \n      <balloon_text>\n        <![CDATA[{value} C]]>                                 \n      </balloon_text>      \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value>0</start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value>0.8</end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha>0</alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color>#000000,#CC0000</fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha>40</fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>\n\t <guide>                                                  \n\t   <axis></axis>                                           \n\t   <start_value>0</start_value>                           \n\t   <end_value>-0.8</end_value>                            \n\t   <alpha>0</alpha>                                       \n\t   <fill_color>#000000,#0000CC</fill_color>               \n\t   <fill_alpha>40</fill_alpha>                                                              \n\t </guide>\t \n\t</guides>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart with data gaps</title>\n</head>\n<body bgcolor=\"#000000\">\n\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.txt\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_scroller/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1950</value>\n\t\t<value xid=\"1\">1951</value>\n\t\t<value xid=\"2\">1952</value>\n\t\t<value xid=\"3\">1953</value>\n\t\t<value xid=\"4\">1954</value>\n\t\t<value xid=\"5\">1955</value>\n\t\t<value xid=\"6\">1956</value>\n\t\t<value xid=\"7\">1957</value>\n\t\t<value xid=\"8\">1958</value>\n\t\t<value xid=\"9\">1959</value>\n\t\t<value xid=\"10\">1960</value>\n\t\t<value xid=\"11\">1961</value>\n\t\t<value xid=\"12\">1962</value>\n\t\t<value xid=\"13\">1963</value>\n\t\t<value xid=\"14\">1964</value>\n\t\t<value xid=\"15\">1965</value>\n\t\t<value xid=\"16\">1966</value>\n\t\t<value xid=\"17\">1967</value>\n\t\t<value xid=\"18\">1968</value>\n\t\t<value xid=\"19\">1969</value>\n\t\t<value xid=\"20\">1970</value>\n\t\t<value xid=\"21\">1971</value>\n\t\t<value xid=\"22\">1972</value>\n\t\t<value xid=\"23\">1973</value>\n\t\t<value xid=\"24\">1974</value>\n\t\t<value xid=\"25\">1975</value>\n\t\t<value xid=\"26\">1976</value>\n\t\t<value xid=\"27\">1977</value>\n\t\t<value xid=\"28\">1978</value>\n\t\t<value xid=\"29\">1979</value>\n\t\t<value xid=\"30\" event_start=\"war\" event_text_color=\"#DADADA\" event_description=\"Iran-Iraq war was a war between the armed forces of Iraq and Iran lasting from September 1980 to August 1988. \" event_color=\"#000000\" event_alpha=\"15\">1980</value>\n\t\t<value xid=\"31\">1981</value>\n\t\t<value xid=\"32\">1982</value>\n\t\t<value xid=\"33\">1983</value>\n\t\t<value xid=\"34\">1984</value>\n\t\t<value xid=\"35\">1985</value>\n\t\t<value xid=\"36\">1986</value>\n\t\t<value xid=\"37\">1987</value>\n\t\t<value xid=\"38\" event_end=\"war\">1988</value>\n\t\t<value xid=\"39\">1989</value>\n\t\t<value xid=\"40\">1990</value>\n\t\t<value xid=\"41\">1991</value>\n\t\t<value xid=\"42\">1992</value>\n\t\t<value xid=\"43\">1993</value>\n\t\t<value xid=\"44\">1994</value>\n\t\t<value xid=\"45\">1995</value>\n\t\t<value xid=\"46\">1996</value>\n\t\t<value xid=\"47\">1997</value>\n\t\t<value xid=\"48\">1998</value>\n\t\t<value xid=\"49\">1999</value>\n\t\t<value xid=\"50\">2000</value>\n\t\t<value xid=\"51\">2001</value>\n\t\t<value xid=\"52\">2002</value>\n\t\t<value xid=\"53\">2003</value>\n\t\t<value xid=\"54\">2004</value>\n\t\t<value xid=\"55\">2005</value>\n\t\t<value xid=\"56\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.51</value>\n\t\t\t<value xid=\"1\">2.53</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.68</value>\n\t\t\t<value xid=\"4\">2.78</value>\n\t\t\t<value xid=\"5\">2.77</value>\n\t\t\t<value xid=\"6\">2.79</value>\n\t\t\t<value xid=\"7\">3.09</value>\n\t\t\t<value xid=\"8\">3.01</value>\n\t\t\t<value xid=\"9\">2.90</value>\n\t\t\t<value xid=\"10\">2.88</value>\n\t\t\t<value xid=\"11\">2.89</value>\n\t\t\t<value xid=\"12\">2.90</value>\n\t\t\t<value xid=\"13\">2.89</value>\n\t\t\t<value xid=\"14\">2.88</value>\n\t\t\t<value xid=\"15\">2.86</value>\n\t\t\t<value xid=\"16\">2.88</value>\n\t\t\t<value xid=\"17\">2.92</value>\n\t\t\t<value xid=\"18\">2.94</value>\n\t\t\t<value xid=\"19\">3.09</value>\n\t\t\t<value xid=\"20\">3.18</value>\n\t\t\t<value xid=\"21\">3.39</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.89</value>\n\t\t\t<value xid=\"24\">6.87</value>\n\t\t\t<value xid=\"25\">7.67</value>\n\t\t\t<value xid=\"26\">8.19</value>\n\t\t\t<value xid=\"27\">8.57</value>\n\t\t\t<value xid=\"28\">9.00</value>\n\t\t\t<value xid=\"29\">12.64</value>\n\t\t\t<value xid=\"30\" description=\"Iranian revolution\" bullet=\"../examples/chart_with_scroller/bomb.swf\">21.59</value>\n\t\t\t<value xid=\"31\">31.77</value>\n\t\t\t<value xid=\"32\">28.52</value>\n\t\t\t<value xid=\"33\">26.19</value>\n\t\t\t<value xid=\"34\">25.88</value>\n\t\t\t<value xid=\"35\">24.09</value>\n\t\t\t<value xid=\"36\">12.51</value>\n\t\t\t<value xid=\"37\">15.40</value>\n\t\t\t<value xid=\"38\">12.58</value>\n\t\t\t<value xid=\"39\">15.86</value>\n\t\t\t<value xid=\"40\" description=\"Gulf war. Click on the bomb to get more info about it\" url=\"http://en.wikipedia.org/wiki/Gulf_war\" bullet=\"../examples/chart_with_scroller/bomb.swf\">20.03</value>\n\t\t\t<value xid=\"41\">16.54</value>\n\t\t\t<value xid=\"42\">15.99</value>\n\t\t\t<value xid=\"43\">14.25</value>\n\t\t\t<value xid=\"44\">13.19</value>\n\t\t\t<value xid=\"45\">14.62</value>\n\t\t\t<value xid=\"46\">18.46</value>\n\t\t\t<value xid=\"47\">17.23</value>\n\t\t\t<value xid=\"48\" description=\"Opec 10% quota increase\" bullet_color=\"#009900\" bullet_size=\"12\">10.87</value>\n\t\t\t<value xid=\"49\">15.56</value>\n\t\t\t<value xid=\"50\">26.72</value>\n\t\t\t<value xid=\"51\" description=\"9/11\">21.84</value>\n\t\t\t<value xid=\"52\">22.51</value>\n\t\t\t<value xid=\"53\" description=\"Iraq war\" bullet=\"../examples/chart_with_scroller/bomb.swf\">27.54</value>\n\t\t\t<value xid=\"54\">38.93</value>\n\t\t\t<value xid=\"55\">46.47</value>\n\t\t\t<value xid=\"56\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">19.73</value>\n\t\t\t<value xid=\"1\">18.43</value>\n\t\t\t<value xid=\"2\">18.08</value>\n\t\t\t<value xid=\"3\">19.01</value>\n\t\t\t<value xid=\"4\">19.57</value>\n\t\t\t<value xid=\"5\">19.58</value>\n\t\t\t<value xid=\"6\">19.43</value>\n\t\t\t<value xid=\"7\">20.83</value>\n\t\t\t<value xid=\"8\">19.73</value>\n\t\t\t<value xid=\"9\">18.87</value>\n\t\t\t<value xid=\"10\">18.43</value>\n\t\t\t<value xid=\"11\">18.31</value>\n\t\t\t<value xid=\"12\">18.19</value>\n\t\t\t<value xid=\"13\">17.89</value>\n\t\t\t<value xid=\"14\">17.60</value>\n\t\t\t<value xid=\"15\">17.20</value>\n\t\t\t<value xid=\"16\">16.84</value>\n\t\t\t<value xid=\"17\">16.56</value>\n\t\t\t<value xid=\"18\">16.00</value>\n\t\t\t<value xid=\"19\">15.95</value>\n\t\t\t<value xid=\"20\">15.52</value>\n\t\t\t<value xid=\"21\">15.85</value>\n\t\t\t<value xid=\"22\">15.36</value>\n\t\t\t<value xid=\"23\">16.59</value>\n\t\t\t<value xid=\"24\">26.39</value>\n\t\t\t<value xid=\"25\">27.00</value>\n\t\t\t<value xid=\"26\">27.26</value>\n\t\t\t<value xid=\"27\">26.78</value>\n\t\t\t<value xid=\"28\">26.14</value>\n\t\t\t<value xid=\"29\">32.98</value>\n\t\t\t<value xid=\"30\">49.63</value>\n\t\t\t<value xid=\"31\">66.20</value>\n\t\t\t<value xid=\"32\">55.98</value>\n\t\t\t<value xid=\"33\">49.80</value>\n\t\t\t<value xid=\"34\">47.18</value>\n\t\t\t<value xid=\"35\">42.40</value>\n\t\t\t<value xid=\"36\">21.62</value>\n\t\t\t<value xid=\"37\">25.68</value>\n\t\t\t<value xid=\"38\">20.14</value>\n\t\t\t<value xid=\"39\">24.22</value>\n\t\t\t<value xid=\"40\">29.03</value>\n\t\t\t<value xid=\"41\">23.00</value>\n\t\t\t<value xid=\"42\">21.59</value>\n\t\t\t<value xid=\"43\">18.68</value>\n\t\t\t<value xid=\"44\">16.86</value>\n\t\t\t<value xid=\"45\">18.17</value>\n\t\t\t<value xid=\"46\">22.40</value>\n\t\t\t<value xid=\"47\">20.39</value>\n\t\t\t<value xid=\"48\">12.66</value>\n\t\t\t<value xid=\"49\">17.78</value>\n\t\t\t<value xid=\"50\">29.54</value>\n\t\t\t<value xid=\"51\">23.39</value>\n\t\t\t<value xid=\"52\">23.78</value>\n\t\t\t<value xid=\"53\">28.42</value>\n\t\t\t<value xid=\"54\">54.93</value>\n\t\t\t<value xid=\"55\">47.97</value>\n\t\t\t<value xid=\"56\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_scroller/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font>Georgia</font>                                        <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n\n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file>../examples/chart_with_scroller/bg.swf</file>            <!-- [] (filename) swf or jpg file of a background. -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>60</left>                                         <!-- [60](Number / Number%) --> \n      <top>0</top>                                            <!-- [60](Number / Number%) --> \n      <right>60</right>                                       <!-- [60](Number / Number%) --> \n      <bottom>142</bottom>                                    <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y>510</y>                                                <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color>#BBBB00</color>                                    <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color>#FFFFFF</bg_color>                              <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha>20</bg_alpha>                                   <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count>10</approx_count>                         <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last>true</skip_last>                             <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit>$</unit>                                          <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position>left</unit_position>                     <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>25</alpha>                                       <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>10</alpha>                                       <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color>#000000</selection_color>                <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x>100</x>                                                <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y>180</y>                                                <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width>200</width>                                        <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->     \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover>#000000</text_color_hover>              <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[{value}$]]></text>                       <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x>350</x>                                                <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y>540</y>                                                <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) background alpha -->\n    <text_color>#FFFFFF</text_color>                          <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover>#000000</text_color_hover>              <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha>50</alpha>                                       <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text>                                                  <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[Click on the graph to turn on/off value baloon <br/><br/>Click on legend key to show/hide graph<br/><br/>Mark the area you wish to enlarge]]>\n      </text>\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>98</x>                                               <!-- [0] (Number / Number% / !Number) -->\n      <y>130</y>                                              <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align></align>                                         <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>15</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover>#000000</color_hover>                      <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color>#000000</balloon_text_color>        <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round</bullet>                                  <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[<b>${value}</b><br>{description}]]>          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>\n      <line_alpha>0</line_alpha>              \n      <color>#000000</color>     \n      <bullet>round</bullet>\n      <bullet_alpha>100</bullet_alpha>\n      <balloon_text_color>#FFFFFF</balloon_text_color>                \n      <color_hover>#000000</color_hover>\n      <balloon_text_color>#000000</balloon_text_color>\n      <balloon_text>\n        <![CDATA[<b>${value}</b>]]>                                \n      </balloon_text> \n      <vertical_lines>true</vertical_lines>           \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n      \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/chart_with_scroller/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart with scroller</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"800\", \"600\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/data_and_settings_inisde_html/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Data and settings inside HTML</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n  \tso.addVariable(\"chart_data\", encodeURIComponent(\"<chart><series><value xid='0'>2000</value><value xid='1'>2001</value><value xid='2'>2002</value><value xid='3'>2003</value><value xid='4'>2004</value><value xid='5'>2005</value><value xid='6'>2006</value><value xid='7'>2007</value></series><graphs><graph gid='0' title='First title'><value xid='0'>6</value><value xid='1'>36</value><value xid='2'>34</value><value xid='3'>37</value><value xid='4'>48</value><value xid='5'>42</value><value xid='6'>29</value><value xid='7'>43</value></graph><graph gid='1' title='Second title'><value xid='0'>19</value><value xid='1'>6</value><value xid='2'>39</value><value xid='3'>25</value><value xid='4'>8</value><value xid='5'>40</value><value xid='6'>50</value><value xid='7'>10</value></graph></graphs></chart>\"));\n    so.addVariable(\"chart_settings\", encodeURIComponent(\"<settings><background><color>#FFFFFF,#FF9E01</color><alpha>100</alpha></background><labels><label><y>24</y><width>520</width><align>center</align><text><![CDATA[<b>Passing data and settings directly from html file example</b>]]></text></label></labels></settings>\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/javascript_control/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/javascript_control/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->    \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->    \n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code). Separate color codes with comas for gradient -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value>Wrong zoom values</wrong_zoom_value>    <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->     \n     <menu function_name=\"selectInterval(10)\" title=\"10 years\"></menu>\n     <menu function_name=\"selectInterval(20)\" title=\"20 years\"></menu>\n     <menu function_name=\"showAll\" title=\"Show full\"></menu>\n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round</bullet>                                  <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[]]>                                          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n      <clickable_bullets>true</clickable_bullets>             <!-- [false] (true / false) if set to true, hand cursor will be displayed on roll-over the bullet even if it hasn't url property. When clicked or hovered, JS function will be called -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>              \n      <color>#999999</color>                     \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/javascript_control/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>JavaScript control example</title>\n</head>\n<style>\n  body{\n  \tbackground-color: #FFFFFF;\n  \tfont-family: Arial;\n  \tfont-size: 12px;\n  }\n</style>\n<body>\n<b><font color=\"red\">Attention! Because of security restrictions in most cases this\nexample will work only if you upload files to your web server.</font></b><br><br>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n<script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n<div id=\"flashcontent\">\n\t<strong>You need to upgrade your Flash Player</strong>\n</div>\n\n<script type=\"text/javascript\">\n  var so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n  so.addVariable(\"path\", \"../../amline/\");  \n  so.addVariable(\"chart_id\", \"amline\"); // if you have more then one chart in one page, set different chart_id for each chart\t\n  so.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n  so.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n  so.addVariable(\"preloader_color\", \"#999999\");\n  so.write(\"flashcontent\");\n</script>\n<!-- end of amline script -->\n\n\n<script type=\"text/javascript\">\n//////////////////////////////////////////////////////////////////////////////////////////\n// Functions that control the chart //////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////\n\n// SET DATA //////////////////////////////////////////////////////////////////////////////\n// flashMovie.setData(data, rebuild)\n// This function can be used for setting the chart's data on the fly. \n// Data must be in CSV or XML form, as per the <data_type> setting.\n// The \"rebuild\" parameter is optional and can be \"true\" or \"false\". \"false\" means that \n// the new data will not be applied right after this function is called.   \n\nfunction setData() {\n  // gets data from the text area with id \"data\"\n  var data = document.getElementById(\"data\").value;\n  // sets data\n  flashMovie.setData(data);\n}\n\n// APPEND DATA ///////////////////////////////////////////////////////////////////////////\n// flashMovie.appendData(data[, remove_count])\n// This function can be used to append new data to the existing dataset. \n// The data must be in CSV or XML form, as per the <data_type> setting. \n// The remove_count variable is optional and sets the number of data points\n// that should be removed from the beginning of dataset.\nfunction appendData() {\n  // gets data from the text area with id \"data\"\n  var data = document.getElementById(\"data\").value;\n  // appends data\n  flashMovie.appendData(data, 0);\n}\n\n// SET SETTINGS //////////////////////////////////////////////////////////////////////////\n// flashMove.setSettings(settings[, rebuild])\n// This function can be used to set some part or all the settings. The settings should be\n// in XML format, inside <settings></settings>. The \"rebuild\" parameter is optional and \n// can be \"true\" or \"false\". \"false\" means that the new settings will not be applied right\n// after this function is called. They will can be applied using flashMovie.rebuild()\n// function or by adding some more setings with the \"rebuild\" set to \"true\". The default\n// value of \"rebuild\" is \"true\"  \nfunction setSettings() {\n  var settings = document.getElementById(\"settings\").value;\n  flashMovie.setSettings(settings, true);\n}   \n\n// REBUILD CHART /////////////////////////////////////////////////////////////////////////\n// flashMovie.rebuild();\n// This function might be used to rebuild the chart after several portions of settings were\n// set using setSettings(settings, rebuild) function, with the rebuild set to false\nfunction rebuild() {\n  flashMovie.rebuild();\n}\n\n// RELOAD DATA ///////////////////////////////////////////////////////////////////////////\n// flashMove.reloadData([file_name], [show_all])\n// This function will reload the data. The file_name variable is optional, if you do not\n// set it here, data from the original file will be reloaded. The show_all variable \n// tells the chart whether it should keep the selected period or show full new data\n// the default value of show_all is \"true\"       \nfunction reloadData() {\n  flashMovie.reloadData(); \n}\n\n// RELOAD SETTINGS ///////////////////////////////////////////////////////////////////////\n// flashMovie.reloadSettings([file_name], [show_all])\n// This function will reload the settings. The file_name variable is optional, if you do\n// not set it here, settings from the original file will be reloaded. The show_all variable \n// tells the chart whether it should keep the selected period or show full new data\n// the default value of show_all is \"true\"       \nfunction reloadSettings() {\n  flashMovie.reloadSettings();\n}\n\n// RELOAD ALL ////////////////////////////////////////////////////////////////////////////\n// flashMovie.reloadAll([data_file_name][,settings_file_name])\n// This function will reload both data and settings. The names of the files are optional. \n// If you do not set them, the original file names will be used.\nfunction reloadAll() {\n  flashMovie.reloadAll();\n}\n\n// SET PARAM /////////////////////////////////////////////////////////////////////////////\n// flashMovie.setParam(param, value)\n// This function lets you change a single setting. The parameter names are formed using \n// the section name and the parameter name, separated with a period. For example: \n// background.alpha or labels.label[1].text \nfunction setParam() {\n  // gets param name from a field with id \"param\"\n  var param = document.getElementById(\"param\").value;\n  // gets param value from a field with id \"value\"\n  var value = document.getElementById(\"value\").value;\n  // sets param\n  flashMovie.setParam(param, value);\n}\n      \n// GET PARAM /////////////////////////////////////////////////////////////////////////////\n// flashMovie.getParam(param)\n// This function will ask Flash to return the value of a setting. The parameter name is\n// formed in the same way as the setParam function (described above). When you call this\n// function to return the setting value, Flash will return the value by calling the \n// amReturnParam(chart_id, param_value, param_name) function\nfunction getParam() {\n  // get the param name from a field with id \"getparam\"\n  var param = document.getElementById(\"getparam\").value;            \n  flashMovie.getParam(param);\n} \n\n// GET DATA //////////////////////////////////////////////////////////////////////////////\n// flashMovie.getData()\n// This function will ask Flash to return the whole data. When you call this function to\n// return the data, Flash will call the amReturnData(chart_id, data) function.\nfunction getData() {\n  flashMovie.getData();\n}   \n      \n// GET SETTINGS //////////////////////////////////////////////////////////////////////////\n// flashMovie.getSettings()\n// This function will ask Flash to return the whole settings XML. When you call this \n// function to return the settings, Flash will call the \n// amReturnSettings(chart_id, settings) function. \nfunction getSettings() {\n  flashMovie.getSettings();\n}   \n      \n// EXPORT AS IMAGE ///////////////////////////////////////////////////////////////////////\n// flashMovie.exportImage([file_name]) \n// This function will start the process of exporting the chart as an image. The file_name\n// is a name of a file to which image data will be posted (files provided in the download \n// package are export.php and export.aspx). The file_name is optional and can be set in \n// the <export_as_image><file> setting.\nfunction exportImage() {\n  flashMovie.exportImage('../../amline/export.php');  \n}\n\n// PRINT /////////////////////////////////////////////////////////////////////////////////\n// flashMovie.print()\n// This function will print the chart. Use this print function if you don't have any\n// values rotated by 90 degrees, also if you don't have a custom bitmap background.\nfunction print(){\n  flashMovie.print();\n}\n      \n// PRINT AS BITMAP ///////////////////////////////////////////////////////////////////////\n// flashMovie.printAsBitmap()\n// Use it if you have values rotated by 90 degrees and/or a custom bitmap background.\nfunction printAsBitmap(){\n  flashMovie.printAsBitmap();\n}\n\n// Line chart specific functions //////////////////////////////////////////////////////////\n\n// SHOW GRAPH /////////////////////////////////////////////////////////////////////////////\n// flashMovie.showGraph(index)\n// This function will show the graph (if it is hidden). Index is the sequential number of a\n// graph in your settings, counting from 0.\nfunction showGraph(){\n  var index = document.getElementById(\"graphshow\").value;\n  flashMovie.showGraph(index);\n}\n\n// HIDE GRAPH ////////////////////////////////////////////////////////////////////////////\n// flashMovie.hideGraph(index)\n// This function will hide the graph (if it is visible). Index is the sequential number of\n// a graph in your settings, counting from 0.\nfunction hideGraph(){\n  var index = document.getElementById(\"graphhide\").value;         \n  flashMovie.hideGraph(index);\n}\n\n// SELECT GRAPH //////////////////////////////////////////////////////////////////////////\n// flashMovie.selectGraph(index)\n// This function will select the graph (the value balloon will become visible). Index is \n// the sequential number of a graph in your settings, counting from 0.\nfunction selectGraph(){\n  var index = document.getElementById(\"graphselect\").value;\n  flashMovie.selectGraph(index);\n}\n\n// DESELECT GRAPH ////////////////////////////////////////////////////////////////////////\n// flashMovie.deselectGraph(index)\n// This function will deselect the graph (the value balloon will become invisible). \n// Index is the sequential number of a graph in your settings, counting from 0.\nfunction deselectGraph(){ \n  var index = document.getElementById(\"graphdeselect\").value;\n  flashMovie.deselectGraph(index);\n}  \n// SET ZOOM //////////////////////////////////////////////////////////////////////////////\n// flashMovie.setZoom(from, to)\n// This function will change the selected period. \"From\" and \"to\" values must match the \n// values of the series in the data file, otherwise an error message will be displayed.\nfunction setZoom(){\n  var from = document.getElementById(\"from\").value;\n  var to = document.getElementById(\"to\").value;  \n  flashMovie.setZoom(from, to); \n}\n\n// SHOW ALL //////////////////////////////////////////////////////////////////////////////\n// flashMovie.showAll();\n// This function will show the full chart if some shorter period was previously selected.\nfunction showAll(){\n  flashMovie.showAll(); \n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n// Functions that are called by the chart ////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////\n      \n// CHART INITED //////////////////////////////////////////////////////////////////////////    \n// amChartInited(chart_id)\n// This function is called when the chart is fully loaded and initialized.\nfunction amChartInited(chart_id){\n  // get the flash object into \"flashMovie\" variable   \n  flashMovie = document.getElementById(chart_id);\n  // tell the field with id \"chartfinished\" that this chart was initialized\n  document.getElementById(\"chartfinished\").value = chart_id;           \n}      \n\n// PROCESS COMPLETED //////////////////////////////////////////////////////////////////////////    \n// amProcessCompleted(chart_id, process_name)\n// This function is called when the chart finishes doing some task triggered by another \n// JavaScript function \nfunction amProcessCompleted(chart_id, process_name){\n  document.getElementById(\"processcompleted\").value = process_name;           \n}\n      \n// RETURN DATA ///////////////////////////////////////////////////////////////////////////\n// amReturnData(chart_id, data)\n// This function is called when you request data from a chart \n//  by calling the flashMove.getData() function.\nfunction amReturnData(chart_id, data){\n  document.getElementById(\"data\").value = unescape(data);\n}\n\n// RETURN PARAM //////////////////////////////////////////////////////////////////////////\n// amReturnParam(chart_id, value, param_name)\n// This function is called when you request a setting from a chart  \n// by calling the flashMovie.getParam(param) function.\nfunction amReturnParam(chart_id, value, param_name){\n  document.getElementById(\"returnedparam\").value = unescape(value);\n}\n\n// RETURN SETTINGS ///////////////////////////////////////////////////////////////////////\n// amReturnSettings(chart_id, settings)\n// This function is called when you request settings from a chart \n// by calling flashMovie.getSettings() function.  \nfunction amReturnSettings(chart_id, settings){\n  document.getElementById(\"settings\").value = unescape(settings);\n}      \n\n// RETURN IMAGE DATA /////////////////////////////////////////////////////////////////////\n// amReturnImageData(chart_id, data)\n// This function is called when the export to image process is finished and might be used\n// as alternative way to get image data (instead of posting it to some file)\nfunction amReturnImageData(chart_id, data){\n  // your own functions here\n}   \n\n// ERROR /////////////////////////////////////////////////////////////////////////////////\n// amError(chart_id, message)\n// This function is called when an error occurs, such as no data, or file not found.\nfunction amError(chart_id, message){\n  alert(message);\n}      \n\n// GET ZOOM //////////////////////////////////////////////////////////////////////////////\n// amGetZoom(chart_id, from, to, from_xid, to_xid)\n// This function is called when the selected period is changed.\nfunction amGetZoom(chart_id, from, to, from_xid, to_xid){\n  document.getElementById(\"from\").value = from;\n  document.getElementById(\"to\").value = to;\n}\n\n// FIND OUT WHICH GRAPH WAS SELECTED /////////////////////////////////////////////////////\n// amGraphSelect(chart_id, index, title)\n// This function is called when the viewer selects the graph by clicking on it or on the\n// graph's legend entry. Index is the sequential number of a graph in your settings, \n// counting from 0.\nfunction amGraphSelect(chart_id, index, title){\n  document.getElementById(\"graphselect\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS DESELECTED ///////////////////////////////////////////////////\n// amGraphDeselect(chart_id, index, title)\n// This function is called when the viewer deselects the graph by clicking on it or on the\n// graph's legend entry. Index is the sequential number of a graph in your settings, \n// counting from 0.\nfunction amGraphDeselect(chart_id, index, title){\n  document.getElementById(\"graphdeselect\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS HIDDEN ///////////////////////////////////////////////////////\n// amGraphHide(chart_id, index, title)\n// This function is called when the viewer hides the graph by clicking on the checkbox in\n// the legend. Index is the sequential number of a graph in your settings, counting from 0\nfunction amGraphHide(chart_id, index, title){\n  document.getElementById(\"graphhide\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS SHOWN ///////////////////////////////////////////////////////\n// amGraphShow(chart_id, index, title)\n// This function is called when the viewer shows the graph by clicking on the checkbox in\n// the legend. Index is the sequential number of a graph in your settings, counting from 0\nfunction amGraphShow(chart_id, index, title){\n  document.getElementById(\"graphshow\").value = index;\n} \n\n// FIND CURRENTLY HOVERED SERIES ////////////////////////////////////////////////////////           \n// amRolledOverSeries(chart_id, series)\n// This function is called when the viewer moves the mouse over the plot area. It returns\n// the value of the series over which the mouse is currently hovered.\nfunction amRolledOverSeries(chart_id, series){\n  document.getElementById(\"series_hover\").value = series;\n}\n\n// FIND WHICH SERIES WAS CLICKED ////////////////////////////////////////////////////////           \n// amClickedOnSeries(chart_id, series)\n// This function is called when the viewer clicks somewhere on the plot area. It returns \n// the value of the series over which the mouse hovered when it was clicked.\nfunction amClickedOnSeries(chart_id, series){\n  document.getElementById(\"series_clicked\").value = series;\n}\n\n// FIND WHICH BULLET WAS CLICKED ////////////////////////////////////////////////////////\n// amClickedOnBullet(chart_id, graph_index, value, series, url, description)\n// This function is called when the viewer clicks on a graph bullet. It returns the\n// sequential number of a graph (graph_index), the value of the data point (value),\n// the series value (series), the URL and the description attributes.\nfunction amClickedOnBullet(chart_id, graph_index, value, series, url, description){\n  document.getElementById(\"bullet_clicked\").value = value;\n}          \n// FIND WHICH BULLET WAS HOVERED ////////////////////////////////////////////////////////\n// amRolledOverBullet(chart_id, graph_index, value, series, url, description)\n// This function is called when the viewer rolls over a graph bullet. It returns the \n// sequential number of a graph (graph_index), the value of the data point (value), \n// the series value (series), the URL and the description attributes.\nfunction amRolledOverBullet(chart_id, graph_index, value, series, url, description){\n  document.getElementById(\"bullet_hover\").value = value;\n}  \n\n\n//////////////////////////////////////////////////////////////////////////////////////////\n// this is example function which is called from right-click menu ////////////////////////\nfunction selectInterval(interval){\n  flashMovie.setZoom(2006 - interval, 2006);\n}\n\n\n</script>\n\n\n<!-- Buttons and forms -->\n\n<form>\n  <hr noshade size=\"1\">\n  Chart initialized: <input type=\"text\" id=\"chartfinished\">\n  Process completed: <input type=\"text\" id=\"processcompleted\">\n  <hr noshade size=\"1\">\n\n  <input type=\"button\" value=\"reload Data\" onclick=\"reloadData();\" />\n\t<input type=\"button\" value=\"reload Settings\" onclick=\"reloadSettings();\" />\n  <input type=\"button\" value=\"reload All\" onclick=\"reloadAll();\" />\n  <hr noshade size=\"1\">\n  \n  <input type=\"button\" value=\"export image\" onclick=\"exportImage();\" />            \t    \n  <input type=\"button\" value=\"print\" onclick=\"print();\" />\n  <input type=\"button\" value=\"print as bitmap\" onclick=\"printAsBitmap();\" />\n  <hr noshade size=\"1\">\n  \t\n  Indicator is on:<input type=\"text\" id=\"series_hover\">\n  Clicked on series:<input type=\"text\" id=\"series_clicked\">\n  <hr noshade size=\"1\">\n  \t\n  Rolled over bullet:<input type=\"text\" id=\"bullet_hover\">\n  Clicked on bullet:<input type=\"text\" id=\"bullet_clicked\">      \n  <hr noshade size=\"1\">\n  \t\n  <textarea id=\"data\" rows=\"6\" cols=\"62\"></textarea><br>\n  <input type=\"button\" value=\"Get data\" onclick=\"getData();\" />\n  <input type=\"button\" value=\"Set Data\" onclick=\"setData();\" />\n  <input type=\"button\" value=\"Append Data\" onclick=\"appendData();\" />\n  <hr noshade size=\"1\">\n  \t \n  Param: <input type=\"text\" id=\"param\" value=\"graphs.graph[0].hidden\"/>\n  Value: <input type=\"text\" id=\"value\" value=\"true\"/>\n  <input type=\"button\" value=\"set param\" onclick=\"setParam();\" />\n  <hr noshade size=\"1\">\n     \n  Param: <input type=\"text\" id=\"getparam\" value=\"axes.x.width\">   \t\t\n  Value: <input type=\"text\" id=\"returnedparam\" />\n  <input type=\"button\" value=\"get param\" onclick=\"getParam();\" />\n  <hr noshade size=\"1\">\n         \n  Zoom from: <input type=\"text\" id=\"from\"/>\n  to: <input type=\"text\" id=\"to\"/>\n  <input type=\"button\" value=\"set zoom\" onclick=\"setZoom();\" />\n  <input type=\"button\" value=\"show all\" onclick=\"showAll();\" />\n  <hr noshade size=\"1\">\n  \n  Select:<input type=\"text\" id=\"graphselect\" value=\"0\"/>\n  <input type=\"button\" value=\"select\" onclick=\"selectGraph();\" />\n  Deselect:<input type=\"text\" id=\"graphdeselect\" value=\"0\"/>\n  <input type=\"button\" value=\"deselect\" onclick=\"deselectGraph();\" />\n  <hr noshade size=\"1\">\n  \n  Show:<input type=\"text\" id=\"graphshow\" value=\"1\"/>\n  <input type=\"button\" value=\"show\" onclick=\"showGraph();\" />\n  Hide:<input type=\"text\" id=\"graphhide\" value=\"1\"/>\n  <input type=\"button\" value=\"hide\" onclick=\"hideGraph();\" />\n  <hr noshade size=\"1\">\n  \n  <textarea id=\"settings\" rows=\"6\" cols=\"62\"></textarea><br>\n  <input type=\"button\" value=\"Get settings\" onclick=\"getSettings();\" />\n  <input type=\"button\" value=\"Set settings\" onclick=\"setSettings();\" />\n  <input type=\"button\" value=\"Rebuild\" onclick=\"rebuild();\" />  \n  <hr noshade size=\"1\">\n\t\n  </form>\n\nRight-click on the chart - you will see custom menu items. These items are configurable - you can assign custom JavaScript functions to them.\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_data1.txt",
    "content": "2007-01-01;482.5001\n2007-01-02;482.1698\n2007-01-03;482.8384\n2007-01-04;483.1293\n2007-01-05;480.0093\n2007-01-06;485.8954\n2007-01-07;485.8954\n2007-01-08;480.0832\n2007-01-09;479.9077\n2007-01-10;457.0415\n2007-01-11;453.4658\n2007-01-12;462.3433\n2007-01-13;462.3433\n2007-01-14;462.3433\n2007-01-15;461.1270\n2007-01-16;473.3008\n2007-01-17;467.6072\n2007-01-18;465.0783\n2007-01-19;465.2581\n2007-01-20;465.2581\n2007-01-21;465.2581\n2007-01-22;477.1390\n2007-01-23;474.0081\n2007-01-24;478.5857\n2007-01-25;478.5117\n2007-01-26;482.8144\n2007-01-27;482.8144\n2007-01-28;482.8144\n2007-01-29;471.3700\n2007-01-30;471.9759\n2007-01-31;476.1921\n2007-02-01;483.8653\n2007-02-02;485.5800\n2007-02-03;485.5800\n2007-02-04;485.5800\n2007-02-05;488.5777\n2007-02-06;490.0683\n2007-02-07;488.5520\n2007-02-08;477.0283\n2007-02-09;478.6511\n2007-02-10;478.6511\n2007-02-11;478.6511\n2007-02-12;466.9880\n2007-02-13;473.9600\n2007-02-14;481.0963\n2007-02-15;477.8714\n2007-02-16;480.8368\n2007-02-17;479.0914\n2007-02-18;479.0914\n2007-02-19;483.9699\n2007-02-20;479.2478\n2007-02-21;479.0233\n2007-02-22;485.3238\n2007-02-23;483.5882\n2007-02-24;483.1858\n2007-02-25;483.1858\n2007-02-26;488.8680\n2007-02-27;467.0742\n2007-02-28;457.8783\n2007-03-01;442.1513\n2007-03-02;446.9608\n2007-03-03;446.9608\n2007-03-04;446.9608\n2007-03-05;449.4007\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_data2.txt",
    "content": "2007-01-01;1457.7123\n2007-01-02;1460.3290\n2007-01-03;1460.3290\n2007-01-04;1450.1445\n2007-01-05;1452.6525\n2007-01-06;1450.1445\n2007-01-07;1450.1445\n2007-01-08;1450.1445\n2007-01-09;1386.7923\n2007-01-10;1363.9036\n2007-01-11;1391.4589\n2007-01-12;1391.9643\n2007-01-13;1391.9643\n2007-01-14;1391.9643\n2007-01-15;1426.7512\n2007-01-16;1432.1966\n2007-01-17;1403.4244\n2007-01-18;1412.9508\n2007-01-19;1400.9971\n2007-01-20;1400.9971\n2007-01-21;1400.9971\n2007-01-22;1420.1312\n2007-01-23;1422.2775\n2007-01-24;1442.3408\n2007-01-25;1448.7695\n2007-01-26;1445.0007\n2007-01-27;1445.0007\n2007-01-28;1445.0007\n2007-01-29;1427.1455\n2007-01-30;1402.2614\n2007-01-31;1419.1256\n2007-02-01;1452.5094\n2007-02-02;1461.2926\n2007-02-03;1461.2926\n2007-02-04;1461.2926\n2007-02-05;1472.0534\n2007-02-06;1483.1822\n2007-02-07;1476.1499\n2007-02-08;1443.7846\n2007-02-09;1455.9704\n2007-02-10;1455.9704\n2007-02-11;1455.9704\n2007-02-12;1424.6636\n2007-02-13;1430.6200\n2007-02-14;1438.2052\n2007-02-15;1442.4262\n2007-02-16;1444.8812\n2007-02-17;1444.8815\n2007-02-18;1444.8815\n2007-02-19;1455.5794\n2007-02-20;1443.7715\n2007-02-21;1450.9808\n2007-02-22;1474.3134\n2007-02-23;1474.6131\n2007-02-24;1474.3134\n2007-02-25;1474.3134\n2007-02-26;1494.2504\n2007-02-27;1436.3225\n2007-02-28;1399.8188\n2007-03-01;1344.8840\n2007-03-02;1357.7611\n2007-03-03;1357.7611\n2007-03-04;1357.7611\n2007-03-05;1308.1609\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#DADADA</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>5</left>                                          <!-- [60](Number / Number%) --> \n      <top>22</top>                                           <!-- [60](Number / Number%) --> \n      <right>5</right>                                        <!-- [60](Number / Number%) --> \n      <bottom>28</bottom>                                     <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->    \n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->      \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length>5</tick_length>                            <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable>false</zoomable>                                <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Index 1</b>]]>\n      </text>        \n    </label>\n  </labels>\n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title></title>                                         <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->  \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#DADADA</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>5</left>                                          <!-- [60](Number / Number%) --> \n      <top>22</top>                                           <!-- [60](Number / Number%) --> \n      <right>5</right>                                        <!-- [60](Number / Number%) --> \n      <bottom>28</bottom>                                     <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length>5</tick_length>                            <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable>false</zoomable>                                <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n\n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                         <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                       <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Index 2</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"0\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title></title>                                         <!-- [] (graph title) -->\n      <color>#CC0000</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines>true</vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->      \n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Multiple charts on one page</title>\n</head>\n<body>\n<table width=\"520\" border=\"0\", cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<!-- this id must be unique! -->\n  <div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline1\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data1.txt\"));\t\t\n\t\tso.write(\"flashcontent1\");  // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n\n</td>\n<td>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../amline/swfobject.js\"></script>\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent2\">  \n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline2\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data2.txt\"));\n\t\tso.write(\"flashcontent2\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</td>\n</tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/no_interactivity/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph color=\"#CC0000\" title=\"Nominal\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph color=\"#CCBB00\" title=\"Inflation adjusted 2006\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/no_interactivity/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count>10</approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate>45</rotate>                                     <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off>false</graph_on_off>                        <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>15</text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  </labels>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis>right</axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/no_interactivity/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart without interactivity</title>\n</head>\n<body>\n\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/stacked_area_chart/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">2007 07 01</value>\n\t\t<value xid=\"1\">2007 07 02</value>\n\t\t<value xid=\"2\">2007 07 03</value>\n\t\t<value xid=\"3\">2007 07 04</value>\n\t\t<value xid=\"4\">2007 07 05</value>\n\t\t<value xid=\"5\">2007 07 06</value>\n\t\t<value xid=\"6\">2007 07 07</value>\n\t\t<value xid=\"7\">2007 07 08</value>\n\t\t<value xid=\"8\">2007 07 09</value>\n\t\t<value xid=\"9\">2007 07 10</value>\n\n\t</series>\n\t<graphs>\n\t\t<graph title=\"One\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#FCD202\">\n\t\t\t<value xid=\"0\">5</value>\n\t\t\t<value xid=\"1\">5.2</value>\n\t\t\t<value xid=\"2\">4.9</value>\n\t\t\t<value xid=\"3\">6.3</value>\n\t\t\t<value xid=\"4\">6.5</value>\n\t\t\t<value xid=\"5\">7.1</value>\n\t\t\t<value xid=\"6\">7.8</value>\n\t\t\t<value xid=\"7\">8.6</value>\n\t\t\t<value xid=\"8\">8.2</value>\n\t\t\t<value xid=\"9\">8</value>\n\t\t\t<value xid=\"10\">8</value>\n\t\t</graph>\n\t\t<graph title=\"Two\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#FF9E01\">\n\t\t\t<value xid=\"0\">7.1</value>\n\t\t\t<value xid=\"1\">8.3</value>\n\t\t\t<value xid=\"2\">8.3</value>\n\t\t\t<value xid=\"3\">8.8</value>\n\t\t\t<value xid=\"4\">9.1</value>\n\t\t\t<value xid=\"5\">9.7</value>\n\t\t\t<value xid=\"6\">9.8</value>\n\t\t\t<value xid=\"7\">9.3</value>\n\t\t\t<value xid=\"8\">10.3</value>\n\t\t\t<value xid=\"9\">9.3</value>\n\t\t\t<value xid=\"10\">8.7</value>\t\t\t\n\t\t</graph>\n\t\t<graph title=\"Three\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#0D8ECF\">\n\t\t\t<value xid=\"0\">3.1</value>\n\t\t\t<value xid=\"1\">2.3</value>\n\t\t\t<value xid=\"2\">2.3</value>\n\t\t\t<value xid=\"3\">2.8</value>\n\t\t\t<value xid=\"4\">1.1</value>\n\t\t\t<value xid=\"5\">1.7</value>\n\t\t\t<value xid=\"6\">1.8</value>\n\t\t\t<value xid=\"7\">2.3</value>\n\t\t\t<value xid=\"8\">1.3</value>\n\t\t\t<value xid=\"9\">1.3</value>\n\t\t\t<value xid=\"10\">0.7</value>\t\t\t\n\t\t</graph>\t\t\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/stacked_area_chart/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type>stacked</type>                                    <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n\n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n    \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Stacked area chart example</b>]]>\n      </text>        \n    </label>    \n  </labels>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/stacked_area_chart/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>amline</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<settings>\n   <!-- chart config -->\n   <legend>\n      <enabled>false</enabled>\n   </legend>\n   \n   \n   <!-- plugin config -->   \n   <plugins>\n    <!-- value indicator plugin is suitable for line chart, column chart & xy chart -->\n    <plugin file=\"../amline/plugins/value_indicator.swf\" position=\"above\">      <!-- file should be located in \"path\" folder. position can be \"behind\" or \"above\". \"behind\" means that the plugin will be loaded behind graphs -->\n      <chart_type>line</chart_type>                                             <!-- [line] (line / column / xy) this plugin can be used with line or with column chart -->\n      <axis>left</axis>                                                         <!-- [left] (left / right / x / y) if used with line chat use left or right, if used with xy chart, use x or y -->\n      <line_color>#BBBB00</line_color>                                          <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                                                 <!-- [100] (0 - 100) -->\n      <text_color>#000000</text_color>                                          <!-- [settings.text_color] -->\n      <text_size>13</text_size>                                                 <!-- [settings.tex_size] -->\n      <precision>2</precision>                                                  <!-- [0] (Number) how many numbers after comma should be shown -->\n    </plugin>\n  </plugins>\n  \n  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>amline</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"100%\", \"100%\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/licence.txt",
    "content": "*********************************************************************************\nThis AmCharts software, Line&Area chart is free under a linkware license\n\nThis means you may not remove or hide in any other way link to amcharts\nweb site - www.amcharts.com.\n\nIf you wish to remove the link, you should purchase commercial license.\n\nYou may not redistribute, sublicense or sell this program without written\npermission of Antanas Marcelionis, the author of amcharts software.\n\nThis software is provided without warranty.\n*********************************************************************************\nA commercial version (without link) is available at amCharts's website: \nhttp://www.amcharts.com/buy/\n\nPlease use amCharts Support Forum for any support queries:\nhttp://www.amcharts.com/forum\n*********************************************************************************\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/amline_1.6.4.1/readme.txt",
    "content": "********************************************************************************\nCheck documentation for help on all topics:\nhttp://www.amcharts.com/docs/\n\nIncase you don't find something, post your questions to support forum:\nhttp://www.amcharts.com/forum/\n\nYou can use amCharts visual editor to configure your charts:\nhttp://extra.amcharts.com/editor/ \n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/amcharts_key.txt",
    "content": "-www.cnhys.com-1422-7223-www.cnhys.com-"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/ampie_data.txt",
    "content": "[title];[value];[pull_out];[color];[url];[description];[alpha];[label_radius]\nChina;1314.4;;;http://www.interactivemaps.org\nIndia;1120.4 \nUnited States;300.38\nIndonesia;233.52 \nBrazil;187.67 \nPakistan;158.85 \nBangladesh;148.9\nOther Countries;3007.5;true;;http://www.amcharts.com;Click to find out more\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Twice a day\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\">258</slice>\n  <slice title=\"Once a week\">154</slice>\n  <slice title=\"Never\" url=\"http://www.interactivemaps.org\" description=\"Click on the slice to find more information\" alpha=\"50\">114</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>1</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes --> \n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y></y>                                                   <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>90</radius>                                       <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha></start_alpha>                               <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>0</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} ({percents}%)]]>              <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha>20</border_alpha>                           <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing>9</spacing>                                      <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins>5</margins>                                      <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How often do you brush your teeth?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",escape(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie/xx.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <!--\n  <message bg_color=\"#CCBB00\" text_color=\"#FFFFFF\">\n    <![CDATA[You can broadcast any message to chart from data XML file]]>\n  </message>\n  -->\n  <slice title=\"\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\">258</slice>\n  <slice title=\"Once a week\">154</slice>\n  <slice title=\"Never\" url=\"http://www.interactivemaps.org\" description=\"Click on the slice to find more information\" alpha=\"50\">114</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/ampie.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n  <script type=\"text/javascript\" src=\"ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie_settings.xml\"));       // you can set two or more different settings files here (separated by commas)\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie_data.xml\"));\t\t\n//\tso.addVariable(\"chart_data\", \"\");                                          // you can pass chart data as a string directly from this file\n//\tso.addVariable(\"chart_settings\", \"\");                                      // you can pass chart settings as a string directly from this file\n//\tso.addVariable(\"additional_chart_settings\", \"<settings></settings>\");      // you append some chart settings to the loaded ones\n//  so.addVariable(\"loading_settings\", \"LOADING SETTINGS\");                    // you can set custom \"loading settings\" text here\n//  so.addVariable(\"loading_data\", \"LOADING DATA\");                            // you can set custom \"loading data\" text here\n    so.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/changelog.txt",
    "content": "*** CHANGE LOG *****************************************************************\n*** 1.6.4.0 ********************************************************************\nFEATURE ADDED\namReturnParam function also returns the param name:\namReturnParam(chart_id, value, param);\n*** 1.6.3.0 ********************************************************************\nFEATURE ADDED:\nNew settings <scientific_min> and <scientific_max> added. If absolute value of \nyour number is equal or bigger then scientific_max or equal or less then \nscientific_min, this number will be formatted using scientific notation, for\nexample:\n\n15000000000000000 -> 1.5e16\n0.0000023 -> 2.3e-6\n*** 1.6.1.4 ********************************************************************\nFEATURE ADDED:\na new setting, <js_enabled> was added. It allows disabling all javascript-html\ncommunication. Id you set this to false, then the chart won't listen and won't\ncall any JavaScript functions. This will also disable the security warning\nmessage when opening the chart from your hard drive or CD.\n*** 1.6.1.2 ********************************************************************\nFIX: The chart didn't accept new JS functions if error, such as no data occurred\n*** 1.6.1.0 ********************************************************************\n\nFEATURE ADDED: PATTERNS\nSlices can be filled with patterns now. Check examples/patterns/ example to see\nhow it is done. The pattern is set in the data xml file, for example: \n\n<slice title=\"ABC\" pattern_color=\"#FFEE2E\" pattern=\"patterns/diagonal.swf\">120</slice>\n\nYou can use swf, jpg, gif or png files for patterns. Some default patterns were\nadded in the ampie/patterns/ folder. \n\nFEATURE ADDED: JavaScript functions are cued now - previously you could call one\nJS function at a time and call another only after the chart finished the\nprevious process. Now, you can call several functions one after another, without\nwaiting for the chart to finish doing something. The functions are cued and all\nof them will be executed.\n\n\nFEATURE ADDED: New JavaScript function amProcessCompleted(chart_id, process) \nThis function is called after some process initialized by some JS function is\nfinished. For example, if you make the chart to reload data by calling reloadData\nfunction, after the data is reloaded, the chart will call amProcessCompleted \nfunction and the \"process\" parameter will be \"reloadData\" - the same as the \nfunction name you called. Check examples/javascript_control example to see this\nin action.\n\nFIX: label_radius setting was ignored in previous version (after the avoid \nlabel overlapping feature was added).\n\nFIX: If the chart has more then 220 slices, and the grouping feature was on, the\nchart wasn't displayed.\n\nFIX: If the animation time (<start_time>) was set to 0, the <pie><alpha> setting\nwas ingored.\n\nFIX: chart_id was lost after the use of setSettings JS function.\n\nFIX: when <redraw> was set to true, and the window size is changed, the pulled-out\nslices used to go back to initial stage and animate again.\n\n*** 1.6.0.0 ********************************************************************\n\nFEATURE ADDED: DATA LABELS NO LONGER OVERLAP\n\nThe chart now automatically avoids data label overlapping by adjusting label\nposition. You can turn this off by setting <data_labels><avoid_overlapping>\nto \"false\".\n\n\nFEATURE ADDED: AUTO-FITTING OF THE LEGEND\n\nThe legend now automatically adjusts it's position to fit to the flash object's \narea. In order this to work, you have to leave <legend><y> setting empty.\n\n\nFEATURE ADDED: GRADIENT PIES\n\nYou can have linear or radial gradients now by setting the gradient type in\n<pie><gradient> setting. The gradient ratio is defined in <pie><gradient_ratio>\nsetting. IT accepts any number of numbers from -255 (dark)) to 255 (light),\nseparated by commas. \n\n\nFEATURE ADDED: SEQUENCED ANIMATION\n\nIf you set <animation><sequenced> to \"true\" the slices will appear one after\nanother, not all at the same time.\n\n\nFEATURE ADDED: DARKEN/LIGHTEN SLICES ON ROLL-OVER\n\nUsing <pie><hover_brightness> setting you can make your slices lighter or \ndarker when the user roll-overs them.  \n\nFEATURE ADDED: MORE SETTINGS FOR THE BALLOON\n\nNew balloon settings allows you to have balloon border and rounded corners:\n\n   <balloon>\n     <max_width></max_width>\n     <corner_radius></corner_radius>\n     <border_width></border_width>  \n     <border_alpha></border_alpha>  \n     <border_color></border_color>      \n   </balloon>\n   \nFEATURE ADDED: CHANGE MULTIPLE SETTINGS WITH JAVASCRIPT\n\nUsing new function, flashMovie.setSettings(settings, rebuild) You can control\nmultiple settings.  It is recommended to use this new function even for one \nsetting, instead of setParam() function. The \"rebuild\" option might be \"true\" \nor \"false\" (the default is \"true\"). If you set it to \"false\", then the settings\nwill not be applied until you call another new JS function: flashMovie.rebuild()\nor pass another set of settings with the \"rebuild\" set to \"true\". \n\nA new function flashMovie.getSettings() will return the full settings \nXML by calling amReturnSettings(chart_id, settings) function. \n\n\nFEATURE ADDED: IMAGE DATA IS PASSED TO JAVASCRIPT\n\nWhen exporting chart as an image, the chart passes image data to JavaScript \nfunction: amReturnImageData(chart_id, data) \n\n\nFEATURE ADDED: FONT COLOR AND SIZE OF A LABEL TEXT\n\n<labels> Can accept  font color and font size HTML tags now, for example:\n<text><![CDATA[Source: <font color=\"#CC0000\" size=\"14\">amCharts</font>]]></text>\n\n\nCHANGE OF THE DEFAULTS\n\n<context_menu><default_items><zoom> default value was changed to \"false\"\n\nSome more colors where added to the default <colors> array.\n\nDescription can be displayed in the data labels now. You can add {description}\ntag to the <data_labels><show> setting. description is not added automatically \nto the balloon any more. You have to add {description} tag to the the \n<balloon><show> setting if you want it to be displayed. \n\n\nFIXES:\nWhen adding some settings using additional_chart_settings variable, you don't \nneed to set all the <graph> or <label> settings anymore. When \nchanging some <label> property using additional_chart_settings, in order to\nidentify <label>, the labels id (lid) must be added, for example: <label lid=\"0\">\n\n\n\n*** 1.5.2.0 ********************************************************************\n\n\nNew features:\n\nJavaScript function amError(chart_id, error_message) is called when one of the\nknown errors occurs.\n\nYou can \"click\" or \"roll-over\" the slice with JavaScript functions:\n\nflashMovie.clickSlice(index)\nflashMovie.rollOverSlice(index)\nflashMovie.rollOutSlice()\n\nBug fix:\nWhen <pull_out_time> was set to 0, the pie label didn't move on click. Fixed.\n\n\n*** 1.5.1.0 ********************************************************************\n\n\nBug fix: When reloading settings with reloadSettings() function, if settings\nfile contained data, the data wasn't refreshed. This is fixed in this version.\n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie1/ampie_data.txt",
    "content": "China;1314.4;;;http://en.wikipedia.org/wiki/China;Click on the slice to find more information about China\nIndia;1120.4;;;http://en.wikipedia.org/wiki/India;Click on the slice to find more information about India\nUnited States;300.38;;;http://en.wikipedia.org/wiki/Usa;Click on the slice to find more information about USA\nIndonesia;233.52 \nBrazil;187.67 \nPakistan;158.85 \nBangladesh;148.9\nOther Countries;3007.5;true\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie1/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y></y>                                                   <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file>../ampie/export.php</file>                          <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n\n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>World population</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie3/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Twice a day\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\" pull_out=\"false\">241</slice>\n  <slice title=\"Once a week\" pull_out=\"false\">58</slice>\n  <slice title=\"Never\" pull_out=\"false\">120</slice>\n  <slice title=\"After every meal\" alpha=\"30\">50</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie3/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>1</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>200</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>20</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>30</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->  \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>bounce</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one>true</pull_out_only_one>               <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>80</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color>#FFFFFF</line_color>                          <!-- [#000000] (hex color code) -->\n    <line_alpha>40</line_alpha>                               <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>40</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How Often do you brush your teeth?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_data1.txt",
    "content": "Yes;40;true\nNo;30;true\nDivorced;30;true\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_data2.txt",
    "content": "Zero; 30\nOne;40\nTwo;15\nMore;15\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>110</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius></radius>                                         <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#FF0000</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>70</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>25</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Are you married?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>120</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius></radius>                                         <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#00CC00</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>25</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How many children do you have?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie5/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Asia\">44.579</slice>\n  <slice title=\"Africa\">30.065</slice>\n  <slice title=\"North America\">24.256</slice>\n  <slice title=\"South America\" pull_out=\"true\" color=\"#FCD202\">17.819</slice>\n  <slice title=\"Antarctica\">13.209</slice>\n  <slice title=\"Europe\">9.938</slice>\n  <slice title=\"Australia\">7.687</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/ampie5/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>1</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x>380</x>                                                <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>190</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>80</radius>                                       <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>10</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>20</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#B0DE09</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-10</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>bounce</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>20</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>80</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}]]>                                    <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color>#FFFFFF</line_color>                          <!-- [#000000] (hex color code) -->\n    <line_alpha>40</line_alpha>                               <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file>../examples/ampie/ampie5/bg.swf</file>              <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>true</enabled>                                   <!-- [true] (true / false) -->\n    <x>20</x>                                                 <!-- [40] (Number) -->\n    <y>60</y>                                                 <!-- [] (Number) if empty, will be below the pie -->\n    <width>160</width>                                        <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns>1</max_columns>                              <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color>#FFFFFF</border_color>                      <!-- [#000000] (hex color code) border color -->\n    <border_alpha>15</border_alpha>                           <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins>10</margins>                                     <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width>40</width>                                       <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>40</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Size of continents</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/js/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"What is Christmas?\">10</slice>\n  <slice title=\"Yes\">70</slice>\n  <slice title=\"No\">20</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie/js/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>235</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>10</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>10</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>140</max_width>                                <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->        \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Do you celebrate christmas?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie1.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"380\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie1/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie1/ampie_data.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie2.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"chart_settings\", escape(\"<settings><data_type>csv</data_type><pie><radius>130</radius><inner_radius>0</inner_radius><height>20</height><angle>45</angle></pie><animation><start_time>2</start_time><start_effect>strong</start_effect><pull_out_time>1.5</pull_out_time></animation><data_labels><radius>-50</radius><text_color>#FFFFFF</text_color><show><![CDATA[{title}: {percents}%]]></show></data_labels><legend><enabled>false</enabled></legend><labels><label><x>0</x><y>30</y><align>center</align><text_size>15</text_size><text><![CDATA[<b>Setting data and settings directly from html example</b>]]></text></label></labels></settings>\"));\n\t\tso.addVariable(\"chart_data\", escape(\"Yes;45;false;CC33FF\\nSeldom;35;false;6666FF\\nNo;20;false;FFCC00\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie3.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"500\", \"400\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie3/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie3/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#ffffff\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie4.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie1\", \"260\", \"200\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie4/ampie_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie4/ampie_data1.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent1\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n\n<!-- ampie script-->\n\t<div id=\"flashcontent2\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie2\", \"260\", \"200\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie4/ampie_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie4/ampie_data2.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent2\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/ampie5.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"340\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie5/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie5/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#000000\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/js_example.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n<body>\n<b><font color=\"red\">Attention! Because of security restrictions in most cases this example will work only if you upload files to your web server.</font></b><br><br>\n<!-- saved from url=(0013)about:internet -->\n\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\n<script type=\"text/javascript\">\n      // get flash movie object\n      var flashMovie;\n      function init() {\n         if (document.getElementById) {\n            flashMovie = document.getElementById(\"ampie\");\n         }\n      }\n      // wait for the page to fully load before initializing\n      window.onload = init;\n\n      // chart control functions ///////////////////////////////////\n      // set data\n      function setData() {\n         if (flashMovie) {            \n            var txt = document.getElementById(\"data\").value;\n            flashMovie.setData(txt);\n         }\n      }\n      // reload data\n      function reloadData() {\n         if (flashMovie) {            \n            flashMovie.reloadData();       // you can pass new data file name: reloadData(new_data_file_name)\n         }\n      }\n      // reload settings\n      function reloadSettings() {\n         if (flashMovie) {            \n            flashMovie.reloadSettings();   // you can pass new settings file name: reloadSettings(new_settings_file_name)\n         }\n      }\n      // reload all\n      function reloadAll() {\n         if (flashMovie) {            \n            flashMovie.reloadAll();        // reloadAll(new_data_file_name, new_settings_file_name)\n         }\n      }\n      // set param\n      function setParam() {\n         if (flashMovie) {\n            var param = document.getElementById(\"param\").value;\n            var value = document.getElementById(\"value\").value;\n            flashMovie.setParam(param, value);\n         }\n      }\n      // get param\n      function getParam() {\n         if (flashMovie) {\n            var param = document.getElementById(\"getparam\").value;            \n            flashMovie.getParam(param);\n         }\n      } \n      // get data\n      function getData() {\n         if (flashMovie) {\n            flashMovie.getData();\n         }\n      }   \n      // export image\n      function exportImage() {\n         if (flashMovie) {\n            flashMovie.exportImage('../ampie/export.php'); // it is not required to pass filename here if you set it in settings file) \n         }\n      }    \n      // print chart\n      function print(){\n         if (flashMovie) {\n            flashMovie.print();\n         }\n      }\n      // print chart as bitmap\n      function printAsBitmap(){\n         if (flashMovie) {\n            flashMovie.printAsBitmap();\n         }\n      }\n      \n              \n      // functions called from flash /////////////////////////////////////////\n      // this function is called then chart is finished\n      function amChartInited(chart_id){\n          document.getElementById(\"chartfinished\").value = \"chart \" + chart_id + \" is finished\";           \n      }      \n      // return data \n      function amReturnData(chart_id, param){\n          document.getElementById(\"data\").value = unescape(param);\n      }\n      // return param     \n      function amReturnParam(chart_id, param){\n          document.getElementById(\"returnedparam\").value = unescape(param);\n      }          \n      // mouse over slice           \n      function amSliceOver(chart_id, id, title, value, percents, color, description){\n          document.getElementById(\"sliceover\").value = title + \"(\" + percents + \"%)\";\n      }\n      // mouse out           \n      function amSliceOut(chart_id){\n          document.getElementById(\"sliceover\").value = \"none\";\n      }                  \n      // click slice           \n      function amSliceClick(chart_id, id, title, value, percents, color, description){\n          document.getElementById(\"sliceclick\").value = title;\n      }          \n\n   // ]]>\n</script>\n\n\n<!-- ampie script-->\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"7\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"chart_id\", \"ampie\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/js/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/js/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n\n\t\t<form action=\"\" id=\"myform\">\n      <input type=\"text\" id=\"chartfinished\">\t\t\t\t\n      <input type=\"button\" value=\"reload Data\" onclick=\"reloadData();\" />\n\t    <input type=\"button\" value=\"reload Settings\" onclick=\"reloadSettings();\" />\n      <input type=\"button\" value=\"reload All\" onclick=\"reloadAll();\" />\n    \t<hr noshade size=\"1\">\n      <input type=\"button\" value=\"export image\" onclick=\"exportImage();\" />            \t    \n      <input type=\"button\" value=\"print\" onclick=\"print();\" />\n      <input type=\"button\" value=\"print as bitmap\" onclick=\"printAsBitmap();\" />\n    \t<hr noshade size=\"1\">\t\n      <textarea id=\"data\" rows=\"6\" cols=\"62\"></textarea><br>\n   \t   <input type=\"button\" value=\"Get data\" onclick=\"getData();\" />\n       <input type=\"button\" value=\"Set Data\" onclick=\"setData();\" />\n   \t\t<hr noshade size=\"1\">\t \n  \t  Param: <input type=\"text\" id=\"param\" value=\"background.color\"/> Value: <input type=\"text\" id=\"value\" value=\"0xBBBB00\"/>\n      <input type=\"button\" value=\"set param\" onclick=\"setParam();\" />\n   \t\t<hr noshade size=\"1\">   \n   \t  Param: <input type=\"text\" id=\"getparam\" value=\"pie.angle\">\n   \t\tValue: <input type=\"text\" id=\"returnedparam\" />\n   \t\t<input type=\"button\" value=\"get param\" onclick=\"getParam();\" />\n   \t\t<hr noshade size=\"1\">   \n   \t\tMouse is over slice: <input type=\"text\" id=\"sliceover\" />\n      Clicked on slice: <input type=\"text\" id=\"sliceclick\" />\n   \t\t</p>\n\t\t</form>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_data1.txt",
    "content": "Yes;40;true\nNo;30;true\nDivorced;30;true\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_data2.txt",
    "content": "Zero; 30\nOne;40\nTwo;15\nMore;15\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [50%](Number / Number% / !Number) -->\n    <y>110</y>                                                <!-- [45%](Number / Number% / !Number) -->\n    <radius>50</radius>                                         <!-- [25%] (Number / Number%)  -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number / Number%) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <start_angle></start_angle>                               <!-- [90] (0-360) angle of a first slice. This will work properly only if <pie><height> is set to 0. If height is > 0, then there can be two angles only: 90 and 270 -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#FF0000</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [#FF0F00,#FF6600,#FF9E01,#FCD202,#F8FF01,#B0DE09,#04D215,#0D8ECF,#0D52D1,#2A0CD0,#8A0CCF,#CD0D74,#754DEB,#DDDDDD,#999999,#333333,#990000] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n    <hover_brightness>20</hover_brightness>                   <!-- [0] (from -255 to 255) The pie slice may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <gradient></gradient>                                     <!-- [] (linear/radial) Allows slices to be filled with gradient colors -->\n    <gradient_ratio></gradient_ratio>                         <!-- [0,-40] (Numbers from (-255 to 255) separated by commas) Controls the gradient ratio -->    \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [500%] (Number / Number%) -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->\n    <sequenced></sequenced>                                   <!-- [false] (true / false) Whether the slices should appear all together or one after another -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [20%] (Number / Number%) how far pie slices should be pulled-out then user clicks on them  -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [20%] (Number / Number%) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>70</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[]]>                                           <!-- [{title}: {percents}%] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n    <avoid_overlapping></avoid_overlapping>                   <!-- [true] (true / false) Whether to change data labels positions so that they wouldn't overlap or not -->\n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [{title}: {percents}% ({value}) <br>{description}] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->    \n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [5%] (Number / Number% / !Number) -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be placed below the pie -->\n    <width></width>                                           <!-- [90%] (Number / Number%) -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu> \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>0</x>                                                <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Are you married?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n                                                                  \n  <pie>\n    <x></x>                                                   <!-- [50%](Number / Number% / !Number) -->\n    <y>120</y>                                                <!-- [45%](Number / Number% / !Number) -->\n    <radius>50</radius>                                       <!-- [25%] (Number / Number%)  -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number / Number%) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <start_angle></start_angle>                               <!-- [90] (0-360) angle of a first slice. This will work properly only if <pie><height> is set to 0. If height is > 0, then there can be two angles only: 90 and 270 -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#00CC00</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [#FF0F00,#FF6600,#FF9E01,#FCD202,#F8FF01,#B0DE09,#04D215,#0D8ECF,#0D52D1,#2A0CD0,#8A0CCF,#CD0D74,#754DEB,#DDDDDD,#999999,#333333,#990000] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n    <hover_brightness>20</hover_brightness>                   <!-- [0] (from -255 to 255) The pie slice may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <gradient></gradient>                                     <!-- [] (linear/radial) Allows slices to be filled with gradient colors -->\n    <gradient_ratio></gradient_ratio>                         <!-- [0,-40] (Numbers from (-255 to 255) separated by commas) Controls the gradient ratio -->    \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [500%] (Number / Number%) -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->\n    <sequenced></sequenced>                                   <!-- [false] (true / false) Whether the slices should appear all together or one after another -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [20%] (Number / Number%) how far pie slices should be pulled-out then user clicks on them -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [20%] (Number / Number%) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->\n    <avoid_overlapping></avoid_overlapping>                   <!-- [true] (true / false) Whether to change data labels positions so that they wouldn't overlap or not -->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient-->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [{title}: {percents}% ({value}) <br>{description}] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->    \n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [5%] (Number / Number% / !Number) -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be placed below the pie -->\n    <width></width>                                           <!-- [90%] (Number / Number%) -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu> \n\n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>0</x>                                                <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How many children do you have?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Multiple charts on one page</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../../ampie/swfobject.js\"></script>\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../ampie/ampie.swf\", \"ampie1\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../ampie/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"ampie_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"ampie_data1.txt\"));\n\t\tso.write(\"flashcontent1\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent2\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../ampie/ampie.swf\", \"ampie2\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../ampie/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"ampie_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"ampie_data2.txt\"));\n\t\tso.write(\"flashcontent2\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/licence.txt",
    "content": "*********************************************************************************\nThis AmCharts software, Pie&Donut chart is free under a linkware license\n\nThis means you may not remove or hide in any other way link to amcharts\nweb site - www.amcharts.com.\n\nIf you wish to remove the link, you should purchase commercial license.\n\nYou may not redistribute, sublicense or sell this program without written\npermission of Antanas Marcelionis, the author of amcharts software.\n\nThis software is provided without warranty.\n*********************************************************************************\nA commercial version (without link) is available at amCharts's website: \nhttp://www.amcharts.com/buy/\n\nPlease use amCharts Support Forum for any support queries:\nhttp://www.amcharts.com/forum\n*********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/chart/ampie_1.6.4.1/readme.txt",
    "content": "**********************************************************************\nCheck documentation for help on all topics:\nhttp://www.amcharts.com/docs/\n\nIncase you don't find something, post your questions to support forum:\nhttp://www.amcharts.com/forum/\n**********************************************************************"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/components/jquery-ui/jquery-1.2.6.js",
    "content": "(function(){\n/*\n * jQuery 1.2.6 - New Wave Javascript\n *\n * Copyright (c) 2008 John Resig (jquery.com)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * $Date: 2009/05/06 03:35:07 $\n * $Rev: 5685 $\n */\n\n// Map over jQuery in case of overwrite\nvar _jQuery = window.jQuery,\n// Map over the $ in case of overwrite\n\t_$ = window.$;\n\nvar jQuery = window.jQuery = window.$ = function( selector, context ) {\n\t// The jQuery object is actually just the init constructor 'enhanced'\n\treturn new jQuery.fn.init( selector, context );\n};\n\n// A simple way to check for HTML strings or ID strings\n// (both of which we optimize for)\nvar quickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,\n\n// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.]*$/,\n\n// Will speed up references to undefined, and allows munging its name.\n\tundefined;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector == \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Make sure an element was located\n\t\t\t\t\tif ( elem ){\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id != match[3] )\n\t\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\treturn jQuery( elem );\n\t\t\t\t\t}\n\t\t\t\t\tselector = [];\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document )[ jQuery.fn.ready ? \"ready\" : \"load\" ]( selector );\n\n\t\treturn this.setArray(jQuery.makeArray(selector));\n\t},\n\n\t// The current version of jQuery being used\n\tjquery: \"1.2.6\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// The number of elements contained in the matched element set\n\tlength: 0,\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tjQuery.makeArray( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tvar ret = -1;\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( name.constructor == String )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text != \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] )\n\t\t\t// The elements to wrap the target around\n\t\t\tjQuery( html, this[0].ownerDocument )\n\t\t\t\t.clone()\n\t\t\t\t.insertBefore( this[0] )\n\t\t\t\t.map(function(){\n\t\t\t\t\tvar elem = this;\n\n\t\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\t\treturn elem;\n\t\t\t\t})\n\t\t\t\t.append(this);\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, false, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, true, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\tfind: function( selector ) {\n\t\tvar elems = jQuery.map(this, function(elem){\n\t\t\treturn jQuery.find( selector, elem );\n\t\t});\n\n\t\treturn this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf(\"..\") > -1 ?\n\t\t\tjQuery.unique( elems ) :\n\t\t\telems );\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar clone = this.cloneNode(true),\n\t\t\t\t\tcontainer = document.createElement(\"div\");\n\t\t\t\tcontainer.appendChild(clone);\n\t\t\t\treturn jQuery.clean([container.innerHTML])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Need to set the expando to null on the cloned set if it exists\n\t\t// removeData doesn't work here, IE removes it from the original as well\n\t\t// this is primarily for IE but the data expando shouldn't be copied over in any browser\n\t\tvar clone = ret.find(\"*\").andSelf().each(function(){\n\t\t\tif ( this[ expando ] != undefined )\n\t\t\t\tthis[ expando ] = null;\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true )\n\t\t\tthis.find(\"*\").andSelf().each(function(i){\n\t\t\t\tif (this.nodeType == 3)\n\t\t\t\t\treturn;\n\t\t\t\tvar events = jQuery.data( this, \"events\" );\n\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tfor ( var handler in events[ type ] )\n\t\t\t\t\t\tjQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t});\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, this ) );\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( selector.constructor == String )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ) );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector == 'string' ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value == undefined ) {\n\n\t\t\tif ( this.length ) {\n\t\t\t\tvar elem = this[0];\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\t} else\n\t\t\t\t\treturn (this[0].value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif( value.constructor == Number )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( value.constructor == Array && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value == undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ) );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\n\tdomManip: function( args, table, reverse, callback ) {\n\t\tvar clone = this.length > 1, elems;\n\n\t\treturn this.each(function(){\n\t\t\tif ( !elems ) {\n\t\t\t\telems = jQuery.clean( args, this.ownerDocument );\n\n\t\t\t\tif ( reverse )\n\t\t\t\t\telems.reverse();\n\t\t\t}\n\n\t\t\tvar obj = this;\n\n\t\t\tif ( table && jQuery.nodeName( this, \"table\" ) && jQuery.nodeName( elems[0], \"tr\" ) )\n\t\t\t\tobj = this.getElementsByTagName(\"tbody\")[0] || this.appendChild( this.ownerDocument.createElement(\"tbody\") );\n\n\t\t\tvar scripts = jQuery( [] );\n\n\t\t\tjQuery.each(elems, function(){\n\t\t\t\tvar elem = clone ?\n\t\t\t\t\tjQuery( this ).clone( true )[0] :\n\t\t\t\t\tthis;\n\n\t\t\t\t// execute all scripts after the elements have been injected\n\t\t\t\tif ( jQuery.nodeName( elem, \"script\" ) )\n\t\t\t\t\tscripts = scripts.add( elem );\n\t\t\t\telse {\n\t\t\t\t\t// Remove any inner scripts for later evaluation\n\t\t\t\t\tif ( elem.nodeType == 1 )\n\t\t\t\t\t\tscripts = scripts.add( jQuery( \"script\", elem ).remove() );\n\n\t\t\t\t\t// Inject the elements into the document\n\t\t\t\t\tcallback.call( obj, elem );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscripts.each( evalScript );\n\t\t});\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( target.constructor == Boolean ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target != \"object\" && typeof target != \"function\" )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy == \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {},\n\t// exclude the following css properties to add px\n\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning this function.\n\tisFunction: function( fn ) {\n\t\treturn !!fn && typeof fn != \"string\" && !fn.nodeName &&\n\t\t\tfn.constructor != Array && /^[\\s[]?function/.test( fn + \"\" );\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.documentElement && !elem.body ||\n\t\t\telem.tagName && elem.ownerDocument && !elem.ownerDocument.body;\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tdata = jQuery.trim( data );\n\n\t\tif ( data ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.browser.msie )\n\t\t\t\tscript.text = data;\n\t\t\telse\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length == undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length == undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn value && value.constructor == Number && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames != undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\t\t\t\tvar padding = 0, border = 0;\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tpadding += parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tborder += parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t\tval -= Math.round(padding + border);\n\t\t\t}\n\n\t\t\tif ( jQuery(elem).is(\":visible\") )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, val);\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// A helper method for determining if an element's values are broken\n\t\tfunction color( elem ) {\n\t\t\tif ( !jQuery.browser.safari )\n\t\t\t\treturn false;\n\n\t\t\t// defaultView is cached\n\t\t\tvar ret = defaultView.getComputedStyle( elem, null );\n\t\t\treturn !ret || ret.getPropertyValue(\"color\") == \"\";\n\t\t}\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && jQuery.browser.msie ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\t\t// Opera sometimes will give the wrong display answer, this fixes it, see #2037\n\t\tif ( jQuery.browser.opera && name == \"display\" ) {\n\t\t\tvar save = style.outline;\n\t\t\tstyle.outline = \"0 solid black\";\n\t\t\tstyle.outline = save;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle && !color( elem ) )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// If the element isn't reporting its values properly in Safari\n\t\t\t// then some display: none elements are involved\n\t\t\telse {\n\t\t\t\tvar swap = [], stack = [], a = elem, i = 0;\n\n\t\t\t\t// Locate all of the parent display: none elements\n\t\t\t\tfor ( ; a && color(a); a = a.parentNode )\n\t\t\t\t\tstack.unshift(a);\n\n\t\t\t\t// Go through and make them visible, but in reverse\n\t\t\t\t// (It would be better if we knew the exact display type that they had)\n\t\t\t\tfor ( ; i < stack.length; i++ )\n\t\t\t\t\tif ( color( stack[ i ] ) ) {\n\t\t\t\t\t\tswap[ i ] = stack[ i ].style.display;\n\t\t\t\t\t\tstack[ i ].style.display = \"block\";\n\t\t\t\t\t}\n\n\t\t\t\t// Since we flip the display style, we have to handle that\n\t\t\t\t// one special, otherwise get the value\n\t\t\t\tret = name == \"display\" && swap[ stack.length - 1 ] != null ?\n\t\t\t\t\t\"none\" :\n\t\t\t\t\t( computedStyle && computedStyle.getPropertyValue( name ) ) || \"\";\n\n\t\t\t\t// Finally, revert the display styles back\n\t\t\t\tfor ( i = 0; i < swap.length; i++ )\n\t\t\t\t\tif ( swap[ i ] != null )\n\t\t\t\t\t\tstack[ i ].style.display = swap[ i ];\n\t\t\t}\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context ) {\n\t\tvar ret = [];\n\t\tcontext = context || document;\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif (typeof context.createElement == 'undefined')\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\tif ( elem.constructor == Number )\n\t\t\t\telem += '';\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem == \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement(\"div\");\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\tjQuery.browser.msie &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( jQuery.browser.msie ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar tbody = !tags.indexOf(\"<table\") && tags.indexOf(\"<tbody\") < 0 ?\n\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && tags.indexOf(\"<tbody\") < 0 ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( /^\\s/.test( elem ) )\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\n\t\t\t\t}\n\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.length === 0 && (!jQuery.nodeName( elem, \"form\" ) && !jQuery.nodeName( elem, \"select\" )) )\n\t\t\t\treturn;\n\n\t\t\tif ( elem[0] == undefined || jQuery.nodeName( elem, \"form\" ) || elem.options )\n\t\t\t\tret.push( elem );\n\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined,\n\t\t\tmsie = jQuery.browser.msie;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && jQuery.browser.safari )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( msie && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = msie && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( msie && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t//the window, strings and functions also have 'length'\n\t\t\tif( i == null || array.split || array.setInterval || array.call )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( jQuery.browser.msie ) {\n\t\t\twhile ( elem = second[ i++ ] )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( elem = second[ i++ ] )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\nvar styleFloat = jQuery.browser.msie ?\n\t\"styleFloat\" :\n\t\"cssFloat\";\n\njQuery.extend({\n\t// Check to see if the W3C box model is being used\n\tboxModel: !jQuery.browser.msie || document.compatMode == \"CSS1Compat\",\n\n\tprops: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\t\"float\": styleFloat,\n\t\tcssFloat: styleFloat,\n\t\tstyleFloat: styleFloat,\n\t\treadonly: \"readOnly\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\"\n\t}\n});\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ) );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function() {\n\t\tvar args = arguments;\n\n\t\treturn this.each(function(){\n\t\t\tfor ( var i = 0, length = args.length; i < length; i++ )\n\t\t\t\tjQuery( args[ i ] )[ original ]( this );\n\t\t});\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames ) {\n\t\tjQuery.className[ jQuery.className.has( this, classNames ) ? \"remove\" : \"add\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).r.length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add(this).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery( \">*\", this ).remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Opera reports document.body.client[Width/Height] properly in both quirks and standards\n\t\t\tjQuery.browser.opera && document.body[ \"client\" + name ] ||\n\n\t\t\t// Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)\n\t\t\tjQuery.browser.safari && window[ \"inner\" + name ] ||\n\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] || document.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tMath.max(document.body[\"scroll\" + name], document.documentElement[\"scroll\" + name]),\n\t\t\t\t\tMath.max(document.body[\"offset\" + name], document.documentElement[\"offset\" + name])\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize == undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, size.constructor == String ? size : size + \"px\" );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?\n\t\t\"(?:[\\\\w*_-]|\\\\\\\\.)\" :\n\t\t\"(?:[\\\\w\\u0128-\\uFFFF*_-]|\\\\\\\\.)\",\n\tquickChild = new RegExp(\"^>\\\\s*(\" + chars + \"+)\"),\n\tquickID = new RegExp(\"^(\" + chars + \"+)(#)(\" + chars + \"+)\"),\n\tquickClass = new RegExp(\"^([#.]?)(\" + chars + \"*)\");\n\njQuery.extend({\n\texpr: {\n\t\t\"\": function(a,i,m){return m[2]==\"*\"||jQuery.nodeName(a,m[2]);},\n\t\t\"#\": function(a,i,m){return a.getAttribute(\"id\")==m[2];},\n\t\t\":\": {\n\t\t\t// Position Checks\n\t\t\tlt: function(a,i,m){return i<m[3]-0;},\n\t\t\tgt: function(a,i,m){return i>m[3]-0;},\n\t\t\tnth: function(a,i,m){return m[3]-0==i;},\n\t\t\teq: function(a,i,m){return m[3]-0==i;},\n\t\t\tfirst: function(a,i){return i==0;},\n\t\t\tlast: function(a,i,m,r){return i==r.length-1;},\n\t\t\teven: function(a,i){return i%2==0;},\n\t\t\todd: function(a,i){return i%2;},\n\n\t\t\t// Child Checks\n\t\t\t\"first-child\": function(a){return a.parentNode.getElementsByTagName(\"*\")[0]==a;},\n\t\t\t\"last-child\": function(a){return jQuery.nth(a.parentNode.lastChild,1,\"previousSibling\")==a;},\n\t\t\t\"only-child\": function(a){return !jQuery.nth(a.parentNode.lastChild,2,\"previousSibling\");},\n\n\t\t\t// Parent Checks\n\t\t\tparent: function(a){return a.firstChild;},\n\t\t\tempty: function(a){return !a.firstChild;},\n\n\t\t\t// Text Check\n\t\t\tcontains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||\"\").indexOf(m[3])>=0;},\n\n\t\t\t// Visibility\n\t\t\tvisible: function(a){return \"hidden\"!=a.type&&jQuery.css(a,\"display\")!=\"none\"&&jQuery.css(a,\"visibility\")!=\"hidden\";},\n\t\t\thidden: function(a){return \"hidden\"==a.type||jQuery.css(a,\"display\")==\"none\"||jQuery.css(a,\"visibility\")==\"hidden\";},\n\n\t\t\t// Form attributes\n\t\t\tenabled: function(a){return !a.disabled;},\n\t\t\tdisabled: function(a){return a.disabled;},\n\t\t\tchecked: function(a){return a.checked;},\n\t\t\tselected: function(a){return a.selected||jQuery.attr(a,\"selected\");},\n\n\t\t\t// Form elements\n\t\t\ttext: function(a){return \"text\"==a.type;},\n\t\t\tradio: function(a){return \"radio\"==a.type;},\n\t\t\tcheckbox: function(a){return \"checkbox\"==a.type;},\n\t\t\tfile: function(a){return \"file\"==a.type;},\n\t\t\tpassword: function(a){return \"password\"==a.type;},\n\t\t\tsubmit: function(a){return \"submit\"==a.type;},\n\t\t\timage: function(a){return \"image\"==a.type;},\n\t\t\treset: function(a){return \"reset\"==a.type;},\n\t\t\tbutton: function(a){return \"button\"==a.type||jQuery.nodeName(a,\"button\");},\n\t\t\tinput: function(a){return /input|select|textarea|button/i.test(a.nodeName);},\n\n\t\t\t// :has()\n\t\t\thas: function(a,i,m){return jQuery.find(m[3],a).length;},\n\n\t\t\t// :header\n\t\t\theader: function(a){return /h\\d/i.test(a.nodeName);},\n\n\t\t\t// :animated\n\t\t\tanimated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}\n\t\t}\n\t},\n\n\t// The regular expressions that power the parsing engine\n\tparse: [\n\t\t// Match: [@value='test'], [@foo]\n\t\t/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *('?\"?)(.*?)\\4 *\\]/,\n\n\t\t// Match: :contains('foo')\n\t\t/^(:)([\\w-]+)\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)/,\n\n\t\t// Match: :even, :last-child, #id, .class\n\t\tnew RegExp(\"^([:.#]*)(\" + chars + \"+)\")\n\t],\n\n\tmultiFilter: function( expr, elems, not ) {\n\t\tvar old, cur = [];\n\n\t\twhile ( expr && expr != old ) {\n\t\t\told = expr;\n\t\t\tvar f = jQuery.filter( expr, elems, not );\n\t\t\texpr = f.t.replace(/^\\s*,\\s*/, \"\" );\n\t\t\tcur = not ? elems = f.r : jQuery.merge( cur, f.r );\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tfind: function( t, context ) {\n\t\t// Quickly handle non-string expressions\n\t\tif ( typeof t != \"string\" )\n\t\t\treturn [ t ];\n\n\t\t// check to make sure context is a DOM element or a document\n\t\tif ( context && context.nodeType != 1 && context.nodeType != 9)\n\t\t\treturn [ ];\n\n\t\t// Set the correct context (if none is provided)\n\t\tcontext = context || document;\n\n\t\t// Initialize the search\n\t\tvar ret = [context], done = [], last, nodeName;\n\n\t\t// Continue while a selector expression exists, and while\n\t\t// we're no longer looping upon ourselves\n\t\twhile ( t && last != t ) {\n\t\t\tvar r = [];\n\t\t\tlast = t;\n\n\t\t\tt = jQuery.trim(t);\n\n\t\t\tvar foundToken = false,\n\n\t\t\t// An attempt at speeding up child selectors that\n\t\t\t// point to a specific element tag\n\t\t\t\tre = quickChild,\n\n\t\t\t\tm = re.exec(t);\n\n\t\t\tif ( m ) {\n\t\t\t\tnodeName = m[1].toUpperCase();\n\n\t\t\t\t// Perform our own iteration and filter\n\t\t\t\tfor ( var i = 0; ret[i]; i++ )\n\t\t\t\t\tfor ( var c = ret[i].firstChild; c; c = c.nextSibling )\n\t\t\t\t\t\tif ( c.nodeType == 1 && (nodeName == \"*\" || c.nodeName.toUpperCase() == nodeName) )\n\t\t\t\t\t\t\tr.push( c );\n\n\t\t\t\tret = r;\n\t\t\t\tt = t.replace( re, \"\" );\n\t\t\t\tif ( t.indexOf(\" \") == 0 ) continue;\n\t\t\t\tfoundToken = true;\n\t\t\t} else {\n\t\t\t\tre = /^([>+~])\\s*(\\w*)/i;\n\n\t\t\t\tif ( (m = re.exec(t)) != null ) {\n\t\t\t\t\tr = [];\n\n\t\t\t\t\tvar merge = {};\n\t\t\t\t\tnodeName = m[2].toUpperCase();\n\t\t\t\t\tm = m[1];\n\n\t\t\t\t\tfor ( var j = 0, rl = ret.length; j < rl; j++ ) {\n\t\t\t\t\t\tvar n = m == \"~\" || m == \"+\" ? ret[j].nextSibling : ret[j].firstChild;\n\t\t\t\t\t\tfor ( ; n; n = n.nextSibling )\n\t\t\t\t\t\t\tif ( n.nodeType == 1 ) {\n\t\t\t\t\t\t\t\tvar id = jQuery.data(n);\n\n\t\t\t\t\t\t\t\tif ( m == \"~\" && merge[id] ) break;\n\n\t\t\t\t\t\t\t\tif (!nodeName || n.nodeName.toUpperCase() == nodeName ) {\n\t\t\t\t\t\t\t\t\tif ( m == \"~\" ) merge[id] = true;\n\t\t\t\t\t\t\t\t\tr.push( n );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( m == \"+\" ) break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret = r;\n\n\t\t\t\t\t// And remove the token\n\t\t\t\t\tt = jQuery.trim( t.replace( re, \"\" ) );\n\t\t\t\t\tfoundToken = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// See if there's still an expression, and that we haven't already\n\t\t\t// matched a token\n\t\t\tif ( t && !foundToken ) {\n\t\t\t\t// Handle multiple expressions\n\t\t\t\tif ( !t.indexOf(\",\") ) {\n\t\t\t\t\t// Clean the result set\n\t\t\t\t\tif ( context == ret[0] ) ret.shift();\n\n\t\t\t\t\t// Merge the result sets\n\t\t\t\t\tdone = jQuery.merge( done, ret );\n\n\t\t\t\t\t// Reset the context\n\t\t\t\t\tr = ret = [context];\n\n\t\t\t\t\t// Touch up the selector string\n\t\t\t\t\tt = \" \" + t.substr(1,t.length);\n\n\t\t\t\t} else {\n\t\t\t\t\t// Optimize for the case nodeName#idName\n\t\t\t\t\tvar re2 = quickID;\n\t\t\t\t\tvar m = re2.exec(t);\n\n\t\t\t\t\t// Re-organize the results, so that they're consistent\n\t\t\t\t\tif ( m ) {\n\t\t\t\t\t\tm = [ 0, m[2], m[3], m[1] ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, do a traditional filter check for\n\t\t\t\t\t\t// ID, class, and element selectors\n\t\t\t\t\t\tre2 = quickClass;\n\t\t\t\t\t\tm = re2.exec(t);\n\t\t\t\t\t}\n\n\t\t\t\t\tm[2] = m[2].replace(/\\\\/g, \"\");\n\n\t\t\t\t\tvar elem = ret[ret.length-1];\n\n\t\t\t\t\t// Try to do a global search by ID, where we can\n\t\t\t\t\tif ( m[1] == \"#\" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {\n\t\t\t\t\t\t// Optimization for HTML document case\n\t\t\t\t\t\tvar oid = elem.getElementById(m[2]);\n\n\t\t\t\t\t\t// Do a quick check for the existence of the actual ID attribute\n\t\t\t\t\t\t// to avoid selecting by the name attribute in IE\n\t\t\t\t\t\t// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form\n\t\t\t\t\t\tif ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == \"string\" && oid.id != m[2] )\n\t\t\t\t\t\t\toid = jQuery('[@id=\"'+m[2]+'\"]', elem)[0];\n\n\t\t\t\t\t\t// Do a quick check for node name (where applicable) so\n\t\t\t\t\t\t// that div#foo searches will be really fast\n\t\t\t\t\t\tret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We need to find all descendant elements\n\t\t\t\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\t\t\t\t// Grab the tag name being searched for\n\t\t\t\t\t\t\tvar tag = m[1] == \"#\" && m[3] ? m[3] : m[1] != \"\" || m[0] == \"\" ? \"*\" : m[2];\n\n\t\t\t\t\t\t\t// Handle IE7 being really dumb about <object>s\n\t\t\t\t\t\t\tif ( tag == \"*\" && ret[i].nodeName.toLowerCase() == \"object\" )\n\t\t\t\t\t\t\t\ttag = \"param\";\n\n\t\t\t\t\t\t\tr = jQuery.merge( r, ret[i].getElementsByTagName( tag ));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// It's faster to filter by class and be done with it\n\t\t\t\t\t\tif ( m[1] == \".\" )\n\t\t\t\t\t\t\tr = jQuery.classFilter( r, m[2] );\n\n\t\t\t\t\t\t// Same with ID filtering\n\t\t\t\t\t\tif ( m[1] == \"#\" ) {\n\t\t\t\t\t\t\tvar tmp = [];\n\n\t\t\t\t\t\t\t// Try to find the element with the ID\n\t\t\t\t\t\t\tfor ( var i = 0; r[i]; i++ )\n\t\t\t\t\t\t\t\tif ( r[i].getAttribute(\"id\") == m[2] ) {\n\t\t\t\t\t\t\t\t\ttmp = [ r[i] ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tr = tmp;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret = r;\n\t\t\t\t\t}\n\n\t\t\t\t\tt = t.replace( re2, \"\" );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// If a selector string still exists\n\t\t\tif ( t ) {\n\t\t\t\t// Attempt to filter it\n\t\t\t\tvar val = jQuery.filter(t,r);\n\t\t\t\tret = r = val.r;\n\t\t\t\tt = jQuery.trim(val.t);\n\t\t\t}\n\t\t}\n\n\t\t// An error occurred with the selector;\n\t\t// just return an empty set instead\n\t\tif ( t )\n\t\t\tret = [];\n\n\t\t// Remove the root context\n\t\tif ( ret && context == ret[0] )\n\t\t\tret.shift();\n\n\t\t// And combine the results\n\t\tdone = jQuery.merge( done, ret );\n\n\t\treturn done;\n\t},\n\n\tclassFilter: function(r,m,not){\n\t\tm = \" \" + m + \" \";\n\t\tvar tmp = [];\n\t\tfor ( var i = 0; r[i]; i++ ) {\n\t\t\tvar pass = (\" \" + r[i].className + \" \").indexOf( m ) >= 0;\n\t\t\tif ( !not && pass || not && !pass )\n\t\t\t\ttmp.push( r[i] );\n\t\t}\n\t\treturn tmp;\n\t},\n\n\tfilter: function(t,r,not) {\n\t\tvar last;\n\n\t\t// Look for common filter expressions\n\t\twhile ( t && t != last ) {\n\t\t\tlast = t;\n\n\t\t\tvar p = jQuery.parse, m;\n\n\t\t\tfor ( var i = 0; p[i]; i++ ) {\n\t\t\t\tm = p[i].exec( t );\n\n\t\t\t\tif ( m ) {\n\t\t\t\t\t// Remove what we just matched\n\t\t\t\t\tt = t.substring( m[0].length );\n\n\t\t\t\t\tm[2] = m[2].replace(/\\\\/g, \"\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !m )\n\t\t\t\tbreak;\n\n\t\t\t// :not() is a special case that can be optimized by\n\t\t\t// keeping it out of the expression list\n\t\t\tif ( m[1] == \":\" && m[2] == \"not\" )\n\t\t\t\t// optimize if only one selector found (most common case)\n\t\t\t\tr = isSimple.test( m[3] ) ?\n\t\t\t\t\tjQuery.filter(m[3], r, true).r :\n\t\t\t\t\tjQuery( r ).not( m[3] );\n\n\t\t\t// We can get a big speed boost by filtering by class here\n\t\t\telse if ( m[1] == \".\" )\n\t\t\t\tr = jQuery.classFilter(r, m[2], not);\n\n\t\t\telse if ( m[1] == \"[\" ) {\n\t\t\t\tvar tmp = [], type = m[3];\n\n\t\t\t\tfor ( var i = 0, rl = r.length; i < rl; i++ ) {\n\t\t\t\t\tvar a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];\n\n\t\t\t\t\tif ( z == null || /href|src|selected/.test(m[2]) )\n\t\t\t\t\t\tz = jQuery.attr(a,m[2]) || '';\n\n\t\t\t\t\tif ( (type == \"\" && !!z ||\n\t\t\t\t\t\t type == \"=\" && z == m[5] ||\n\t\t\t\t\t\t type == \"!=\" && z != m[5] ||\n\t\t\t\t\t\t type == \"^=\" && z && !z.indexOf(m[5]) ||\n\t\t\t\t\t\t type == \"$=\" && z.substr(z.length - m[5].length) == m[5] ||\n\t\t\t\t\t\t (type == \"*=\" || type == \"~=\") && z.indexOf(m[5]) >= 0) ^ not )\n\t\t\t\t\t\t\ttmp.push( a );\n\t\t\t\t}\n\n\t\t\t\tr = tmp;\n\n\t\t\t// We can get a speed boost by handling nth-child here\n\t\t\t} else if ( m[1] == \":\" && m[2] == \"nth-child\" ) {\n\t\t\t\tvar merge = {}, tmp = [],\n\t\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\t\ttest = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\t\tm[3] == \"even\" && \"2n\" || m[3] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t\t!/\\D/.test(m[3]) && \"0n+\" + m[3] || m[3]),\n\t\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\t\tfirst = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;\n\n\t\t\t\t// loop through all the elements left in the jQuery object\n\t\t\t\tfor ( var i = 0, rl = r.length; i < rl; i++ ) {\n\t\t\t\t\tvar node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);\n\n\t\t\t\t\tif ( !merge[id] ) {\n\t\t\t\t\t\tvar c = 1;\n\n\t\t\t\t\t\tfor ( var n = parentNode.firstChild; n; n = n.nextSibling )\n\t\t\t\t\t\t\tif ( n.nodeType == 1 )\n\t\t\t\t\t\t\t\tn.nodeIndex = c++;\n\n\t\t\t\t\t\tmerge[id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar add = false;\n\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\tif ( node.nodeIndex == last )\n\t\t\t\t\t\t\tadd = true;\n\t\t\t\t\t} else if ( (node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0 )\n\t\t\t\t\t\tadd = true;\n\n\t\t\t\t\tif ( add ^ not )\n\t\t\t\t\t\ttmp.push( node );\n\t\t\t\t}\n\n\t\t\t\tr = tmp;\n\n\t\t\t// Otherwise, find the expression to execute\n\t\t\t} else {\n\t\t\t\tvar fn = jQuery.expr[ m[1] ];\n\t\t\t\tif ( typeof fn == \"object\" )\n\t\t\t\t\tfn = fn[ m[2] ];\n\n\t\t\t\tif ( typeof fn == \"string\" )\n\t\t\t\t\tfn = eval(\"false||function(a,i){return \" + fn + \";}\");\n\n\t\t\t\t// Execute it against the current filter\n\t\t\t\tr = jQuery.grep( r, function(elem, i){\n\t\t\t\t\treturn fn(elem, i, m, r);\n\t\t\t\t}, not );\n\t\t\t}\n\t\t}\n\n\t\t// Return an array of filtered elements (r)\n\t\t// and the modified expression string (t)\n\t\treturn { r: r, t: t };\n\t},\n\n\tdir: function( elem, dir ){\n\t\tvar matched = [],\n\t\t\tcur = elem[dir];\n\t\twhile ( cur && cur != document ) {\n\t\t\tif ( cur.nodeType == 1 )\n\t\t\t\tmatched.push( cur );\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function(cur,result,dir,elem){\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] )\n\t\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\t\tbreak;\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\t\tr.push( n );\n\t\t}\n\n\t\treturn r;\n\t}\n});\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code orignated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( jQuery.browser.msie && elem.setInterval )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif( data != undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn, function() {\n\t\t\t\t// Pass arguments and context to original handler\n\t\t\t\treturn fn.apply(this, arguments);\n\t\t\t});\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\tif ( typeof jQuery != \"undefined\" && !jQuery.event.triggered )\n\t\t\t\t\treturn jQuery.event.handle.apply(arguments.callee.elem, arguments);\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar parts = type.split(\".\");\n\t\t\ttype = parts[0];\n\t\t\thandler.type = parts[1];\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types == undefined || (typeof types == \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar parts = type.split(\".\");\n\t\t\t\t\ttype = parts[0];\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( handler in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( !parts[1] || events[type][handler].type == parts[1] )\n\t\t\t\t\t\t\t\t\tdelete events[type][handler];\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\ttrigger: function(type, data, elem, donative, extra) {\n\t\t// Clone the incoming data, if any\n\t\tdata = jQuery.makeArray(data);\n\n\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\ttype = type.slice(0, -1);\n\t\t\tvar exclusive = true;\n\t\t}\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\tif ( this.global[type] )\n\t\t\t\tjQuery(\"*\").add([window, document]).trigger(type, data);\n\n\t\t// Handle triggering a single element\n\t\t} else {\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\n\t\t\tvar val, ret, fn = jQuery.isFunction( elem[ type ] || null ),\n\t\t\t\t// Check to see if we need to provide a fake event, or not\n\t\t\t\tevent = !data[0] || !data[0].preventDefault;\n\n\t\t\t// Pass along a fake event\n\t\t\tif ( event ) {\n\t\t\t\tdata.unshift({\n\t\t\t\t\ttype: type,\n\t\t\t\t\ttarget: elem,\n\t\t\t\t\tpreventDefault: function(){},\n\t\t\t\t\tstopPropagation: function(){},\n\t\t\t\t\ttimeStamp: now()\n\t\t\t\t});\n\t\t\t\tdata[0][expando] = true; // no need to fix fake event\n\t\t\t}\n\n\t\t\t// Enforce the right trigger type\n\t\t\tdata[0].type = type;\n\t\t\tif ( exclusive )\n\t\t\t\tdata[0].exclusive = true;\n\n\t\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\t\tif ( handle )\n\t\t\t\tval = handle.apply( elem, data );\n\n\t\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\t\tif ( (!fn || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\t\tval = false;\n\n\t\t\t// Extra functions don't get the custom event object\n\t\t\tif ( event )\n\t\t\t\tdata.shift();\n\n\t\t\t// Handle triggering of extra function\n\t\t\tif ( extra && jQuery.isFunction( extra ) ) {\n\t\t\t\t// call the extra function and tack the current return value on the end for possible inspection\n\t\t\t\tret = extra.apply( elem, val == null ? data : data.concat( val ) );\n\t\t\t\t// if anything is returned, give it precedence and have it overwrite the previous value\n\t\t\t\tif (ret !== undefined)\n\t\t\t\t\tval = ret;\n\t\t\t}\n\n\t\t\t// Trigger the native events (except for clicks on links)\n\t\t\tif ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\t\tthis.triggered = true;\n\t\t\t\ttry {\n\t\t\t\t\telem[ type ]();\n\t\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\tthis.triggered = false;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar val, ret, namespace, all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\n\t\t// Namespaced event handlers\n\t\tnamespace = event.type.split(\".\");\n\t\tevent.type = namespace[0];\n\t\tnamespace = namespace[1];\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespace && !event.exclusive;\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || handler.type == namespace ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tret = handler.apply( this, arguments );\n\n\t\t\t\tif ( val !== false )\n\t\t\t\t\tval = ret;\n\n\t\t\t\tif ( ret === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val;\n\t},\n\n\tfix: function(event) {\n\t\tif ( event[expando] == true )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = { originalEvent: originalEvent };\n\t\tvar props = \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which\".split(\" \");\n\t\tfor ( var i=props.length; i; i-- )\n\t\t\tevent[ props[i] ] = originalEvent[ props[i] ];\n\n\t\t// Mark it as fixed\n\t\tevent[expando] = true;\n\n\t\t// add preventDefault and stopPropagation since\n\t\t// they will not work on the clone\n\t\tevent.preventDefault = function() {\n\t\t\t// if preventDefault exists run it on the original event\n\t\t\tif (originalEvent.preventDefault)\n\t\t\t\toriginalEvent.preventDefault();\n\t\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t\toriginalEvent.returnValue = false;\n\t\t};\n\t\tevent.stopPropagation = function() {\n\t\t\t// if stopPropagation exists run it on the original event\n\t\t\tif (originalEvent.stopPropagation)\n\t\t\t\toriginalEvent.stopPropagation();\n\t\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\t\toriginalEvent.cancelBubble = true;\n\t\t};\n\n\t\t// Fix timeStamp\n\t\tevent.timeStamp = event.timeStamp || now();\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\tsetup: function() {\n\t\t\t\t// Make sure the ready event is setup\n\t\t\t\tbindReady();\n\t\t\t\treturn;\n\t\t\t},\n\n\t\t\tteardown: function() { return; }\n\t\t},\n\n\t\tmouseenter: {\n\t\t\tsetup: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).bind(\"mouseover\", jQuery.event.special.mouseenter.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tteardown: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).unbind(\"mouseover\", jQuery.event.special.mouseenter.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\thandler: function(event) {\n\t\t\t\t// If we actually just moused on to a sub-element, ignore it\n\t\t\t\tif ( withinElement(event, this) ) return true;\n\t\t\t\t// Execute the right handlers by setting the event type to mouseenter\n\t\t\t\tevent.type = \"mouseenter\";\n\t\t\t\treturn jQuery.event.handle.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tmouseleave: {\n\t\t\tsetup: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).bind(\"mouseout\", jQuery.event.special.mouseleave.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tteardown: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).unbind(\"mouseout\", jQuery.event.special.mouseleave.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\thandler: function(event) {\n\t\t\t\t// If we actually just moused on to a sub-element, ignore it\n\t\t\t\tif ( withinElement(event, this) ) return true;\n\t\t\t\t// Execute the right handlers by setting the event type to mouseleave\n\t\t\t\tevent.type = \"mouseleave\";\n\t\t\t\treturn jQuery.event.handle.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this, true, fn );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data, fn ) {\n\t\treturn this[0] && jQuery.event.trigger( type, data, this[0], false, fn );\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( function() { return fn.call(this, jQuery); } );\n\n\t\treturn this;\n\t}\n});\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera (see further below for it) and webkit nightlies currently support this event\n\tif ( document.addEventListener && !jQuery.browser.opera)\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", jQuery.ready, false );\n\n\t// If IE is used and is not in a frame\n\t// Continually check to see if the document is ready\n\tif ( jQuery.browser.msie && window == top ) (function(){\n\t\tif (jQuery.isReady) return;\n\t\ttry {\n\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t} catch( error ) {\n\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\treturn;\n\t\t}\n\t\t// and execute any waiting functions\n\t\tjQuery.ready();\n\t})();\n\n\tif ( jQuery.browser.opera )\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function () {\n\t\t\tif (jQuery.isReady) return;\n\t\t\tfor (var i = 0; i < document.styleSheets.length; i++)\n\t\t\t\tif (document.styleSheets[i].disabled) {\n\t\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t}, false);\n\n\tif ( jQuery.browser.safari ) {\n\t\tvar numStyles;\n\t\t(function(){\n\t\t\tif (jQuery.isReady) return;\n\t\t\tif ( document.readyState != \"loaded\" && document.readyState != \"complete\" ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( numStyles === undefined )\n\t\t\t\tnumStyles = jQuery(\"style, link[rel=stylesheet]\").length;\n\t\t\tif ( document.styleSheets.length != numStyles ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,\" +\n\t\"submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event, elem) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem; }\n\t// Return true if we actually just moused on to a sub-element\n\treturn parent == elem;\n};\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery(window).bind(\"unload\", function() {\n\tjQuery(\"*\").add(document).unbind();\n});\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url != 'string' )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\tcallback = callback || function(){};\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn jQuery.nodeName(this, \"form\") ?\n\t\t\t\tjQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tval.constructor == Array ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\ttimeout: 0,\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data != \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar remote = /^(?:\\w+:)?\\/\\/([^\\/?#]+)/;\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\"\n\t\t\t\t&& remote.test(s.url) && remote.exec(s.url)[1] != location.host ){\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\tvar xhr = window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// cleanup active request counter\n\t\t\ts.global && jQuery.active--;\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\tif ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" && \"timeout\" ||\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) && \"error\" ||\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) && \"notmodified\" ||\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s.dataFilter );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr ) {\n\t\t\t\t\t\t// Cancel the request\n\t\t\t\t\t\txhr.abort();\n\n\t\t\t\t\t\tif( !requestDone )\n\t\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t\t}\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223 ||\n\t\t\t\tjQuery.browser.safari && xhr.status == undefined;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url] ||\n\t\t\t\tjQuery.browser.safari && xhr.status == undefined;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, filter ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\tif( filter )\n\t\t\tdata = filter( data, type );\n\n\t\t// If the type is \"script\", eval it in global context\n\t\tif ( type == \"script\" )\n\t\t\tjQuery.globalEval( data );\n\n\t\t// Get the JavaScript object, if JSON is used.\n\t\tif ( type == \"json\" )\n\t\t\tdata = eval(\"(\" + data + \")\");\n\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [];\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( a.constructor == Array || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\ts.push( encodeURIComponent(this.name) + \"=\" + encodeURIComponent( this.value ) );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( a[j] && a[j].constructor == Array )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\ts.push( encodeURIComponent(j) + \"=\" + encodeURIComponent( this ) );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\ts.push( encodeURIComponent(j) + \"=\" + encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] ) );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\treturn speed ?\n\t\t\tthis.animate({\n\t\t\t\theight: \"show\", width: \"show\", opacity: \"show\"\n\t\t\t}, speed, callback) :\n\n\t\t\tthis.filter(\":hidden\").each(function(){\n\t\t\t\tthis.style.display = this.oldblock || \"\";\n\t\t\t\tif ( jQuery.css(this,\"display\") == \"none\" ) {\n\t\t\t\t\tvar elem = jQuery(\"<\" + this.tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\tthis.style.display = elem.css(\"display\");\n\t\t\t\t\t// handle an edge condition where css is - div { display:none; } or similar\n\t\t\t\t\tif (this.style.display == \"none\")\n\t\t\t\t\t\tthis.style.display = \"block\";\n\t\t\t\t\telem.remove();\n\t\t\t\t}\n\t\t\t}).end();\n\t},\n\n\thide: function(speed,callback){\n\t\treturn speed ?\n\t\t\tthis.animate({\n\t\t\t\theight: \"hide\", width: \"hide\", opacity: \"hide\"\n\t\t\t}, speed, callback) :\n\n\t\t\tthis.filter(\":visible\").each(function(){\n\t\t\t\tthis.oldblock = this.oldblock || jQuery.css(this,\"display\");\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t}).end();\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn ?\n\t\t\t\tthis.animate({\n\t\t\t\t\theight: \"toggle\", width: \"toggle\", opacity: \"toggle\"\n\t\t\t\t}, fn, fn2) :\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tjQuery(this)[ jQuery(this).is(\":hidden\") ? \"show\" : \"hide\" ]();\n\t\t\t\t});\n\t},\n\n\tslideDown: function(speed,callback){\n\t\treturn this.animate({height: \"show\"}, speed, callback);\n\t},\n\n\tslideUp: function(speed,callback){\n\t\treturn this.animate({height: \"hide\"}, speed, callback);\n\t},\n\n\tslideToggle: function(speed, callback){\n\t\treturn this.animate({height: \"toggle\"}, speed, callback);\n\t},\n\n\tfadeIn: function(speed, callback){\n\t\treturn this.animate({opacity: \"show\"}, speed, callback);\n\t},\n\n\tfadeOut: function(speed, callback){\n\t\treturn this.animate({opacity: \"hide\"}, speed, callback);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\tif ( this.nodeType != 1)\n\t\t\t\treturn false;\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = jQuery(this).is(\":hidden\"), self = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( p == \"height\" || p == \"width\" ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tqueue: function(type, fn){\n\t\tif ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {\n\t\t\tfn = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( !type || (typeof type == \"string\" && !fn) )\n\t\t\treturn queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tif ( fn.constructor == Array )\n\t\t\t\tqueue(this, type, fn);\n\t\t\telse {\n\t\t\t\tqueue(this, type).push( fn );\n\n\t\t\t\tif ( queue(this, type).length == 1 )\n\t\t\t\t\tfn.call(this);\n\t\t\t}\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\nvar queue = function( elem, type, array ) {\n\tif ( elem ){\n\n\t\ttype = type || \"fx\";\n\n\t\tvar q = jQuery.data( elem, type + \"queue\" );\n\n\t\tif ( !q || array )\n\t\t\tq = jQuery.data( elem, type + \"queue\", jQuery.makeArray(array) );\n\n\t}\n\treturn q;\n};\n\njQuery.fn.dequeue = function(type){\n\ttype = type || \"fx\";\n\n\treturn this.each(function(){\n\t\tvar q = queue(this, type);\n\n\t\tq.shift();\n\n\t\tif ( q.length )\n\t\t\tq[0].call( this );\n\t});\n};\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = speed && speed.constructor == Object ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && easing.constructor != Function && easing\n\t\t};\n\n\t\topt.duration = (opt.duration && opt.duration.constructor == Number ?\n\t\t\topt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\ttimerId: null,\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( this.prop == \"height\" || this.prop == \"width\" )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && this.elem.style[this.prop] == null )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\t\tthis.update();\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tjQuery.timers.push(t);\n\n\t\tif ( jQuery.timerId == null ) {\n\t\t\tjQuery.timerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( jQuery.timerId );\n\t\t\t\t\tjQuery.timerId = null;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(0, this.cur());\n\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tif ( this.prop == \"width\" || this.prop == \"height\" )\n\t\t\tthis.elem.style[this.prop] = \"1px\";\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t > this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tthis.elem.style.display = \"none\";\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t}\n\n\t\t\tif ( done )\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\tdef: 400\n\t},\n\tstep: {\n\t\tscrollLeft: function(fx){\n\t\t\tfx.elem.scrollLeft = fx.now;\n\t\t},\n\n\t\tscrollTop: function(fx){\n\t\t\tfx.elem.scrollTop = fx.now;\n\t\t},\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t}\n\t}\n});\n// The Offset Method\n// Originally By Brandon Aaron, part of the Dimension Plugin\n// http://jquery.com/plugins/project/dimensions\njQuery.fn.offset = function() {\n\tvar left = 0, top = 0, elem = this[0], results;\n\n\tif ( elem ) with ( jQuery.browser ) {\n\t\tvar parent       = elem.parentNode,\n\t\t    offsetChild  = elem,\n\t\t    offsetParent = elem.offsetParent,\n\t\t    doc          = elem.ownerDocument,\n\t\t    safari2      = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),\n\t\t    css          = jQuery.curCSS,\n\t\t    fixed        = css(elem, \"position\") == \"fixed\";\n\n\t\t// Use getBoundingClientRect if available\n\t\tif ( elem.getBoundingClientRect ) {\n\t\t\tvar box = elem.getBoundingClientRect();\n\n\t\t\t// Add the document scroll offsets\n\t\t\tadd(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),\n\t\t\t\tbox.top  + Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));\n\n\t\t\t// IE adds the HTML element's border, by default it is medium which is 2px\n\t\t\t// IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }\n\t\t\t// IE 7 standards mode, the border is always 2px\n\t\t\t// This border/offset is typically represented by the clientLeft and clientTop properties\n\t\t\t// However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS\n\t\t\t// Therefore this method will be off by 2px in IE while in quirksmode\n\t\t\tadd( -doc.documentElement.clientLeft, -doc.documentElement.clientTop );\n\n\t\t// Otherwise loop through the offsetParents and parentNodes\n\t\t} else {\n\n\t\t\t// Initial element offsets\n\t\t\tadd( elem.offsetLeft, elem.offsetTop );\n\n\t\t\t// Get parent offsets\n\t\t\twhile ( offsetParent ) {\n\t\t\t\t// Add offsetParent offsets\n\t\t\t\tadd( offsetParent.offsetLeft, offsetParent.offsetTop );\n\n\t\t\t\t// Mozilla and Safari > 2 does not include the border on offset parents\n\t\t\t\t// However Mozilla adds the border for table or table cells\n\t\t\t\tif ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )\n\t\t\t\t\tborder( offsetParent );\n\n\t\t\t\t// Add the document scroll offsets if position is fixed on any offsetParent\n\t\t\t\tif ( !fixed && css(offsetParent, \"position\") == \"fixed\" )\n\t\t\t\t\tfixed = true;\n\n\t\t\t\t// Set offsetChild to previous offsetParent unless it is the body element\n\t\t\t\toffsetChild  = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;\n\t\t\t\t// Get next offsetParent\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\t// Get parent scroll offsets\n\t\t\twhile ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) {\n\t\t\t\t// Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug\n\t\t\t\tif ( !/^inline|table.*$/i.test(css(parent, \"display\")) )\n\t\t\t\t\t// Subtract parent scroll offsets\n\t\t\t\t\tadd( -parent.scrollLeft, -parent.scrollTop );\n\n\t\t\t\t// Mozilla does not add the border for a parent that has overflow != visible\n\t\t\t\tif ( mozilla && css(parent, \"overflow\") != \"visible\" )\n\t\t\t\t\tborder( parent );\n\n\t\t\t\t// Get next parent\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\t// Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild\n\t\t\t// Mozilla doubles body offsets with a non-absolutely positioned offsetChild\n\t\t\tif ( (safari2 && (fixed || css(offsetChild, \"position\") == \"absolute\")) ||\n\t\t\t\t(mozilla && css(offsetChild, \"position\") != \"absolute\") )\n\t\t\t\t\tadd( -doc.body.offsetLeft, -doc.body.offsetTop );\n\n\t\t\t// Add the document scroll offsets if position is fixed\n\t\t\tif ( fixed )\n\t\t\t\tadd(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),\n\t\t\t\t\tMath.max(doc.documentElement.scrollTop,  doc.body.scrollTop));\n\t\t}\n\n\t\t// Return an object with top and left properties\n\t\tresults = { top: top, left: left };\n\t}\n\n\tfunction border(elem) {\n\t\tadd( jQuery.curCSS(elem, \"borderLeftWidth\", true), jQuery.curCSS(elem, \"borderTopWidth\", true) );\n\t}\n\n\tfunction add(l, t) {\n\t\tleft += parseInt(l, 10) || 0;\n\t\ttop += parseInt(t, 10) || 0;\n\t}\n\n\treturn results;\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop' );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth' );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return;\n\n\t\treturn val != undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\"; // bottom or right\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[ name.toLowerCase() ]() +\n\t\t\tnum(this, \"padding\" + tl) +\n\t\t\tnum(this, \"padding\" + br);\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[\"inner\" + name]() +\n\t\t\tnum(this, \"border\" + tl + \"Width\") +\n\t\t\tnum(this, \"border\" + br + \"Width\") +\n\t\t\t(margin ?\n\t\t\t\tnum(this, \"margin\" + tl) + num(this, \"margin\" + br) : 0);\n\t};\n\n});})();\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/base.css",
    "content": "/*css reset*/\nhtml, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td , i{\n\tmargin:0;\n\tpadding:0;\n\tborder:0;\n\tfont-weight:inherit;\n\tfont-style:inherit;\n\tfont-size:100%;\n\tfont-family:inherit;\n\tvertical-align:baseline;\n}\nbody {line-height:1.5;}\ntable {border-collapse: collapse;border-spacing:0;}\ncaption, th, td ,b,strong{text-align:left;font-weight:normal;}\ntable, td, th {vertical-align:middle;}\t\nblockquote:before, blockquote:after, q:before, q:after {content:\"\";}\nblockquote, q {quotes:\"\" \"\";}\na img {border:none;}\nem,cite{font-style:normal;}\n\n\nbody { background:#fff; font: 12px/1.5 Tahoma,'宋体';color:#000;}\nh1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}\na {text-decoration:none;cursor:pointer;}\ndl, dt, dd, ol, ul, li{ list-style:none;}\n\n/*some common class*/\n.left{float:left;}\n.right{float:right;}\n\n/*clear*/\n.ue-clear:after{content: \"\";display:block;height:0;clear:both;visibility:hidden;}\n.ue-clear{display:inline-block;}\n*html .ue-clear{height:1%;}\n.ue-clear{display:block; overflow:hidden;}\n\n.placeholder{color:#ddd;}\n\n/*====================================\n  分页信息（表格依赖样式）\n  ===================================*/\n.pagination a {text-decoration: none;border: solid 1px;\t}\n.pagination .pxofy{float:left;margin-left: 5px;height:25px;*padding-top:1px;}\t\n.pagination a, .pagination span {display: block;float: left;line-height:24px;padding:0 9px;border-radius:2px;margin-right: 5px;font-family:Arial, Helvetica, sans-serif !important;}\n.pagination .current {cursor:default;border: solid 1px ;}\n.pagination .prev, .pagination .next{*line-height:22px;}\n\n/*分页样式*/\n.pagination a{color: #000000;border-color:#8EB2D2; background:#eaf4fa;}\n.pagination a:hover{color:#023054;border-color:#8EB2D2;background:#B8DFFB;}\n.pagination .current{color:#fff;border-color:#4ea052;background:#5ebc62;}\n.pagination .current.prev, .pagination .current.next{color:#B9B9B9;border-color:#D3D3D3;background:#fff;}\n.pagination .pxofy{color: #023054;}\n\n\n.button{display:inline-block;width:135px; height:35px; background:url(../images/dialog_btnbg.png);border:none; border-radius:3px;color:#fff; font-size:16px; cursor:pointer; font-family:'Microsoft Yahei','微软雅黑';outline:none;}\n.button.normal{width:133px; height:33px;background:url(../images/dialogbtn.png);color:#000;border:1px solid #c0c0c0;}\n.button:active{}\n.button.long2{width:100px;}\n\n.select-wrap ul{ display:none; background:#fff;position:absolute; left:0; top:30px;  width:260px; border:1px solid #c5d6e0;border-top:none;z-index: 222;}\n.select-wrap ul li{ padding-left:10px; line-height:28px; cursor:pointer;}\n.select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/bootstrap.css",
    "content": "html {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n  padding-top: 20px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 30%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px 15px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding: 48px 0;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-weight: normal;\n  line-height: 1.4;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000;\n            perspective: 1000;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/extreme/extremecomponents.css",
    "content": ".eXtremeTable {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable select {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: solid 1px #EEE;\n\twidth: 75px;\n}\n\n.eXtremeTable .tableRegion {\n\tborder: 1px solid #c1e1dd;\n\tpadding: 2px;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tmargin-top: 7px;\n}\n\n.eXtremeTable .filter {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .filter td {\n\tpadding: 1px;\n}\n\n.eXtremeTable .title {\n\tcolor: #444444;\n\tfont-weight: bold;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 15px;\n\tvertical-align: middle;\n}\n\n.eXtremeTable .titleRow {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .titleRow td {\n\tborder-bottom: 1px solid #308dbb;\n\tpadding-top: 2px;\n\tpadding-bottom: 2px;\n\tvertical-align: middle;\n\ttext-align: center;\n}\n\n.eXtremeTable .titleRow span {\n\tcolor: #444444;\n\tfont-weight: bold;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .filter input {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\twidth: 100%;\n}\n\n.eXtremeTable .filter select {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: solid 1px #EEE;\n\twidth: 100%;\n}\n\n.eXtremeTable .tableHeader {\n\tbackground:#daf2ef;\n\tfilter:progid:DXImageTransform.Microsoft.gradient(enabled='ture',startColorstr=#effaf9, endColorstr='#daf2ef');\n\tborder-top:1px solid #b7dad6;\n    border-bottom:1px solid #c1e1dd;\n\tcolor: #00554a;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tfont-weight: bold;\n\ttext-align: left;\n    padding:6px;\n\tmargin: 0px;\n}\n\n.eXtremeTable .tableHeader input{\n\tborder:0;\n}\n\n.eXtremeTable .tableHeaderSort {\n\tbackground-color: #3a95c2;\n\tcolor: white;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tfont-weight: bold;\n\ttext-align: left;\n\tpadding-right: 3px;\n\tpadding-left: 3px;\n\tpadding-top: 4px;\n\tpadding-bottom: 4px;\n\tborder-right-style: solid;\n\tborder-right-width: 1px;\n\tborder-color: white;\n}\n\n.eXtremeTable .odd a, .eXtremeTable .even a, .eXtremeTable .odd a:hover, .eXtremeTable .even a:hover, .eXtremeTable .odd a:VISITED, .eXtremeTable .even a:VISITED{\n\tcolor: #333;\n\tfont-size: 9pt;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\ttext-decoration: none;\n}\n\n.eXtremeTable .odd td, .eXtremeTable .even td {\n\tpadding-top: 6px;\n\tpadding-right: 3px;\n\tpadding-bottom: 4px;\n\tpadding-left: 3px;\n\tvertical-align: middle;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\t\n\tborder-bottom:1px solid #c1e1dd;\n}\n.eXtremeTable .odd input{\n    border:0\n\t}\n.eXtremeTable .even input{\n    border:0\n\t}\n\n.eXtremeTable .odd {\n\tbackground-color: #FFFFFF;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .even {\n  \tbackground-color: #f0fcfa;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .highlight td {\n\tcolor: black;\n\tfont-size: 9pt;\n\tpadding-top: 6px;\n\tpadding-right: 3px;\n\tpadding-bottom: 4px;\n\tpadding-left: 3px;\n\tvertical-align: middle;\n\tbackground-color: #e1f1ef;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.eXtremeTable .highlight input{\n    border:0\n\t}\n\n.eXtremeTable .highlight a, .eXtremeTable .highlight a, .eXtremeTable .highlight A:HOVER, .eXtremeTable .highlight A:HOVER, .eXtremeTable .highlight A:VISITED {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tcolor: black;\n\tfont-size: 9pt;\n\ttext-decoration: none;\n}\n\n.eXtremeTable .compactToolbar {\n\tbackground-color: #f0fcfa;\n}\n.eXtremeTable .compactToolbar td{\n\tbackground:none;\n\t}\n.eXtremeTable .toolbar {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: 1px solid #c1e1dd;\n}\n\n.eXtremeTable .toolbar td {\n\tcolor: #444444;\n\tpadding: 0px 3px 0px 3px;\n\ttext-align:center;\n}\n\n.eXtremeTable .separator {\n\twidth: 7px;\n}\n\n.eXtremeTable .statusBar {\n\tbackground-color: #f0fcfa;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tpadding:5px;\n\n}\n\n.eXtremeTable .filterButtons {\n\tbackground-color: #F4F4F4;\n\ttext-align: right;\n}\n\n.eXtremeTable .title span {\n\tmargin-left: 7px;\n}\n\n.eXtremeTable .formButtons {\n\tdisplay: block;\n\tmargin-top: 10px;\n\tmargin-left: 5px;\n}\n\n.eXtremeTable .formButton {\n\tcursor: pointer;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size:9pt;\n\tfont-weight: bold;\n\tbackground-color: #308dbb;\n\tcolor: white;\n\tmargin-top: 5px;\n\tborder: outset 1px #333;\n\tvertical-align: middle;\n}\n\n.eXtremeTable .calcRow {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .calcTitle {\n\tbackground-color: #F4F4F4;\n\tcolor: black;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-weight: bold;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .calcResult {\n\tbackground-color: #F4F4F4;\n\tcolor: black;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n}\n\n\n.eXtremeTable .nameWidth {\n\twidth: 80px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/extreme/extremesite.css",
    "content": "html, body {\n\tmargin:0;\n\tpadding:0;\n\theight:100%;\n\tborder:none\n}\n\nimg {\n\tborder:0;\t\n}\n\na {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\tcolor:black;\n}\n\npre {\n\tfont: 12px verdana, arial, helvetica, sans-serif;\n    padding: 5px;\n    border-style: solid;\n    border-width: 1px;\n    border-color: #CCCCCC;\n    background-color: #F4F4F4;\n}\n\nh4 h3 {\n\tcolor: #e75a08;\n}\n   \n#bodyMenu {\n\twidth: 160px;\n\tvertical-align:top;\n}\n\n#bodyContent {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\tpadding:10px;\n\tvertical-align:top;\n}\n\n#header {\n\tdisplay:block;\n\theight:75px;\n\twidth:100%;\n\tborder: 0;\n}\n\n#email {\n\tdisplay: block;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\ttext-align: center;\n\twidth: 100%;\n\tmargin-top: 20px;\n}\n\n#sidelinks a {\n\tdisplay: block;\n\tmargin: 0 3px 0 0;\n\tpadding: 1px 10px 1px 5px;\n\tfont: bold 12px arial, verdana, sans-serif;\n\ttext-decoration: none;\n\tborder-right: 1px solid #b7bcc3;\n\tcolor: rgb(55%,55%,60%);\n\tbackground-color: transparent;\n}\n\n#sidelinks a:visited {\n\tcolor: rgb(55%,55%,60%);\n}\n\n#sidelinks a:hover {\n\tbackground-color: #308dbb;\n\tcolor: #fff;\n}\n\t\t\n#sidelinks h4 {\n\tbackground-color: transparent;\n\tcolor: #086c9f;\n\tmargin: 0 3px 0 0;\n\tpadding: 1em 0 0;\n\tfont: bold 100% Arial, Verdana, sans-serif;\n\tborder-right: 1px solid #b7bcc3;\n\tborder-bottom: 2px solid #b7bcc3;\n}\n\n.button {\n\tcursor: pointer;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size:12px;\n\tfont-weight: bold;\n\tbackground-color: #308dbb;\n\tcolor: white;\n\tmargin-top: 5px;\n\tborder: outset 1px #333;\n\tvertical-align: middle;\n}\n\n#google {\n\tmargin-top: 20px;\n\tmargin-bottom: 5px;\n}\n\n#google input {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px;\n}\n\n#google span {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/home.css",
    "content": "﻿body{ font-family:'微软雅黑';}\n/*主体*/\n.article{ float:left; margin-top:6px; width:100%;}\n.article:first-child{ margin-top:0;}\n.half{ width:50%;*width: 49.999%;}\n.article .wrap-l{ margin-right:3px;}\n.article .wrap-r{ margin-left:3px;}\n\n/*标题*/\n.article .title{ position:relative; line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.article .title h2{ float:left; margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n.article .title h2.title-list{ top:-1px; left:-1px; z-index:1; position:absolute; background:none; margin-left:0; padding:0;}\n.article .title h2 ul{}\n.article .title h2 ul li{ width:98px;  border-left:1px solid transparent; border-right:1px solid transparent;float:left; padding-left:8px;}\n.article .title h2 ul li a{ display:block;line-height:35px; padding-left:22px; color:#000; font-size:14px; font-weight:normal;}\n.article .title h2 ul li.current{ border-left:1px solid #c1d3de; border-right:1px solid #c1d3de; background:url(../images/titlebg01.png) repeat-x;}\n.article .title h2 ul li.current a{ background:url(../images/titleico.png) no-repeat left center; font-weight:bold;}\n.article .title .more{ font-size:12px; float:right; margin-right:12px; color:#000; width:33px; background:url(../images/more.png) no-repeat right center;}\n.article .title .more:hover{ text-decoration:underline;}\n\n/*内容*/\n.article .content{ border:1px solid #c1d3de; border-top:none;}\n.article .content .toollist li{ margin:20px 0 12px 42px; float:left; width:52px; text-align:center;}\n.article .content .toollist li:first-child{ margin-left:33px;}\n.article .content .toollist li a.img{ display:block; width:48px; height:48px;}\n.article .content .toollist li p a{ display:block; line-height:24px; font-size:13px; color:#000;}\n.article .content .toollist li.add-btn{ height:72px; margin-left:22px; text-align:center; cursor:pointer;}\n.article .content .toollist li.add-btn img{ margin-top:18px;}\n\n/*通知公告*/\n.notice .content, .matter .content{ padding-top:11px; height:138px;}\n.notice .content .notice-list li{ line-height:25px;}\n.notice .content .notice-list li .notice-title{ float:left; margin-left:14px; padding-left:17px; color:#000000; font-size:12px; background:url(../images/listico.png) no-repeat left center;}\n.notice .content .notice-list li .notice-title:hover{ text-decoration:underline;}\n.notice .content .notice-list li .notice-time{ float:right; margin-right:16px; color:#969696;}\n\n/*待办事项/已办事项*/\n.matter .content .matter-content{ display:none;}\n.matter .content .current{ display:block;}\n.matter .content .matter-content .today{ float:left; margin:6px 25px 0 17px; width:110px; background:url(../images/date.png) no-repeat;}\n.matter .content .matter-content .today .year{ line-height:33px; font-size:13px; color:#ffffff; text-align:center;}\n.matter .content .matter-content .today .date{ text-align:center;line-height:82px; color:#e22f1d; font-size:48px;}\n.matter .content .matter-content .matter-list li{ line-height:25px;}\n.matter .content .matter-content .matter-list li .matter-time{ float:left; padding-left:16px; width:36px; background:url(../images/listico.png) no-repeat left center; color:#969696;}\n.matter .content .matter-content .matter-list li .matter-title{ float:left; margin-left:18px; color:#000;}\n.matter .content .matter-content .matter-list li .matter-title:hover{ text-decoration:underline;}\n\n/*领导值岗*/\n.duty .content{ padding:8px 8px 0; height:190px;}\n.duty .content table{ width:100%;}\n.duty .content table tr{ line-height:30px;}\n.duty .content table thead th{ font-weight:bold;}\n.duty .content table .date{ width:55px; text-align:center;}\n.duty .content table td.week{ width:82px; text-align:center;}\n.duty .content table th.week{ padding-left:24px;}\n.duty .content table .leader{ width:54px; padding-left:16px;}\n.duty .content table .contact{ width:120px; padding-left:42px;}\n.duty .content table .remark{ padding-left:33px; width:76px;}\n\n/*邮件*/\n.email .content{ height:198px;}\n.email .content table{ width:100%;}\n.email .content table thead tr{ line-height:24px; background:#f1f8fc; border-top:1px solid #fff; border-bottom:1px solid #d1e1ea;}\n.email .content table thead tr th{ border-left:1px solid #fff; border-right:1px solid #c3d4de;}\n.email .content table thead tr th:first-child{ border-left:none;}\n.email .content table thead tr th.last-item{ border-right:none;}\n.email .content table thead tr th.icon{ width:27px;}\n.email .content table thead tr th.sender{ padding-left:9px; width:65px;}\n.email .content table thead tr th.subject{ padding-left:5px; width:278px;}\n.email .content table thead tr th.time{ padding-left:8px; width:96px;}\n.email .content table tbody{}\n.email .content table tbody tr{}\n.email .content table tbody tr.tody td{ border-bottom:none;}\n.email .content table tbody tr.tody td .td-wrap{ margin-right:6px; padding-top:8px; border-bottom:1px solid #c9d7df; line-height:22px;}\n.email .content table tbody tr.tody td .td-wrap em{ margin-left:5px; font-weight:bold;}\n.email .content table tbody tr.tody td .td-wrap a{ color:#0d6ba1;}\n.email .content table tbody tr td{ height:24px;line-height:24px;}\n.email .content table tbody tr td .td-wrap{border-bottom:1px dotted #b9ccd6;}\n.email .content table tbody tr td:first-child .td-wrap{ margin-left:6px; }\n.email .content table tbody tr td.time .td-wrap{ margin-right:6px;}\n.email .content table tbody tr td.icon .td-wrap{ height:24px; background:url(../images/rmail.png) no-repeat center center;}\n.email .content table tbody tr.open td.icon .td-wrap{height:24px; background:url(../images/rmail1.png) no-repeat center center;}\n.email .content table tbody tr td.sender .td-wrap{ margin-left:9px;}\n.email .content table tbody tr td.subject .td-wrap{ margin-left:4px;}\n.email .content table tbody tr td.subject .td-wrap a{ color:#000;}\n.email .content table tbody tr td.subject .td-wrap a:hover{ text-decoration:underline;}\n.email .content table tbody tr td.time .td-wrap{ margin-left:10px; color:#969696;}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/index.css",
    "content": "﻿html{*overflow:auto;min-width: 1020px;}\nbody{ font-family:'微软雅黑';background:#2a83cf;}\n\n/*页面头部*/\n#hd{  height:74px;background:url(../images/topbg.png) repeat-x;}\n#hd .hd-wrap{ position:relative;height:74px; background:url(../images/topline.png) no-repeat left bottom;}\n#hd .hd-wrap .top-light{ position:absolute; width:346px; height:74px; background:url(../images/toplight.png); top:0; left:0;}\nh1{ float:left; margin:14px 0 0 24px; width:246px; height:54px; background:url(../images/logo.png);position:relative;top:1;}\n.login-info{ float:left; margin:38px 0 0 23px; height:18px;}\n.login-info .welcome{ float:left; padding-left:20px; width:120px; height:18px; line-height:18px; background:url(../images/topuser.png) no-repeat left bottom; font-size:14px; color:#fff;}\n.login-info .welcome span{ float:left;}\n.login-info .welcome .user-name{ float:left; color:#fff;}\n.login-info .login-msg{ float:left; margin-left:22px;}\n.login-info .login-msg a{ float:left; height:18px; line-height:18px;}\n.login-info .login-msg a.msg-txt{ float:left; padding-left:20px; width:28px; background:url(../images/topmail.png) no-repeat left center; color:#fff; font-size:14px;}\n.login-info .login-msg a.msg-num{ float:left; width:16px; height:9px; margin:6px 0 0 4px; background:url(../images/countbg.png); color:#fff; line-height:9px; font-size:9px; text-align: center;}\n.toolbar{ float:right; margin:20px 14px 0 0;}\n.toolbar a{ float:left; height:42px; line-height:42px;}\n.toolbar a.home-btn{ width:40px; padding-left:46px; background:url(../images/home.png) no-repeat left top; color:#fff; font-size:14px;}\n.toolbar a.quit-btn{ width:39px; background:url(../images/exit.png) no-repeat left top;}\n\n/*页面主体*/\n#bd{ padding-top:6px; margin:0 4px; background:#fff url(../images/centertopbg.png) repeat-x left top;}\n#bd .wrap{ padding-left:187px; padding-bottom:6px; padding-right:6px; background:url(../images/centerbottombg.png) repeat-x left bottom;}\n\n/*左侧栏导航*/\n.sidebar{ height:100%; float:left; margin-left:-181px; width:175px; overflow-y:auto;}\n.sidebar h2{  background:url(../images/lefttopbg.png) repeat-x; border-radius:2px 2px 0 0; }\n.sidebar h2 p{ margin-left:15px;padding-left:25px; line-height:35px;color:#fff; font-size:14px; font-weight:bold; background:url(../images/icon0.png) no-repeat left center;}\n\n/*主导航*/\n.sidebar .nav{ border:1px solid #bdd0db; border-top:none; background:#f1f8fc;}\n.sidebar .nav>li{ line-height:40px; border-bottom:1px solid #dbe9f1; cursor:pointer;}\n.sidebar .nav>li.current .nav-header{ background:#6ec673;   border-color:#72b877;}\n.sidebar .nav>li.current .nav-header span{color:#fff;}\n.sidebar .nav>li .nav-header{ padding-right:14px;}\n.sidebar .nav>li .nav-header a{ display:block; margin-left:8px; padding-left:32px; color:#000; font-size:13px;}\n.sidebar .nav>li .nav-header a span{ float:left;}\n.sidebar .nav>li .nav-header a i{ float:right; width:12px; height:40px; background:url(../images/leftjt01.png) no-repeat center center;}\n.sidebar .nav>li.current .nav-header a i{  background:url(../images/leftjt03.png) no-repeat center center;}\n.sidebar .nav>li.current.hasChild .nav-header a i{  background:url(../images/leftjt02.png) no-repeat center center;}\n.sidebar .nav>li.office .nav-header a{ background:url(../images/ico01.png) no-repeat left center;}\n.sidebar .nav>li.gongwen .nav-header a{ background:url(../images/ico02.png) no-repeat left center;}\n.sidebar .nav>li.nav-info .nav-header a{ background:url(../images/ico03.png) no-repeat left center;}\n.sidebar .nav>li.konwledge .nav-header a{ background:url(../images/ico04.png) no-repeat left center;}\n.sidebar .nav>li.agency .nav-header a{ background:url(../images/ico05.png) no-repeat left center;}\n.sidebar .nav>li.email .nav-header a{ background:url(../images/ico06.png) no-repeat left center;}\n.sidebar .nav>li.system .nav-header a{ background:url(../images/ico07.png) no-repeat left center;}\n\n/*子导航*/\n.sidebar .nav>li .subnav{ display:none; padding:6px 0 11px 0;}\n.sidebar .nav>li.current .subnav{ display:none;}\n.sidebar .nav>li.current.hasChild .subnav{ display:block;}\n.sidebar .nav>li .subnav li{ line-height:28px; margin-left:30px; padding-left:10px; background:url(../images/leftjt04.png) no-repeat left center;}\n.sidebar .nav>li .subnav li a{ color:#000; font-size:12px;}\n\n\n\n.content{ float:left; width:100%; overflow:auto;}\n\n/*页面底部*/\n#ft{ height:25px; line-height:22px; background:url(../images/footbg.png) repeat-x;}\n#ft span{  color:#08496e; }\n#ft em{ color:#d3eaf6;}\n.ft-left{ float:left;}\n.ft-left span{margin-left:11px; padding-left:19px;background:url(../images/foot01.png) no-repeat left center;}\n.ft-left em{ margin-left:4px;}\n.ft-right{ float:right; margin:0 11px 0 3px; padding-right:10px; background:url(../images/foot02.png) no-repeat right center;}\n\n/*弹窗内容样式*/\n.dialog-content .buttons{margin-top:30px;}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/info-mgt.css",
    "content": "body{ font-family:'微软雅黑';}\n.title{ line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.title h2{ margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n\n/*查询条件*/\n.query{ padding:11px 0 18px 0; border:1px solid #c1d3de; border-top:none; overflow:visible;}\n.query-conditions{ overflow:visible;}\n.query .conditions{ overflow:visible; float:left; line-height:30px; width:380px; margin:6px 63px 0 25px; }\n.query .conditions label{ float:left; width:72px; color:#000; }\n\n.select-title,input{height:28px;line-height:28px\\0;*line-height:28px;}\n/*流程名称*/\n.query .name .select-wrap{ float:left; position:relative;}\n.query .name .select-wrap .select-title{width:223px;padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.query .name .select-wrap .select-title span{ float:left;}\n.query .name .select-wrap .select-title .icon{ float:right; margin-right:3px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n.query .name .select-wrap ul{ z-index:2; display:none; background:#fff;position:absolute; left:0; top:30px;  width:243px;}\n.query .name .select-wrap ul li{padding-left:10px; line-height:28px; cursor:pointer;}\n.query .name .select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}\n\n/*操作时间*/\n.query .operate-time .select-wrap{ float:left; position:relative;}\n.query .operate-time .select-wrap .select-title{width:100px; height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.query .operate-time .select-wrap .select-title span{ float:left;}\n.query .operate-time .select-wrap .select-title .icon{ float:right; margin-right:0px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n.query .operate-time .select-wrap ul{ display:none; background:#fff;position:absolute; left:0; top:30px;  width:120px;}\n.query .operate-time .select-wrap ul li{ padding-left:10px; line-height:28px; cursor:pointer;}\n.query .operate-time .select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}\n.query .operate-time .input-box{ float:left; margin-left:5px;}\n.query .operate-time .input-box input{ float:left; width:44px;height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .operate-time .input-box span{ float:left; margin-left:9px;}\n\n/*时间*/\n.query .time .time-select{ float:left; position:relative;}\n.query .time .time-select input{ padding:0 6px 0 8px; width:102px; height:28px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .time .time-select span{ float:left; color:#000;}\n.query .time .time-select .icon{ position:absolute; right:6px; top:1px; width:16px; height:28px; background:url(../images/dateico.png) no-repeat center center; cursor:pointer;}\n.query .time .line{ float:left; margin:0 2px;}\n\n/*人员*/\n.query .staff input{float:left; width:173px; padding: 0 10px;height:28px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .staff .staff-select{ float:left; margin-left:7px; width:43px; height:28px; border:1px solid #c5d6e0; background:url(../images/formbtnbg.png) repeat-x; text-align:center; color:#000;}\n\n/*查询按钮*/\n.query-btn{ margin:15px 0 0 97px;}\n.query-btn a{ display:block; float:left; line-height:33px; text-align:center; border-radius:2px;}\n.query-btn a.confirm{ width:88px;color:#fff; background:#6ab96e; font-size:14px;}\n.query-btn a.clear{ margin-left:7px; width:98px; border:1px solid #c1d3de; background:url(../images/righttitlebig.png) repeat-x; color:#000; font-size:14px;height:31px;line-height: 31px;}\n\n/*表格操作按钮*/\n.table-operate{ padding-left:15px; height:37px; line-height:37px; background:url(../images/toolbarbg.png) repeat-x; border:1px solid #c1d3de; border-top:none;}\n.table-operate a{ float:left; font-family:'宋体'; width:45px; text-align:right; color:#000; margin-right:20px;}\n.table-operate a.add{ background:url(../images/addico.png) no-repeat left 9px;}\n.table-operate a.del{ background:url(../images/delico.png) no-repeat left 9px;}\n.table-operate a.edit{ background:url(../images/edtico.png) no-repeat left 9px;}\n.table-operate a.count{ background:url(../images/tjico.png) no-repeat left 9px;}\n.table-operate a.check{ background:url(../images/bookico.png) no-repeat left 9px;}\n\n/*表格*/\ntable{ width:100%;  border:1px solid #c1d3de; border-top:none;}\nthead tr th{ height:35px; line-height:35px; border-bottom:1px solid #c1d3de; background:url(../images/tablelistbg.png) repeat-x; font-weight:bold;}\ntbody tr td{ border-left:1px dotted #c7c7c7; line-height:30px;}\ntbody tr:first-child td{ padding-top:2px;}\ntbody tr td:first-child{ border-left:none;}\ntable tr .num{ width:63px; text-align: center;}\ntable tr .name{ width:118px; padding-left:17px;}\ntable tr .process{ width:142px; padding-left:13px;}\ntable tr .node{ width:162px; padding-left:13px;}\ntable tr .time{ width:218px; padding-left:13px;}\ntable tr .operate{ width:219px; padding-left:15px;}\ntable tr .operate a{ color:#2c7bbc;}\ntable tr .operate a:hover{ text-decoration:underline;}\n\n\n/*分页*/\n.pagination{ margin-top:10px;padding:0 10px;}\n.pagination .pxofy{float:left;color:#6c6c6c;}\n.pagination .pagin-list{float:right;}\n.pagination .goto{float:right;margin-left:10px;}\n.pagination .goto .text{padding:0;}\n.pagination .goto input[type=text]{float:left;width:25px;height:22px;border:1px solid #8EB2D2;outline:none; text-align:center;}\n\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/info-reg.css",
    "content": "body{ font-family:'微软雅黑';}\n.title{ line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.title h2{ margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n\n/*表单主体*/\n.main{ padding-top:21px; border:1px solid #c1d3de; border-top:none; border-bottom:none;}\n.main p{ margin-top:10px; padding-left:31px; line-height:30px;}\n.main p label{ float:left; width:82px; text-align:left;}\n.main p input{ float:left;}\n.main p input[type=\"text\"]{ width:240px; height:28px;line-height:28px\\0;*line-height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.main p.long-input input[type=\"text\"]{ width:472px;}\n\n.main p span{ float:left; margin-left:15px; color:#959595;}\n.main p span em{ color:#f81212;}\n.main p textarea{ width:472px; padding:10px; height:84px; resize:none; outline:none; border:1px solid #c5d6e0; background:url(../images/inputbg.png) repeat-x left top;}\n.main p textarea{overflow:auto;}\n.main .select{ overflow:visible; margin-top:10px; padding-left:31px; line-height:30px;}\n.main .select label{float:left; width:82px; text-align:left;}\n.main .select .select-wrap{ float:left; position:relative;}\n.main .select .select-wrap .select-title{width:240px; height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.main .select .select-wrap .select-title span{ float:left;}\n.main .select .select-wrap .select-title .icon{ float:right; margin-right:3px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n\n\n/*表单按钮*/\n.btn{ padding:13px 0 53px 113px; border:1px solid #c1d3de; border-top:none;}\n.btn a{ float:left; margin-right:7px; text-align:center; border:none; border-radius:2px; font-size:14px;}\n.btn a.confirm{ width:88px; height:33px; line-height:33px; background:#68b86c; color:#fff; }\n.btn a.clear{ width:98px; height:31px; line-height:31px; color:#000; border:1px solid #c1d3de; background:url(../images/formbtnbg01.png) repeat-x;}\n.btn1{ padding:20px 0 53px 30px; border:1px solid #c1d3de; border-top:none;}\n.btn1 a{ float:left; margin-right:7px; text-align:center; border:none; border-radius:2px; font-size:14px;}\n.btn1 a.confirm{ width:88px; height:33px; line-height:33px; background:#68b86c; color:#fff; }\n.btn1 a.clear{ width:98px; height:31px; line-height:31px; color:#000; border:1px solid #c1d3de; background:url(../images/formbtnbg01.png) repeat-x;}\n\n.main .newstyle{border-bottom:dotted 1px #ccc;}\n.main .newstyle label{font-weight:bold; margin-right:60px; width:200px;}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/jquery.dialog.css",
    "content": "\n.ui-dialog-panel{z-index:10000;position:absolute;left:50%;top:50%;/*padding:4px;*/border-radius:5px;}\n.ui-dialog{padding-top:40px;/*border:1px solid #BBBBBB;*/border-radius:1px;background:#fff;}\n/***** 标题区域 *****/\n.ui-dialog-hd{position:absolute;left:0;top:0;right:0;height:41px;color:#FFFFFF;font-size:16px; background:url(../images/topcenter.png);}\n.ui-dialog-hd .ui-dialog-close{position:absolute;top:10px;right:0;color:#fff;font-size:16px;}\n\n.ui-dialog-hd .ui-dialog-close i{float:left;width:20px;height:20px; background:url(../images/close3.png);}\n.ui-dialog-hd .ui-dialog-close:hover i{background:url(../images/close4.png);}\n\n/*** 标题文字区域 ***/\n.ui-dialog-hd h6{height:40px;left:0;right:35px;text-indent:18px;line-height:40px;*line-height:40px;color:#fff;font-size:14px;}\n/***** 弹窗按钮  *****/\n.ui-dialog-ft{position:absolute;bottom:5px;left:5px;right:5px;height:39px;text-align:right;border-top:1px solid #F0F0F0;background:#F9F9F9;}\n.ui-dialog-ft button{margin:6px 15px 0 -10px;}\n\n/***** 特殊信息弹出框 *****/\n.ui-dialog-icon{float:left;width:78px;height:78px;margin:25px 20px 25px 38px; background-image:url(../images/dico.png);}\n/*.ui-dialog-confirm .ui-dialog-icon{background-position:0 0;}\n.ui-dialog-warning .ui-dialog-icon{background-position:-48px 0;}\n.ui-dialog-success .ui-dialog-icon{background-position:-96px 0;}\n.ui-dialog-error .ui-dialog-icon{background-position:-144px 0;}*/\n\n/*** 特殊信息显示 ***/\n.ui-dialog-text{float:left;display:table-cell;vertical-align:middle;width:250px;height:100px;}\n.ui-dialog-text .dialog-text,.ui-dialog-text .patch{display:inline-block;vertical-align:middle;font-size:16px;color:#4d4d4d;font-weight:bold;}\n.ui-dialog-text .dialog-content{margin:40px 0 10px 0;font-size:18px;}\n.ui-dialog-text .tips{color:#8f8f8f;font-size:13px;}\n.ui-dialog-text .patch{width:0;height:100%;}\n\n/***** 弹窗里有表单 *****/\n.ui-dialog-panel .formDialog{display:none;padding:20px 15px;}\n.ui-dialog-panel .formDialog input[type=text]{width:220px;}\n\n.dialog-hd-lc{position:absolute;width:15px;height:41px; background:url(../images/lefttop.png);left:-15px;top:0;}\n.dialog-hd-rc{position:absolute;width:15px;height:41px; background:url(../images/righttop.png);right:-15px;top:0;}\n\n.ui-dialog-leftYY{position:absolute;width:15px;top:41px;bottom:15px; left:-15px; background:url(../images/centerleft.png);}\n.ui-dialog-rightYY{position:absolute;width:15px;top:41px;bottom:15px; right:-15px; background:url(../images/centerright.png);}\n.ui-dialog-bottomCenter{position:absolute;height:19px;bottom:-13px;left:-11px;right:-11px;background:url(../images/downcenter.png);}\n.ui-dialog-bottomLeft{position:absolute;width:15px;height:19px;bottom:-4px;left:-15px;background:url(../images/centerleft.png);}\n.ui-dialog-bottomRight{position:absolute;width:15px;height:19px;bottom:-4px;right:-15px;background:url(../images/centerright.png);}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/jquery.searchableSelect.css",
    "content": "/*\nAuthor: David Qin\nE-mail: david@hereapp.cn\nDate: 2014-11-05\n*/\n\n.searchable-select-hide {\n  display: none;\n}\n\n.searchable-select {\n  display: inline-block;\n  min-width: 200px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #555;\n  vertical-align: middle;\n  position: relative;\n  outline: none;\n}\n\n.searchable-select-holder{\n  padding: 6px;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  min-height: 30px;\n  box-sizing: border-box;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\n  -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n}\n\n.searchable-select-caret {\n  position: absolute;\n  width: 0;\n  height: 0;\n  box-sizing: border-box;\n  border-color: black transparent transparent transparent;\n  top: 0;\n  bottom: 0;\n  border-style: solid;\n  border-width: 5px;\n  margin: auto;\n  right: 10px;\n}\n\n.searchable-select-dropdown {\n  position: absolute;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border-bottom-left-radius: 4px;\n  border-bottom-right-radius: 4px;\n  padding: 4px;\n  border-top: none;\n  top: 28px;\n  left: 0;\n  right: 0;\n}\n\n.searchable-select-input {\n  margin-top: 5px;\n  border: 1px solid #ccc;\n  outline: none;\n  padding: 4px;\n  width: 100%;\n  box-sizing: border-box;\n  width: 100%;\n}\n\n.searchable-scroll {\n  margin-top: 4px;\n  position: relative;\n}\n\n.searchable-scroll.has-privious {\n  padding-top: 16px;\n}\n\n.searchable-scroll.has-next {\n  padding-bottom: 16px;\n}\n\n.searchable-has-privious {\n  top: 0;\n}\n\n.searchable-has-next {\n  bottom: 0;\n}\n\n.searchable-has-privious, .searchable-has-next {\n  height: 16px;\n  left: 0;\n  right: 0;\n  position: absolute;\n  text-align: center;\n  z-index: 10;\n  background-color: white;\n  line-height: 8px;\n  cursor: pointer;\n}\n\n.searchable-select-items {\n  max-height: 400px;\n  overflow-y: scroll;\n  position: relative;\n}\n\n.searchable-select-items::-webkit-scrollbar {\n  display: none;\n}\n\n.searchable-select-item {\n  padding: 5px 5px;\n  cursor: pointer;\n  min-height: 30px;\n  box-sizing: border-box;\n    transition: all 1s ease 0s;\n}\n\n.searchable-select-item.hover {\n\n  background: #555;\n  color: white;\n}\n\n.searchable-select-item.selected {\n  background: #28a4c9;\n  color: white;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/login.css",
    "content": "html{*overflow:auto;}\nbody{ font-family:'微软雅黑';background: #2074bb;}\n#container{ position:relative; background:url(../images/login_light.png) no-repeat center center;}\n\n#bd{}\n.login{ margin:0 auto; padding-top:15px; width:640px; height:405px; background:url(../images/login_pro.png);}\n.login .login-top{ margin:0 auto; width:590px; height:161px; background:url(../images/login_img.png);}\n.login .login-top h1{ height:161px; margin-left:27px; background:url(../images/login_logo.png) no-repeat left center;}\n.login .login-input{ margin-top:21px; padding-left:165px;}\n.login .login-input p{ margin-top:11px; line-height:39px;}\n.login .login-input p label{ float:left; text-align:right; width:51px; color:#000000; font-size:16px; }\n.login .login-input p input{ padding:0 0 0 49px; margin-left:16px; width:195px; height:39px;line-height:39px\\0; *line-height:39px; border:none; outline:none; }\n.login .login-input p.user input{ background:url(../images/login_user.png);}\n.login .login-input p.password input{ background:url(../images/login_password.png);}\n.login .login-btn{ margin-top:18px; padding-left:232px; line-height:38px;}\n.login .login-btn .btn{ float:left; width:117px; height:39px; background:url(../images/login_btn.png);  color:#fff; text-align:center; font-size:16px;font-family:'微软雅黑';}\n.login .login-btn .remember{ float:left; width:80px; position:relative; margin-left:22px;}\n.login .login-btn .remember em{ float:left; width:18px; height:38px; background:url(../images/login_check.png) no-repeat left center;}\n.login .login-btn .remember input{ position:absolute; height:16px; width:18px; top:11px; left:0; margin:0; opacity:0; filter:alpha(opacity=0); cursor:pointer;}\n.login .login-btn .remember label{ float:left; line-height:36px; margin-left:6px; color:#000000; font-size:14px; cursor:pointer;}\n.login .login-btn .remember input[type=\"checkbox\"]:checked ~ em,.login .login-btn .remember.checked em{ background:url(../images/check-select.png) no-repeat left center;}\n\n/*验证码*/\n.login1{ margin:0 auto; padding-top:15px; width:640px; height:460px; background:url(../images/login_pro1.png) no-repeat;}\n.login1 .login-top{ margin:0 auto; width:590px; height:161px; background:url(../images/login_img.png);}\n.login1 .login-top h1{ height:161px; margin-left:27px; background:url(../images/login_logo.png) no-repeat left center;}\n.login1 .login-input{ margin-top:21px; padding-left:165px;}\n.login1 .login-input p{ margin-top:11px; line-height:39px;}\n.login1 .login-input p label{ float:left; text-align:right; width:51px; color:#000000; font-size:16px; }\n.login1 .login-input p input{ padding:0 0 0 49px; margin-left:16px; width:195px; height:39px;line-height:39px\\0; *line-height:39px; border:none; outline:none; }\n.login1 .login-input p.user input{ background:url(../images/login_user.png);}\n.login1 .login-input p.password input{ background:url(../images/login_password.png);}\n.login1 .login-btn{ margin-top:18px; padding-left:232px; line-height:38px;}\n.login1 .login-btn .btn{ float:left; width:117px; height:39px; background:url(../images/login_btn.png);  color:#fff; text-align:center; font-size:16px;font-family:'微软雅黑';}\n.login1 .login-btn .remember{ float:left; width:80px; position:relative; margin-left:22px;}\n.login1 .login-btn .remember em{ float:left; width:18px; height:38px; background:url(../images/login_check.png) no-repeat left center;}\n.login1 .login-btn .remember input{ position:absolute; height:16px; width:18px; top:11px; left:0; margin:0; opacity:0; filter:alpha(opacity=0); cursor:pointer;}\n.login1 .login-btn .remember label{ float:left; line-height:36px; margin-left:6px; color:#000000; font-size:14px; cursor:pointer;}\n.login1 .login-btn .remember input[type=\"checkbox\"]:checked ~ em,.login .login-btn .remember.checked em{ background:url(../images/check-select.png) no-repeat left center;}\n.login1 .login-input p.yzm input{ background:url(../images/login_yzm.png);}\n.yzm{position:relative;}\n.yzm cite{position:absolute; right:176px; font-size:16px; color:#fff;}\n\n#ft{ position:absolute;left:0;right:0;bottom:40px; color:#10486b; text-align:center; z-index:2;}\n\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/reset.css",
    "content": "\n/* ------- This is the CSS Reset ------- */\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre, a, \nabbr, acronym, address, big, cite, code, del,\ndfn, em, img, ins, kbd, q, s, samp, small,\nstrike, strong, sub, sup, tt, var, u, i, center,\ndl, dt, dd, ol, ul, li, fieldset, form, label,\nlegend, table, caption, tbody, tfoot, thead, tr,\nth, td, article, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup, menu,\nnav, output, ruby, section, summary, time, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n\n/* ------- HTML5 display-role reset for older browsers ------- */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after, q:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/style.css",
    "content": "html, body{\n\tmargin:0;\n\tbackground:\t#fff;\n\tfont-family: 'Open Sans', sans-serif;\n}\nh4, h5, h6,\nh1, h2, h3 {\nmargin: 0;\n}\np{\n\tmargin:0;\n}\nul,label{\n\tmargin:0;\n\tpadding:0;\n}\ninput[type=\"button\"],input[type=\"submit\"]{\n\ttransition:0.5s all;\n\t-webkit-transition:0.5s all;\n\t-moz-transition:0.5s all;\n\t-o-transition:0.5s all;\n\t-ms-transition:0.5s all;\n}\nbody a{\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n\ttext-decoration:none;\n\n}\nbody a:hover{\n\ttext-decoration:none;\n}\n.copyrights{\n\ttext-indent:-9999px;\n\theight:0;\n\tline-height:0;\n\tfont-size:0;\n\toverflow:hidden;\n}\n/*-- header --*/\n.header {\n  background: #05969b;\n}\n.navbar {\n  margin-bottom: 0;\n}\n.navbar-nav {\n  float: right;\n  width: 65%;\n}\n.navbar-default {\n  background:none;\n  border-color: #012231;\n}\n.navbar-default .navbar-brand {\nfont-family: 'Alegreya', serif;\n\tcolor: #fff;\n\tfont-size:48px;\n\ttext-decoration: none;\n}\n.glyphicon-cutlery {\n  left: -10px;\n  top: 7px;\n}\n.navbar-default .navbar-collapse, .navbar-default .navbar-form {\n    padding: 0;\n}\n.navbar-default .navbar-brand:hover {\n\tcolor: #fff;\n\ttext-decoration: none;\n}\na.navbar-brand span {\n  color: #2FD828;\n  margin-left: 12px;\n}\n.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #2FD828;\n}\n.navbar-default .navbar-nav > li > a{\n  color: #fff;\n  font-size: 16px;\n}\n.navbar-nav > li > a {\n  padding-top: 25px;\n  padding-bottom: 25px;\n}\n.navbar-brand {\n    height: 0;\n    padding: 0;\n\t}\n.navbar{\n    border-radius: 0px; \n\tborder:none;\n}\n.navbar-default .navbar-brand {\n    color: #fff;\n}\n.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus ,.navbar-default .navbar-nav > li > a.active{\n    color:#2FD828;\n\t}\n\n/*--search--*/\n.search-box{\n\tfloat:right;\n}\n.sb-search {\n\tposition: absolute;\n\tright:0px;\n\twidth: 0%;\n\tmin-width:42px;\n\tmargin-top:14px;\n\theight:40px;\n\tfloat: right;\n\toverflow: hidden;\n\t-webkit-transition: width 0.3s;\n\t-moz-transition: width 0.3s;\n\ttransition: width 0.3s;\n\t-webkit-backface-visibility: hidden;\n\tz-index: 999;\n}\n.sb-search-input {\n\tposition: absolute;\n\ttop: 0;\n\tright: 3px;\n\tborder: none;\n\toutline: none;\n\tbackground:#fc3a3a;\n\twidth: 64%;\n\theight:40px;\n\tmargin: 0;\n\tz-index: 10;\n\tpadding: 5px 15px;\n\tfont-size: 15px;\n\tcolor: #ffffff;\n\tborder-radius:50px;\n}\n.sb-search-input::-webkit-input-placeholder {\n\tcolor: #ffffff;\n}\n.sb-search-input:-moz-placeholder {\n\tcolor: #ffffff;\n}\n.sb-search-input::-moz-placeholder {\n\tcolor: #efb480;\n}\n.sb-search-input:-ms-input-placeholder {\n\tcolor: #ffffff;\n}\n.sb-icon-search,.sb-search-submit  {\n\twidth:30px;\n\theight:40px;\n\tdisplay: block;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0%;\n\tpadding: 0;\n\tmargin: 0;\n\tline-height:71px;\n\ttext-align: center;\n\tcursor: pointer;\n}\n.sb-search-submit {\n\tbackground: url('../images/search.png') no-repeat -6px 10px;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\"; /* IE 8 */\n    filter: alpha(opacity=0); /* IE 5-7 */\n    color: transparent;\n\tborder: none;\n\toutline: none;\n\tz-index: -1;\n\t-webkit-appearance: none;\n}\n.sb-icon-search {\n    background:#fc3a3a url('../images/search.png') no-repeat 3px 10px;\n\tz-index: 90;\n\twidth: 40px;\n\theight: 40px;\n\tborder-radius: 50px;\n}\n/* Open state */\n.sb-search.sb-search-open,.no-js .sb-search {\n\twidth:72%;\n}\n.sb-search.sb-search-open .sb-icon-search,.no-js .sb-search .sb-icon-search {\n\tbackground:  url('../images/search.png') no-repeat 3px 10px;\n\tcolor: #fff;\n\tz-index: 11;\n}\n.sb-search.sb-search-open .sb-search-submit,.no-js .sb-search .sb-search-submit {\n\tz-index: 90;\n}\n/*--//search--*/\n/*-- banner --*/\n.banner{\nbackground: url(../images/banner.jpg) no-repeat 0px 0px;\nbackground-size:cover;\n-webkit-background-size: cover;\n-o-background-size: cover;\n-ms-background-size: cover;\n-moz-background-size: cover;\nmin-height: 700px;\n}\n.header .glyphicon-education {\n    top: 8px;\n}\n/*-- //banner --*/\n/* Overline From Center */\na.hvr-overline-from-center {\n  display: inline-block;\n  vertical-align: middle;\n  -webkit-transform: translateZ(0);\n  transform: translateZ(0);\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0);\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  -moz-osx-font-smoothing: grayscale;\n  position: relative;\n  overflow: hidden;\n}\na.hvr-overline-from-center:before {\n  content: \"\";\n  position: absolute;\n  z-index: -1;\n  left: 50%;\n  right: 50%;\n  bottom: 0;\n  background: #fc3a3a;\n  height: 3px;\n  -webkit-transition-property: left, right;\n  transition-property: left, right;\n  -webkit-transition-duration: 0.3s;\n  transition-duration: 0.3s;\n  -webkit-transition-timing-function: ease-out;\n  transition-timing-function: ease-out;\n}\na.hvr-overline-from-center:hover:before,a.hvr-overline-from-center:focus:before,a.hvr-overline-from-center:active:before {\n  left: 0;\n  right: 0;\n}\n/*-- Slider Part starts Here --*/\n#slider3,#slider4  {\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n  margin: 0 auto;\n}\n.rslides_tabs {\n  list-style: none;\n  padding: 0;\n  background: rgba(0,0,0,.25);\n  box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  -moz-box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  font-size: 18px;\n  list-style: none;\n  margin: 0 auto 50px;\n  max-width: 540px;\n  padding: 10px 0;\n  text-align: center;\n  width: 100%;\n}\n.rslides_tabs li {\n  display: inline;\n  margin-right: 1px;\n}\n.rslides_tabs a {\n  width: auto;\n  line-height: 20px;\n  padding: 9px 20px;\n  height: auto;\n  background: transparent;\n  display: inline;\n}\n.rslides_tabs li:first-child {\n  margin-left: 0;\n}\n.rslides_tabs .rslides_here a {\n  background: rgba(255,255,255,.1);\n  color: #fff;\n  font-weight: bold;\n}\n.events {\n  list-style: none;\n}\n.callbacks_container {\n  position: relative;\n  float: left;\n  width: 100%;\n}\n.callbacks {\n  position: relative;\n  list-style: none;\n  overflow: hidden;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n}\n.callbacks li {\n  position: absolute;\n  width: 100%;\n  left: 0;\n  top: 0;\n}\n.callbacks img {\n  position: relative;\n  z-index: 1;\n  height: auto;\n  border: 0;\n}\n.callbacks .caption {\n\tdisplay: block;\n\tposition: absolute;\n\tz-index: 2;\n\tfont-size: 20px;\n\ttext-shadow: none;\n\tcolor: #fff;\n\tleft: 0;\n\tright: 0;\n\tpadding: 10px 20px;\n\tmargin: 0;\n\tmax-width: none;\n\ttop: 10%;\n\ttext-align: center;\n}\n.callbacks_nav {\n  \tposition: absolute;\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\ttop: 61%;\n\tleft: 0;\n\topacity: 0.7;\n\tz-index: 3;\n\ttext-indent: -9999px;\n\toverflow: hidden;\n\ttext-decoration: none;\n\theight: 62px;\n\twidth: 45px;\n\tmargin-top: -65px;\n}\n.callbacks_nav:active {\n  opacity: 1.0;\n}\na.callbacks_nav.callbacks1_nav.prev {\n\tbackground: transparent url(\"../images/themes.png\") no-repeat 0px 0px;\n  left: -3.1%;\n}\n.callbacks_nav.next {\n\tbackground: transparent url(\"../images/themes.png\") no-repeat -46px 0px;\n  left: 100%;\n}\n#slider3-pager a,#slider4-pager a  {\n  display: inline-block;\n}\n#slider3-pager span,#slider4-pager span{\n}\n#slider3-pager span,#slider4-pager span{\n\twidth:100px;\n\theight:15px;\n\tbackground:#fff;\n\tdisplay:inline-block;\n\tborder-radius:30em;\n\topacity:0.6;\n}\n#slider3-pager .rslides_here a ,#slider4-pager .rslides_here a {\n  background: #FFF;\n  border-radius:30em;\n  opacity:1;\n}\n#slider3-pager a ,#slider4-pager a {\n  padding: 0;\n}\n#slider3-pager li, #slider4-pager li{\n\tdisplay:inline-block;\n}\n.rslides {\n  position: relative;\n  list-style: none;\n  overflow: hidden;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n}\n.rslides li {\n  -webkit-backface-visibility: hidden;\n  position: absolute;\n  display: none;\n  width: 100%;\n  left: 0;\n  top: 0;\n}\n.rslides li{\n  position: relative;\n  display: block;\n}\n\n.callbacks_tabs{\n\tlist-style: none;\n\tposition: absolute;\n\ttop: 141%;\n\tz-index: 999;\n\tleft: 46%;\n\tpadding: 0;\n\tmargin: 0;\n}\nul.callbacks_tabs.callbacks2_tabs {\ntop: 73%;\nleft:46%;\n}\n.slider-top{\n\ttext-align: center;\n\tpadding:10em 0;\n}\n.slider-top h1{\n\tfont-weight:700;\n\tfont-size:48px;\n\tcolor:#010101;\n}\n.slider-top p{\n\tfont-weight:400;\n\tfont-size:20px;\n\tpadding:1em 7em;\n\tcolor:#010101;\n}\n.slider-top ul.social-slide{\n\tdisplay:inline-flex;\n\tmargin: 0px;\n\tpadding: 0px;\n}\nul.social-slide li i{\n\twidth:70px;\n\theight:74px;\n\tbackground:url(../images/img-resources.png)no-repeat;\n\tdisplay: inline-block;\n\tmargin:0px 15px;\n}\nul.social-slide li i.win{\n\tbackground-position:-6px 0px;\n}\nul.social-slide li i.android{\n\tbackground-position:-110px 0px;\n}\nul.social-slide li i.mac{\n\tbackground-position:-215px 0px;\n}\n.callbacks_tabs li{\n  margin-left: 5px;\n\tdisplay: inline-block;\n}\n@media screen and (max-width: 600px) {\n  .callbacks_nav {\n    top: 47%;\n    }\n}\n\n.callbacks_tabs a{\n visibility: hidden;\n}\n.callbacks_tabs a:after {\n  content: \"\\f111\";\n  font-size:0;\n  font-family: FontAwesome;\n  visibility: visible;\n  display: block;\n    height: 28px;\n    width: 7px;\n    transform: rotate(221deg);\n  display:inline-block;\n  background: #2FD828;\n}\n.callbacks_here a:after{\n\tbackground: #fff;\t\n}\na.callbacks_nav.callbacks2_nav.prev {\nbackground: transparent url(\"../images/2.png\") no-repeat left top;\nwidth:23px;\nheight:23px;\n}\na.callbacks_nav.callbacks2_nav.next{\nbackground: transparent url(\"../images/2.png\") no-repeat -29px 0px;\nwidth:23px;\nheight:23px;\n}\na.callbacks_nav.callbacks2_nav.prev {\nleft: 86% !important;\ntop: 9%;\n}\na.callbacks_nav.callbacks2_nav.next {\nright: 0% !important;\ntop: 9%;\n}\n/*-- Slider part Ends Here --*/\n/*-- banner-info --*/\n.banner-info {\n    margin-top: 206px;\n}\n\n.banner-info h3{\nline-height: 1.4em;\ncolor: #fff;\nfont-family: 'Alegreya', serif;\nfont-size: 72px;\ntext-align: center;\n}\n/*-- //banner-info --*/\n.bottom-grid{\nposition:relative;\n}\n.banner-bottom{\npadding:80px 0;\nbackground:#eee;\n}\nh3.tittle,h2.tittle{\ntext-align:center;\nfont-size:32px;\nfont-family: 'Alegreya', serif;\ncolor:#fc3a3a;\nmargin-bottom:50px;\n\n}\n.bottom-text{\nbackground:#fff;\npadding: 52px 15px;\nborder-radius: 100%;\n-webkit-border-radius: 100%;\n-o-border-radius: 100%;\n-ms-border-radius: 100%;\n-moz-border-radius: 100%;\nborder: 2px solid transparent;\n}\n.bottom-text h3{\ntext-align:center;\nfont-size:20px;\nfont-weight:600;\ncolor:#646464;\n}\n.bottom-text p{\nmargin-top: 14px;\ntext-align:center;\nfont-size:14px;\ncolor:#757575;\nline-height:2em;\n}\n.bottom-grid span{\n    position: absolute;\n    font-size: 27px;\n    color: #646464;\n    background: #c2c2c2;\n    border-radius: 100%;\n    padding: 20px 20px;\n    top: -37px;\n    text-align: center;\n    left: 37%;\n}\n.bottom-grids {\n    margin-top: 90px;\n}\n.bottom-grid:hover div.bottom-text{\nborder:2px solid #2FD828;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.bottom-grid:hover div.bottom-text h3{\ncolor:#2FD828;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.bottom-grid:hover div.bottom-spa span{\nbackground:#2FD828 !important;\ncolor:#fff !important;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.teachers{\npadding:80px 0;\nbackground: #393939;\n}\n.team-grid img {\nborder: 2px solid transparent;\nborder-radius: 100%;\n-webkit-border-radius: 100%;\n-o-border-radius: 100%;\n-ms-border-radius: 100%;\n-moz-border-radius: 100%;\n}\n.teach-head h3{\n    text-align: center;\n    font-size: 32px;\nfont-family: 'Alegreya', serif;\n    color: #fc3a3a;\n}\n.teach-head p{\n    text-align: center;\n\tfont-size:14px;\n\tcolor:#c2c2c2;\n\tline-height:1.8em;\n    width: 75%;\n    margin: 20px auto 0 auto;\n}\n.team-grids {\n    margin-top: 50px;\n}\n.team-img h3{\n    margin: 15px 0 8px 0;\n    text-align: center;\n    font-size: 20px;\n    font-weight: 600;\n    color: #2FD828;\n}\n.team-img h4 {\n    font-size: 16px;\n    color: #c2c2c2;\n}\n.team-img p {\n  display:none;\n  color: #c2c2c2;\n  font-size: 13px;\n  line-height: 1.8em;\n  margin-top: 7px;\n}\n.team-img ul{\nmargin-top:8px;\n}\n.team-img ul li{\nlist-style-type:none;\ndisplay:inline-block;\nmargin-left:5px;\n}\n.team-img ul li a{\nwidth:24px;\nheight:24px;\ndisplay:block;\n}\n.team-img ul li a.fb{\n background:url('../images/img-sp.png') no-repeat 0px 0px;\n}\n.team-img ul li a.fb:hover{\n background:url('../images/img-sp.png') no-repeat 0px -27px;\n}\n.team-img ul li a.twitt{\n background:url('../images/img-sp.png') no-repeat -26px 0px;\n}\n.team-img ul li a.twitt:hover{\n background:url('../images/img-sp.png') no-repeat -26px -27px;\n}\n.team-img ul li a.goog{\n background:url('../images/img-sp.png') no-repeat -52px 0px;\n}\n.team-img ul li a.goog:hover{\n background:url('../images/img-sp.png') no-repeat -52px -27px;\n}\n.team-img ul li a.drib{\n background:url('../images/img-sp.png') no-repeat -78px 0px;\n}\n.team-img ul li a.drib:hover{\n background:url('../images/img-sp.png') no-repeat -78px -27px;\n}\n.team-grid:hover div.team-img p{\ndisplay:block;\ntransition: 0.5s all;\n-webkit-transition: 0.5s all;\n-o-transition: 0.5s all;\n-moz-transition: 0.5s all;\n-ms-transition: 0.5s all;\n}\n.team-grid:hover div.team-img img{\nborder:2px solid #2FD828;\n}\n.features-left img{\nwidth:100%;\n}\n.about-grids{\nmargin-top:50px;\n}\n.features-right h4 {\n  margin: 0;\n  color: #2FD828;\n  font-size: 20px;\n  font-weight: 600;\n}\n.features-right p {\n  margin: 0;\n  color: #757575;\n  line-height: 2em;\n  font-size: 14px;\n}\n.features-right p:nth-child(2) {\n  margin: 19px 0;\n}\n.facilities{\n  padding: 80px 0;\n  background: #eee;\n}\n.features{\n  padding: 80px 0;\n}\n.view {\n  width: 31.5%;\n  height: 100%;\n   margin: 10px;\n   float: left;\n   border: 10px solid #fff;\n   overflow: hidden;\n   position: relative;\n   text-align: center;\n   -webkit-box-shadow: 1px 1px 2px #e6e6e6;\n   -moz-box-shadow: 1px 1px 2px #e6e6e6;\n   box-shadow: 1px 1px 2px #e6e6e6;\n   cursor: default;\n}\n.view .mask,.view .content {\n  width: 100%;\n  height: 100%;\n   position: absolute;\n   overflow: hidden;\n   top: 0;\n   left: 0;\n}\n.view img {\n   display: block;\n   position: relative;\n}\n.view-seventh img {\n   -webkit-transition: all 0.5s ease-out;\n   -moz-transition: all 0.5s ease-out;\n   -o-transition: all 0.5s ease-out;\n   -ms-transition: all 0.5s ease-out;\n   transition: all 0.5s ease-out;\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n   filter: alpha(opacity=100);\n   opacity: 1;\n}\n.view-seventh .mask {\n   background-color: #05969b;\n   -webkit-transform: rotate(0deg) scale(1);\n   -moz-transform: rotate(0deg) scale(1);\n   -o-transform: rotate(0deg) scale(1);\n   -ms-transform: rotate(0deg) scale(1);\n   transform: rotate(0deg) scale(1);\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n   filter: alpha(opacity=0);\n   opacity: 0;\n   -webkit-transition: all 0.3s ease-out;\n   -moz-transition: all 0.3s ease-out;\n   -o-transition: all 0.3s ease-out;\n   -ms-transition: all 0.3s ease-out;\n   transition: all 0.3s ease-out;\n}\n.view-seventh h2 {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh p {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh a.info {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh:hover img {\n   -webkit-transform: rotate(720deg) scale(0);\n   -moz-transform: rotate(720deg) scale(0);\n   -o-transform: rotate(720deg) scale(0);\n   -ms-transform: rotate(720deg) scale(0);\n   transform: rotate(720deg) scale(0);\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n   filter: alpha(opacity=0);\n   opacity: 0;\n}\n.view-seventh:hover .mask {\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n   filter: alpha(opacity=100);\n   opacity: 1;\n   -webkit-transform: translateY(0px) rotate(0deg);\n   -moz-transform: translateY(0px) rotate(0deg);\n   -o-transform: translateY(0px) rotate(0deg);\n   -ms-transform: translateY(0px) rotate(0deg);\n   transform: translateY(0px) rotate(0deg);\n   -webkit-transition-delay: 0.4s;\n   -moz-transition-delay: 0.4s;\n   -o-transition-delay: 0.4s;\n   -ms-transition-delay: 0.4s;\n   transition-delay: 0.4s;\n}\n.view-seventh:hover h2 {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.7s;\n   -moz-transition-delay: 0.7s;\n   -o-transition-delay: 0.7s;\n   -ms-transition-delay: 0.7s;\n   transition-delay: 0.7s;\n}\n.view-seventh:hover p {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.6s;\n   -moz-transition-delay: 0.6s;\n   -o-transition-delay: 0.6s;\n   -ms-transition-delay: 0.6s;\n   transition-delay: 0.6s;\n}\n.view-seventh:hover a.info {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.5s;\n   -moz-transition-delay: 0.5s;\n   -o-transition-delay: 0.5s;\n   -ms-transition-delay: 0.5s;\n   transition-delay: 0.5s;\n}\n.view h4 {\n  text-transform: uppercase;\n  color: #2FD828;\n  font-family: 'Alegreya', serif;\n  text-align: center;\n  position: relative;\n  font-size: 24px;\n  padding: 10px;\n  background: rgba(0, 0, 0, 0.8);\n  margin: 40px 0 25px 0;\n}\n.view p {\n  font-style: italic; \n  font-size: 14px;\n  line-height: 1.8em;\n  position: relative;\n  color: #fff;\n  padding: 0px 20px 20px;\n  text-align: center;\n}\n.view.view-seventh img {\n  width: 100%;\n}\n/*-- footer --*/\n.footer{\npadding:50px 0;\nbackground:#393939;\n}\n.footer-grid ul{\npadding:0;\nmargin:0;\n}\n.footer-grid ul li{\n  background: url(../images/arrow.png) no-repeat 0px 6px;\n  list-style-type: none;\n  display: block;\n  padding-left: 23px;\n  line-height: 2em;\n}\n.footer-grid ul li a{\n  color: #757575;\n  font-size: 14px;\n  font-weight: 600;\n}\n.footer-grid ul li a:hover{\npadding-left: 11px;\ncolor:#2FD828;\n}\n.footer p {\nmargin:44px 0 0 0;\nfont-size:14px;\ncolor: #c2c2c2;\nfont-weight: 600;\ntext-align:center;\n}\n.footer p a{\ncolor:#fc3a3a;\n}\n.footer p a:hover{\ncolor: #c2c2c2;\n}\n.footer-grid h3{\n  margin: 0 0 20px 0;\n  font-size: 25px;\n  font-family: 'Alegreya', serif;\n  color: #fc3a3a;\n}\n/*-- //footer --*/\n.banner.page-head {\n  min-height: 135px;\n}\n/*--trypography--*/\n.typrography {\n  padding: 80px 0;\n}\n.grid_4{\n\tbackground:#fff;\n} \n.grid_3.grid_4 h3 {\n  margin: 0;\n} \n.grid_5{\n\tbackground:#fff;\n\tpadding:1em 0 2em 0;\n}\n\n.table td, .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th {\n  padding: 15px!important;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  font-size: 0.9em;\n  color: #999;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  border-top: none !important;\n}\n.tab-content > .active {\n  display: block;\n  visibility: visible;\n}\n.label {\n  font-weight: 300 !important;\n}\n.label {\n  padding: 4px 6px;\n  border: none;\n  text-shadow: none;\n}\nh4.typ1{\n\tmargin-bottom:15px;\n}\nh5.typ1{\n\tmargin-bottom:15px;\n}\n.progress {\n  height: 8px;\n  box-shadow: none;\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #eeeeee;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #ffffff;\n  text-align: center;\n  background-color:#03a9f4;\n  -webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition:width 0.6s ease;\n  -o-transition:width 0.6s ease;\n  transition:width 0.6s ease;\n}\n.progress-bar {\n  box-shadow: none;\n}\n.progress-bar-primary {\n  background-color: #03a9f4;\n}\n.progress-bar-info {\n  background-color: #00bcd4;\n}\n.progress-bar-success {\n  background-color: #8bc34a;\n}\n.progress-bar-warning {\n  background-color: #ffc107;\n}\n.progress-bar-danger {\n  background-color: #e51c23;\n}\n.progress-bar-inverse {\n  background-color: #757575;\n}\n.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {\n  background-color:#5bb2fc !important;\n  border-color:#5bb2fc; !important;\n}\n.grid_3 p{\n  line-height: 2em;\n  color: #888;\n  font-size: 0.9em;\n  margin-bottom: 1em;\n  font-weight: 300;\n}\n.bs-docs-example {\n  margin: 1em 0;\n}\nsection#tables  p {\n margin-top: 1em;\n}\n.breadcrumb li{\n\tfont-size:0.85em;\n}\n.badge-primary {\n  background-color: #03a9f4;\n}\n.badge-success {\n  background-color: #8bc34a;\n}\n.badge-warning {\n  background-color: #ffc107;\n}\n.badge-danger {\n  background-color: #e51c23;\n}\n.tab-container .tab-content {\n  border-radius: 0 2px 2px 2px;\n  border: 1px solid #e0e0e0;\n  padding: 16px;\n  background-color: #ffffff;\n}\n.nav-tabs {\n  margin-bottom: 1em;\n}\n.alert {\n  font-size: 0.85em;\n}\nh1.t-button,h2.t-button,h3.t-button,h4.t-button,h5.t-button {\nline-height:1.8em;\n  margin-top:0.5em;\n  margin-bottom: 0.5em;\n}\nh3.bars {\n  margin-bottom: 0.8em;\n}\nli.list-group-item1 {\n  line-height: 2.5em;\n}\n.input-group {\n  margin-bottom: 20px;\n  }\n.in-gp-tl{\npadding:0;\n}\n.in-gp-tb{\npadding-right:0;\n}\n.list-group {\n  margin-bottom: 48px;\n}\n ol {\n  margin-bottom: 44px;\n}\n/*-- //typography --*/\n/*--contact-page--*/\n.contact-map iframe{\nwidth:100%;\nheight:300px;\nborder:none;\n}\n.map iframe {\n  width: 100%;\n  height: 340px;\n}\n.contact-form input[type=\"text\"] {\n\tborder: 1px solid #a8a8a8;\n\twidth: 31.65%;\n\toutline: none;\n\tpadding: 10px;\n\tfont-size: 14px;\n\n\tcolor: #fc3a3a;\n\tmargin: 0 24px 24px 0;\n}\n.contact-form textarea {\n\tborder: 1px solid #a8a8a8;\n\twidth: 100%;\n\theight: 200px;\n\toutline: none;\n\tfont-size: 14px;\n\tcolor: #fc3a3a;\n\tresize: none;\n\tpadding: 10px;\n\tmargin-bottom: 24px;\n}\n.contact-form input[type=\"text\"]:nth-child(3){\nmargin-right:0;\n}\n.contact-form input[type=\"submit\"]{\noutline:none;\n  border:none;\n  text-decoration: none;\n  font-size: 20px;\n  color: #fff;\n  padding: 9px 32px;\n  background:#fc3a3a;\n\n}\n.contact-form input[type=\"submit\"]:hover{\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\nbackground:#05969b;\n}\n.contact {\n  padding: 80px 0;\n}\n.contact-map {\n  margin-bottom: 50px;\n}\n\n/*--//contact-page--*/\n/*--services-page--*/\n.ser-img img {\n  width: 100%;\n}\n.caption h4 {\n  color: #2FD828;\n  font-weight: 600;\n  font-size: 20px;\n  text-transform: uppercase;\n}\n.caption p {\n  margin: 15px 0 0 0;\n  font-size: 14px;\n  color: #757575;\n  line-height: 2em;\n  }\n.services{\npadding:80px 0;\n}\n\n.row{\nmargin:0;\n}\n.ser-img{\nfloat:left;\nwidth:39%;\n}\n.caption{\nfloat:right;\nwidth:57%;\n}\n.services-grid:nth-child(3),.services-grid:nth-child(4){\nmargin-top:50px;\n}\n.services-top{\npadding:80px 0 0 0;\n  background: url(../images/back.jpg) no-repeat 0px 0px;\n  background-size: cover;\n  -webkit-background-size: cover;\n  -o-background-size: cover;\n  -ms-background-size: cover;\n  -moz-background-size: cover;\n  min-height:450px;\n}\n.ser-first{\npadding:80px 0;\n}\n.ser-top-grids,.ser-first-grids{\n  margin-top: 50px;\n}\n.ser-top-img{\nfloat:left;\nwidth:40%;\n}\n.ser-top-img img{\nwidth:100%;\n}\n.ser-top-txt{\nfloat:left;\nwidth:45%;\nmargin-left:30px;\n}\n.ser-top-txt p{\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  color: #c2c2c2;\n  line-height: 2em;\n}\n.ser-top-txt p:nth-child(2) {\n  margin: 15px 0 0 0;\n}\n.ser-top-grid ul{\nmargin:0;\npadding:0;\n}\n.ser-top-grid ul li{\nlist-style-type:none;\npadding-left:30px;\nbackground:url(../images/arrow.png) no-repeat 0px 7px;\nline-height:2.3em;\n}\n.ser-top-grid ul li a{\ncolor:#c2c2c2;\ntext-decoration:none;\nfont-size:14px;\n}\n.ser-top-grid ul li a:hover{\n  color: #fc3a3a;\n  padding-left: 5px;\n}\n.ser-first-grid h3 {\n  margin: 26px 0 10px 0;\n  color: #2FD828;\n  font-weight:600;\n  font-size: 20px;\n}\n.ser-first-grid  p {\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  color: #757575;\n  line-height: 2em;\n  }\n.ser-first-grid span {\n  font-size: 33px;\n  color: #fff;\n  background: #05969b;\n  border-radius: 100%;\n  padding: 25px 25px;\n  text-align: center;\n}\n/*-- //services-page --*/\n/*-- about-page --*/\n.about {\n  padding: 80px 0;\n}\n.about-grid-left img{\nwidth:100%;\n}\n.about-grid h3{\n  font-size: 20px;\n  margin: 0;\n  color: #2FD828;\n  font-weight: 600;\n}\n.about-grid p{\n  color: #757575;\n  margin: 18px 0;\n  font-size: 14px;\n  line-height: 2em;\n}\n.about-grid p:nth-child(3) {\n margin:0;\n}\n.client-say-grid p{\nbackground:url(../images/quote.png) no-repeat 0px 0px;\npadding-left:50px;\n  color: #757575;\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  line-height: 2em;\n\n}\n.client-say-grid h4{\n  font-size: 20px;\n  color: #2FD828;\n  font-weight: 600;\n  margin:15px 0 0 0;\n  padding-left:50px;\n}\n.about-bottom-last {\n  padding: 80px 0;\n}\n.help-grids{\nbackground:#05969b;\npadding:80px 0;\n}\n.how-we-help{\npadding:100px 0;\n}\n\n.help-grid p{\ncolor: #BBE8EA;\nmargin: 15px 0 0px 0;\nfont-size: 14px;\nline-height:2em;\n}\nh3.tittle.tit3 {\n  color: #fff;\n  text-align: left;\n  margin-bottom: 20px;\n}\n/*-- //about-page --*/\n/*-- to-top --*/\n#toTop {\n\tdisplay: none;\n\ttext-decoration: none;\n\tposition: fixed;\n\tbottom: 28px;\n\tright: 1%;\n\toverflow: hidden;\n\tz-index: 999; \n\twidth: 32px;\n\theight: 32px;\n\tborder: none;\n\ttext-indent: 100%;\n\tbackground: url(\"../images/arr.png\") no-repeat 0px 0px;\n}\n#toTopHover {\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: block;\n\toverflow: hidden;\n\tfloat: right;\n\topacity: 0;\n\t-moz-opacity: 0;\n\tfilter: alpha(opacity=0);\n}\n/*-- //to-top --*/\n\n/*-- responsive media queries --*/\n@media (max-width: 1024px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 42px;\n\t  }\n\t.navbar-default .navbar-nav > li > a {\n\t  font-size: 15px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding:22px 15px;\n\t}\n\t.navbar-nav {\n\t  float: right;\n\t  width: 50%;\n\t}\n\t.sb-search-input {\n\t  width: 69%;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 58px;\n\t  }\n\t.banner {\n\t  min-height: 490px;\n\t}\n\t.banner-info {\n\t  margin-top: 135px;\n\t}\n\t.callbacks_tabs {\n\t  top: 125%;\n\t  }\n\t.banner-bottom ,.teachers,.about,.help-grids,.about-bottom-last,.typrography,.ser-first,.services,.contact,.facilities,.features{\n\t  padding: 60px 0;\n\t  }\n\t.teach-head h3,h3.tittle,h2.tittle{\n\t  font-size: 28px;\n\t  }\n\t.bottom-text h3{\n\t  font-size: 15px;\n\t  }\n\t.bottom-text p ,.teach-head p,.features-right p,.about-grid p,.help-grid p,.ser-first-grid p,.ser-top-txt p,.caption p{\n\t  line-height: 1.8em;\n\t  font-size: 13px;\n\t  }\n\t.bottom-text {\n\t  padding: 39px 9px;\n\t  }\n\t.bottom-grid span {\n\t  font-size: 25px;\n\t  padding: 17px 16px;\n\t  top: -30px;\n\t  left: 38%;\n\t}\n\t.view h4 {\n\t  font-size: 21px;\n\t  padding: 8px;\n\t  margin: 30px 0 12px 0;\n\t}\n\t.view p {\n\t  font-size: 13px;\n\t  padding: 0px 12px 14px;\n\t  }\n\t.view {\n\t  width: 31.2%;\n\t  }\n\t.features-right p:nth-child(2) {\n\t  margin: 9px 0;\n\t}\n\t.footer-grid ul li a {\n\t  font-size: 13px;\n\t  }\n\t.footer-grid h3 {\n\t  margin: 0 0 15px 0;\n\t  font-size: 22px;\n\t  }\n\t.footer p {\n\t  font-size: 13px;\n\t  }\n\t.features-right h4 ,.team-img h3,.about-grid h3,.ser-first-grid h3,.caption h4 {\n\t font-size: 17px;\n\t}\n\t.client-say-grid p{\n\t  padding-left: 34px;\n\t  font-size: 13px;\n\t  line-height: 1.8em;\n\t}\n\t.client-say-grid h4 {\n\t  font-size: 17px;\n\t  margin: 9px 0 0 0;\n\t  padding-left: 34px;\n\t}\n\t.in-gp-tb {\n\t  padding: 0;\n\t}\n\t.ser-first-grid span {\n\t  padding: 20px 20px;\n\t  }\n\t.services-top{\n\t  padding: 60px 0 0 0;\n\t}\n\t.ser-top-txt {\n\t  width: 53%;\n\t  margin-left: 30px;\n\t}\n\t.ser-top-grid ul li a {\n\t  font-size: 13px;\n\t}\n\t.ser-top-grid ul li {\n\t  line-height: 2em;\n\t}\n\t.services-top {\n\t  min-height: 370px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 19px 24px 0;\n\t}\n\t.contact-form textarea {\n\t  height: 175px;\n\t  }\n\t.contact-form input[type=\"submit\"]{\n\t  font-size: 17px;\n\t  padding: 7px 23px;\n\t  }\n\t.contact-map iframe {\n\t  height: 275px;\n\t}\n\t.contact-form input[type=\"text\"],.contact-form textarea {\n\t  font-size: 13px;\n\t  }\n\t.sb-search {\n\t  margin-top: 12px;\n\t  }\n}\n@media (max-width: 800px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 37px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 19px 13px;\n\t}\n\t.navbar-nav {\n\t  float: right;\n\t  width: 61%;\n\t}\n\t.sb-search-input {\n\t  right: 3px;\n\t  width: 64%;\n\t  height: 36px;\n\t  padding: 3px 15px;\n\t  font-size: 13px;\n\t  }\n\t.sb-icon-search {\n\t  background: #fc3a3a url('../images/search.png') no-repeat 0px 8px;\n\t}\n\t.sb-icon-search{\n\t  width: 33px !important;\n\t  height: 33px !important;\n\t  right: 6px;\n\t  }\n\t.sb-search.sb-search-open .sb-icon-search{\n\t  background: url('../images/search.png') no-repeat 0px 8px;\n\t  }\n\t.sb-search-input {\n\t  right: 6px;\n\t  height: 33px;\n\t  }\n\t.sb-search-submit {\n\t  background: url('../images/search.png') no-repeat -8px 8px;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 46px;\n\t}\n\t.banner-info {\n\t  margin-top: 110px;\n\t}\n\t.banner {\n\t  min-height: 415px;\n\t}\n\t.sb-search-input {\n\t  width: 82%;\n\t  }\n\th3.tittle,h2.tittle{\n\t  margin-bottom: 25px;\n\t}\n\t.bottom-grids {\n\t  margin-top: 65px;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 5px;\n\t}\n\t.bottom-text p{\n\t  font-size: 12px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 14px;\n\t}\n\t.bottom-text p {\n\t  margin-top: 7px;\n\t  }\n\t.bottom-text {\n\t  padding: 33px 9px;\n\t}\n\t.bottom-grid span {\n\t  padding: 13px 13px;\n\t  top: -32px;\n\t  left: 36%;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 26px;\n\t}\n\t.teach-head p {\n\t  width: 78%;\n\t  margin: 15px auto 0 auto;\n\t}\n\t.team-grids {\n\t  margin-top: 25px;\n\t}\n\t.team-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.team-img img {\n\t  width: 100%;\n\t}\n\t.features-right h4, .team-img h3, .about-grid h3, .ser-first-grid h3, .caption h4 {\n\t  font-size: 15px;\n\t}\n\t.team-img h4 {\n\t  font-size: 15px;\n\t  }\n\t.team-img p {\n\t  line-height: 1.7em;\n\t  }\n\t.view {\n\t  margin: 7px;\n\t  }\n\t.view h4 {\n\t  font-size: 19px;\n\t  padding: 4px;\n\t  margin: 11px 0 5px 0;\n\t}\n\t.view p {\n\t  font-size: 12px;\n\t  padding: 0px 4px 0px;\n\t}\n\t.features-left {\n\t  float: left;\n\t  width: 53%;\n\t}\n\t.callbacks_tabs {\n\t  left: 44%;\n\t  }\n\t.footer-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.footer-grid ul li {\n\t  padding-left: 17px;\n\t  }\n\t.footer-grid ul li a {\n\t  font-size: 12px;\n\t}\n\t.footer p {\n\t  margin: 34px 0 0 0;\n\t  }\n\t.footer-grid h3 {\n\t  font-size: 20px;\n\t}\n\t.footer-grid ul li a:hover {\n\t  padding-left: 3px;\n\t  }\n\t.ser-first-grid{\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.ser-first-grid span {\n\t  padding: 16px 16px;\n\t}\n\t.ser-first-grid span {\n\t  font-size: 25px;\n\t  }\n\t.ser-top-grids, .ser-first-grids {\n\t  margin-top: 25px;\n\t}\n\t.col-md-8.ser-top-grid{\n\t  float: left;\n\t  width: 70%;\n\t  padding:0 10px;\n\t}\n\t.col-md-4.ser-top-grid {\n\t  float: left;\n\t  width: 30%;\n\t  padding:0 10px;\n\t}\n\t.ser-top-grid ul li {\n\t  padding-left: 20px;\n\t  }\n\t.ser-top-txt p{\n\t  line-height: 1.7em;\n\t}\n\t.ser-top-txt p:nth-child(2) {\n\t  margin: 4px 0 0 0;\n\t}\n\t.services-top {\n\t  min-height: 355px;\n\t}\n\t.services-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 10px;\n\t}\n\t.caption h4{\n\t  font-size: 14px;\n\t}\n\t.caption p {\n\t  margin: 10px 0 0 0;\n\t  }\n\t.caption {\n\t  float: right;\n\t  width: 55%;\n\t}\n\t.ser-img {\n\t  float: left;\n\t  width: 42%;\n\t}\n\t .caption p {\n\t  line-height: 1.7em;\n\t  }\n\t.services-grid:nth-child(3), .services-grid:nth-child(4) {\n\t  margin-top: 35px;\n\t}\n\t.contact-map iframe {\n\t  height: 250px;\n\t}\n\t.contact-map {\n\t  margin-bottom: 40px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 14px 20px 0;\n\t}\n\t.contact-form input[type=\"text\"] ,.contact-form textarea{\n\t  padding: 7px;\n\t  }\n\t.contact-form textarea {\n\t  height: 145px;\n\t}\n\t.contact-form textarea {\n\t  margin-bottom: 15px;\n\t}\n\t.contact-form input[type=\"submit\"] {\n\t  font-size: 15px;\n\t  padding: 5px 13px;\n\t}\n\t.about-grids {\n\t  margin-top: 25px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t}\n\t.about-grid p {\n\t  margin: 14px 0;\n\t  }\n\t.help-grid {\n\t  float: left;\n\t  width: 33.3%;\n\t  padding: 0 10px;\n\t}\n\t.client-say-grid {\n\t  float: left;\n\t  width: 50%;\n\t}\n\t.client-say-grid:nth-child(3),.client-say-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.client-say-grid h4{\n\t  font-size: 15px;\n\t  }\n}\n@media (max-width: 667px){\n\t.view {\n\t  margin: 6px;\n\t}\n}\n@media (max-width: 640px){\n\ta.hvr-overline-from-center:before {\n\t  left: 51%;\n\t  right: 51%;\n\t  }\n\t.navbar-default .navbar-toggle {\n\t  border-color: #2FD828;\n\t}\n\t.navbar-default .navbar-toggle .icon-bar {\n\t  background-color: #fff;\n\t}\n\t.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {\n\t  background-color:#2FD828;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 15px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 16px;\n\t}\n\t.bottom-text p {\n\t  font-size: 13px;\n\t}\n\t.bottom-text p {\n\t  margin-top: 13px;\n\t}\n\t.bottom-text {\n\t  padding: 64px 25px;\n\t}\n\t.bottom-grid span {\n\t  padding: 15px 15px;\n\t  top: -32px;\n\t  left: 41%;\n\t}\n\t.bottom-grid:nth-child(3) ,.bottom-grid:nth-child(4){\n\t  margin-top: 65px;\n\t}\n\t.team-grid {\n\t  float: left;\n\t  width: 25%;\n\t  }\n\t.team-img p {\n\t  font-size: 12px;\n\t  }\n\t.view {\n\t  margin: 6px;\n\t  border: 5px solid #fff;\n\t  }\n\t.view h4 {\n\t  font-size: 16px;\n\t  padding: 2px;\n\t  margin: 3px 0 2px 0;\n\t}\n\t.view p {\n\t  line-height: 1.5em;\n\t  }\n\t.features-right p:nth-child(2) {\n\t  margin: 13px 0;\n\t}\n\t.footer-grid {\n\t  float: left;\n\t  width: 50%;\n\t  }\n\t.footer-grid ul li {\n\t  padding-left: 25px;\n\t}\n\t.footer-grid:nth-child(3),.footer-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.navbar-nav {\n\t  text-align: center;\n\t  float: none;\n\t  width: 100%;\n\t  margin: 0;\n\t  padding: 11px 0 50px 0;\n\t}\n\t.navbar-default .navbar-nav > li > a {\n\t  text-align: center;\n\t  display: inline-block;\n\t}\n\t.search-box {\n\t  float: none;\n\t  width: 100%;\n\t}\n\t.sb-search.sb-search-open, .no-js .sb-search {\n\t  width: 100%;\n\t}\n\t.sb-search {\n\t  right: 43px;\n\t  top: 86%;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 37px;\n\t}\n\t.banner {\n\t  min-height: 342px;\n\t}\n\t.banner-info {\n\t  margin-top: 83px;\n\t}\n\t.team-img ul li {\n\t  margin-left: 3px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t  width: 53%;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 15px 13px;\n\t}\n\t.ser-first-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 15px;\n\t}\n\t.ser-first-grid:nth-child(3) ,.ser-first-grid:nth-child(4) {\n\t  margin-top: 25px;\n\t}\n\t.col-md-8.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t}\n\t.col-md-4.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t  margin-top: 25px;\n\t}\n\t.services-top {\n\t  min-height: 510px;\n\t}\n\t.services-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t}\n\t.services-grid:nth-child(3), .services-grid:nth-child(4),.services-grid:nth-child(2) {\n\t  margin-top: 35px;\n\t}\n\t.caption h4{\n\t  font-size: 16px;\n\t}\n\t.caption p {\n\t  line-height: 1.8em;\n\t  margin: 20px 0 0 0;\n\t}\n\t.contact-map iframe {\n\t  height: 210px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 10px 20px 0;\n\t}\n\t.bottom-text {\n\t  padding: 47px 15px;\n\t  width: 85%;\n\t  margin: 0 auto;\n\t}\n}\n@media (max-width: 568px){\n.view {\n  margin: 5px;\n  }\n\t.bottom-text {\n\t  width: 96%;\n\t  }\n\t.team-img ul li {\n\t  margin-left: 0px;\n\t}\n}\n@media (max-width: 480px){\n\t.banner.page-head {\n\t  min-height: 95px;\n\t}\n\t.banner-bottom, .teachers, .about, .help-grids, .about-bottom-last, .typrography, .ser-first, .services, .contact, .facilities, .features {\n\t  padding: 45px 0;\n\t}\n\t.contact-map iframe {\n\t  height: 195px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 0px 20px 0;\n\t  width: 100%;\n\t}\n\t.contact-form textarea {\n\t  height: 125px;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 24px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 10px 8px;\n\t}\n\t.sb-search {\n\t  right: 36px;\n\t  top: 82%;\n\t}\n\t.navbar-default .navbar-brand {\n\t  font-size: 35px;\n\t}\n\t.banner-info h3 {\n\t  font-size: 32px;\n\t}\n\t.banner-info {\n\t  margin-top: 62px;\n\t}\n\t.banner {\n\t  min-height: 260px;\n\t}\n\t.callbacks_tabs {\n\t  left: 40%;\n\t  top: 115%;\n\t}\n\t.bottom-grid {\n\t  padding: 0 6px;\n\t}\n\t.bottom-text {\n\t  padding: 41px 13px;\n\t}\n\t.bottom-grid span {\n\t  left: 37%;\n\t}\n\t.teach-head p {\n\t  width: 100%;\n\t  }\n\t.team-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 6px;\n\t}\n\t.team-grid:nth-child(3),.team-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.view {\n\t  width: 47.2%;\n\t}\n\t.view h4 {\n\t  padding: 7px;\n\t  margin: 15px 0 2px 0;\n\t}\n\t.features-left ,.features-right{\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 6px;\n\t}\n\t.features-right{\n\tmargin-top:25px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t}\n\t.about-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t  margin-top: 25px;\n\t}\n\t.help-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t  margin-bottom: 25px;\n\t}\n\t.help-grid:nth-child(3){\n\tmargin:0;\n\t}\n\t.client-say-grid {\n\t  padding: 0 6px;\n\t}\n\t.ser-top-txt {\n\t  width: 100%;\n\t  margin-left: 0;\n\t  margin-top: 25px;\n\t}\n\t.ser-top-img {\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.ser-first-grid {\n\t  padding: 0 8px;\n\t}\n\t.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 8px;\n\t}\n\t.services-top {\n\t  padding: 45px 0 0 0;\n\t}\n\t.services-top {\n\t  min-height: 750px;\n\t}\n\t.caption p {\n\t  line-height: 1.7em;\n\t  margin: 10px 0 0 0;\n\t}\n\t.services-grid {\n\t  padding: 0 8px;\n\t}\n\t.services-grid:nth-child(3), .services-grid:nth-child(4), .services-grid:nth-child(2) {\n\t  margin-top: 25px;\n\t}\n\t.bottom-text {\n\t  width: 100%;\n\t  }\n\t.features-left, .features-right {\n\t  padding: 0;\n\t}\n\n}\n@media (max-width: 414px){\n\t.bottom-text h3 {\n\t  font-size: 14px;\n\t}\n\t.bottom-text {\n\t  padding: 27px 9px;\n\t}\n\t.bottom-grid {\n\t  padding: 0 2px;\n\t}\n}\n@media (max-width: 384px){\n\t.bottom-text h3 {\n\t  font-size: 13px;\n\t}\n\t.bottom-text {\n\t  padding: 24px 0px;\n\t}\n\t.bottom-grid {\n\t  padding: 0 1px;\n\t}\n\t.view {\n\t  width: 46.8%;\n\t}\n}\n\n@media (max-width: 320px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 28px;\n\t  padding-top: 5px;\n\t}\n\t.navbar-toggle {\n\t  padding: 7px 7px;\n\t  margin-top: 11px;\n\t  margin-right: 0px;\n\t  }\n\t.banner.page-head {\n\t  min-height: 64px;\n\t}\n\t.contact-map {\n\t  margin-bottom: 30px;\n\t}\n\t.contact-map iframe {\n\t  height: 170px;\n\t}\n\t.sb-search {\n\t  right: 19px;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 22px;\n\t}\n\t.banner {\n\t  min-height: 182px;\n\t}\n\t.callbacks_tabs a:after {\n\t  height: 17px;\n\t  width: 5px;\n\t  }\n\t.callbacks_tabs li {\n\t  margin-left: 2px;\n\t  }\n\t.banner-info {\n\t  margin-top: 38px;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 22px;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 100%;\n\t  }\n\t.bottom-grid {\n\t  padding: 0;\n\t}\n\t.bottom-text {\n\t  padding: 66px 28px;\n\t}\n\t.bottom-grid:nth-child(3), .bottom-grid:nth-child(4) , .bottom-grid:nth-child(2){\n\t  margin-top: 60px;\n\t}\n\t.bottom-grid span {\n\t  left: 40%;\n\t}\n\t.view {\n\t  width: 100%;\n\t}\n\t.view {\n\t  margin: 0 0 15px 0;\n\t  }\n\t.view p {\n\t  line-height: 1.8em;\n\t  font-size: 13px;\n\t  padding: 0px 20px 0px;\n\t}\n\t.view h4 {\n\t  font-size: 19px;\n\t  padding: 9px;\n\t  margin: 18px 0 11px 0;\n\t  }\n\t.footer {\n\t  padding: 45px 0;\n\t  }\n\t.footer-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t}\n\t.footer-grid:nth-child(3), .footer-grid:nth-child(4) ,.footer-grid:nth-child(2) {\n\t  margin-top: 25px;\n\t}\n\t.footer p {\n\t  font-size: 13px;\n\t  line-height: 1.8em;\n\t}\n\t.footer p {\n\t  margin: 18px 0 0 0;\n\t}\n\t.client-say-grid {\n\t  padding: 0;\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.client-say-grid:nth-child(3), .client-say-grid:nth-child(4) ,.client-say-grid:nth-child(2){\n\t  margin-top: 25px;\n\t}\n\t.table td, .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th {\n\t  padding: 10px!important;\n\t}\n\t.ser-first-grid {\n\t  float: left;\n\t  width: 100%;\n\t  }\n\t.ser-first-grid:nth-child(3), .ser-first-grid:nth-child(4) ,.ser-first-grid:nth-child(2){\n\t  margin-top: 25px;\n\t}\n\t.services-top {\n\t  min-height: 700px;\n\t}\n\t.ser-img {\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.caption {\n\t  float: right;\n\t  width: 100%;\n\t  margin-top: 25px;\n\t}\n\t.ser-first-grid {\n\t  padding: 0;\n\t}\n\t.ser-top-grid {\n\t  padding: 0 !important;\n\t}\n\t.services-grid {\n\t  padding: 0;\n\t}\n\t.bottom-text {\n\t  width: 79%;\n\t  padding: 45px 10px;\n\t}\n\ta.navbar-brand span {\n\t  margin-left: 7px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 15px;\n\t}\n}\n/*-- //responsive media queries --*/"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/supersized.css",
    "content": "/*\n\n\tSupersized - Fullscreen Slideshow jQuery Plugin\n\tVersion : 3.2.7\n\tSite\t: www.buildinternet.com/project/supersized\n\t\n\tAuthor\t: Sam Dunn\n\tCompany : One Mighty Roar (www.onemightyroar.com)\n\tLicense : MIT License / GPL License\n\t\n*/\n\n* { margin:0; padding:0; }\nbody { background:#111; height:100%; }\n\timg { border:none; }\n\t\n\t#supersized-loader { position:absolute; top:50%; left:50%; z-index:0; width:60px; height:60px; margin:-30px 0 0 -30px; text-indent:-999em; background:url(../images/progress.gif) no-repeat center center;}\n\t\n\t#supersized {  display:block; position:fixed; left:0; top:0; overflow:hidden; z-index:-999; height:100%; width:100%; }\n\t\t#supersized img { width:auto; height:auto; position:relative; display:none; outline:none; border:none; }\n\t\t\t#supersized.speed img { -ms-interpolation-mode:nearest-neighbor; image-rendering: -moz-crisp-edges; }\t/*Speed*/\n\t\t\t#supersized.quality img { -ms-interpolation-mode:bicubic; image-rendering: optimizeQuality; }\t\t\t/*Quality*/\n\t\t\n\t\t#supersized li { display:block; list-style:none; z-index:-30; position:fixed; overflow:hidden; top:0; left:0; width:100%; height:100%; background:#111; }\n\t\t#supersized a { width:100%; height:100%; display:block; }\n\t\t\t#supersized li.prevslide { z-index:-20; }\n\t\t\t#supersized li.activeslide { z-index:-10; }\n\t\t\t#supersized li.image-loading { background:#111 url(../images/progress.gif) no-repeat center center; width:100%; height:100%; }\n\t\t\t\t#supersized li.image-loading img{ visibility:hidden; }\n\t\t\t#supersized li.prevslide img, #supersized li.activeslide img{ display:inline; }\n\n\n#supersized img { max-width: none !important }\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/swipebox.css",
    "content": ".swipebox-overflow-hidden {\n  overflow: hidden!important;\n}\n\n#swipebox-overlay img {\n  border: none!important;\n}\n\n#swipebox-overlay {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  opacity: 0;\n  z-index: 9999;\n  overflow: hidden;\n  display: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n\n#swipebox-slider {\n  height: 100%;\n  left: 0;\n  top: 0;\n  width: 100%;\n  white-space: nowrap;\n  position: absolute;\n}\n\n#swipebox-slider .slide {\n  background: url(../images/loader.gif) no-repeat center center;\n  height: 100%;\n  line-height: 1px;\n  text-align: center;\n  width: 100%;\n  display: inline-block;\n}\n\n#swipebox-slider .slide:before {\n  content: \"\";\n  display: inline-block;\n  height: 50%;\n  width: 1px;\n  margin-right: -1px;\n}\n\n#swipebox-slider .slide img {\n  display: inline-block;\n  max-height: 100%;\n  max-width: 100%;\n  width: auto;\n  height: auto;\n  vertical-align: middle;\n}\n\n#swipebox-action, #swipebox-caption {\n  position: absolute;\n  left: 0;\n  z-index: 999;\n  height: 50px;\n  width: 100%;\n}\n\n#swipebox-action {\n  bottom: -50px;\n}\n#swipebox-action.visible-bars {\n  bottom: 0;\n}\n\n#swipebox-action.force-visible-bars {\n  bottom: 0!important;\n}\n\n#swipebox-caption {\n  top: -50px;\n  text-align: center;\n}\n#swipebox-caption.visible-bars {\n  top: 0;\n}\n\n#swipebox-caption.force-visible-bars {\n  top: 0!important;\n}\n\n#swipebox-action #swipebox-prev, #swipebox-action #swipebox-next,\n#swipebox-action #swipebox-close {\n  background-image: url(../images/icons.png);\n  background-repeat: no-repeat;\n  border: none!important;\n  text-decoration: none!important;\n  cursor: pointer;\n  position: absolute;\n  width: 50px;\n  height: 50px;\n  top: 0;\n}\n\n#swipebox-action #swipebox-close {\n  background-position: 15px 12px;\n  left: 40px;\n}\n\n#swipebox-action #swipebox-prev {\n  background-position: -32px 13px;\n  right: 100px;\n}\n\n#swipebox-action #swipebox-next {\n  background-position: -78px 13px;\n  right: 40px;\n}\n\n#swipebox-action #swipebox-prev.disabled,\n#swipebox-action #swipebox-next.disabled {\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);\n  opacity: 0.3;\n}\n\n#swipebox-slider.rightSpring {\n  -moz-animation: rightSpring 0.3s;\n  -webkit-animation: rightSpring 0.3s;\n}\n\n#swipebox-slider.leftSpring {\n  -moz-animation: leftSpring 0.3s;\n  -webkit-animation: leftSpring 0.3s;\n}\n\n@-moz-keyframes rightSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: -30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-moz-keyframes leftSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: 30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-webkit-keyframes rightSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: -30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-webkit-keyframes leftSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: 30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n/* Skin \n--------------------------*/\n#swipebox-overlay {\n  background: #0d0d0d;\n}\n\n#swipebox-action, #swipebox-caption {\n  text-shadow: 1px 1px 1px black;\n  background-color: #0d0d0d;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0d0d0d), color-stop(100%, #000000));\n  background-image: -webkit-linear-gradient(#0d0d0d, #000000);\n  background-image: -moz-linear-gradient(#0d0d0d, #000000);\n  background-image: -o-linear-gradient(#0d0d0d, #000000);\n  background-image: linear-gradient(#0d0d0d, #000000);\n  -webkit-box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  -moz-box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=95);\n  opacity: 0.95;\n}\n\n#swipebox-action {\n  -webkit-box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n  -moz-box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n  box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n}\n\n#swipebox-caption {\n  color: white!important;\n  font-size: 15px;\n  line-height: 43px;\n  font-family: Helvetica, Arial, sans-serif;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/time.css",
    "content": "h1 {\n\tfont-family:\"΢ź\";\n\tfont-size:40px;\n\tmargin:20px 0;\n\tborder-bottom:solid 1px #ccc;\n\tpadding-bottom:20px;\n\tletter-spacing:2px;\n}\n\n.time-item strong {\n\tbackground:#C71C60;\n\tcolor:#fff;\n\tline-height:49px;\n\tfont-size:36px;\n\tfont-family:Arial;\n\tpadding:0 10px;\n\tmargin-right:10px;\n\tborder-radius:5px;\n\tbox-shadow:1px 1px 3px rgba(0,0,0,0.2);\n}\n\n#day_show {\n\tfloat:left;\n\tline-height:49px;\n\tcolor:#c71c60;\n\tfont-size:32px;\n\tmargin:0 10px;\n\tfont-family:Arial,Helvetica,sans-serif;\n}\n.item-title .unit {\n\tbackground:none;\n\tline-height:49px;\n\tfont-size:24px;\n\tpadding:0 10px;\n\tfloat:left;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/css/userlogin.css",
    "content": "/*\n *\n * Template Name: Fullscreen Login\n * Description: Login Template with Fullscreen Background Slideshow\n * Author: Anli Zaimi\n * Author URI: http://azmind.com\n *\n */\n\n\nbody {\n    background: #f8f8f8;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    text-align: center;\n    color: #fff;\n}\n\n.page-container {\n    margin: 120px auto 0 auto;\n}\n\nh1 {\n    font-size: 30px;\n    font-weight: 700;\n    text-shadow: 0 1px 4px rgba(0,0,0,.2);\n}\n\nform {\n    position: relative;\n    width: 305px;\n    margin: 15px auto 0 auto;\n    text-align: center;\n}\n\ninput {\n    width: 270px;\n    height: 42px;\n    margin-top: 10px;\n    padding: 0 15px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.15);\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #3d3d3d; /* browsers that don't support rgba */\n    border: 1px solid rgba(255,255,255,.15);\n    -moz-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    -webkit-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\n.radio{\n    width: 25px;\n    height: 20px;\n    margin-top: 25px;\n    padding: 0 15px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.15);\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #3d3d3d; /* browsers that don't support rgba */\n    border: 1px solid rgba(255,255,255,.15);\n    -moz-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    -webkit-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\ninput:-moz-placeholder { color: #fff; }\ninput:-ms-input-placeholder { color: #fff; }\ninput::-webkit-input-placeholder { color: #fff; }\n\ninput:focus {\n    outline: none;\n    -moz-box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n}\n\nbutton {\n    cursor: pointer;\n    width: 270px;\n    height: 44px;\n    margin-top: 25px;\n    padding: 0;\n    background: #ef4300;\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #ff730e;\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    font-weight: 700;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\nbutton:hover {\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n}\n\nbutton:active {\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:        \n        0 5px 8px 0 rgba(0,0,0,.1) inset,\n        0 1px 4px 0 rgba(0,0,0,.1);\n\n    border: 0px solid #ef4300;\n}\n\n.error {\n    display: none;\n    position: absolute;\n    top: 27px;\n    right: -55px;\n    width: 40px;\n    height: 40px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.25);\n    -moz-border-radius: 8px;\n    -webkit-border-radius: 8px;\n    border-radius: 8px;\n}\n\n.error span {\n    display: inline-block;\n    margin-left: 2px;\n    font-size: 40px;\n    font-weight: 700;\n    line-height: 40px;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transform: rotate(45deg);\n    -moz-transform: rotate(45deg);\n    -webkit-transform: rotate(45deg);\n    -ms-transform: rotate(45deg);\n\n}\n\n.connect {\n    width: 305px;\n    margin: 35px auto 0 auto;\n    font-size: 18px;\n    font-weight: 700;\n    text-shadow: 0 1px 3px rgba(0,0,0,.2);\n}\n\n.connect a {\n    display: inline-block;\n    width: 32px;\n    height: 35px;\n    margin-top: 15px;\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\n.connect a:hover { background-position: center bottom; }\n\n\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/index.jsp",
    "content": "<%@ page contentType=\"text/html; charset=utf-8\"%>\n<html>\n<head>\n</head>\n<script type=\"text/javascript\">\n\twindow.location.href = \".action\";\n</script>\n<body>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\nvar $dp,WdatePicker;(function(){var $={\n$langList:[\n {name:\"en\",charset:\"UTF-8\"},\n {name:\"zh-cn\",charset:\"gb2312\"},\n {name:\"zh-tw\",charset:\"GBK\"}],\n$skinList:[\n {name:\"default\",charset:\"gb2312\"},\n {name:\"whyGreen\",charset:\"gb2312\"},\n {name:\"blue\",charset:\"gb2312\"},\n {name:\"green\",charset:\"gb2312\"},\n {name:\"simple\",charset:\"gb2312\"},\n {name:\"ext\",charset:\"gb2312\"},\n {name:\"blueFresh\",charset:\"gb2312\"},\n {name:\"twoer\",charset:\"gb2312\"},\n {name:\"YcloudRed\",charset:\"gb2312\"}],\n$wdate:true,\n$crossFrame:true,\n$preLoad:false,\n$dpPath:\"\",\ndoubleCalendar:false,\nenableKeyboard:true,\nenableInputMask:true,\nautoUpdateOnChanged:null,\nweekMethod:\"ISO8601\",\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nfirstDayOfWeek:0,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOK:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:null,\nqsEnabled:true,\nautoShowQS:false,\nopposite:false,\nhmsMenuCfg:{H:[1,6],m:[5,6],s:[15,4]},\nopposite:false,\n\nspecialDates:null,specialDays:null,disabledDates:null,disabledDays:null,onpicking:null,onpicked:null,onclearing:null,oncleared:null,ychanging:null,ychanged:null,Mchanging:null,Mchanged:null,dchanging:null,dchanged:null,Hchanging:null,Hchanged:null,mchanging:null,mchanged:null,schanging:null,schanged:null,eCont:null,vel:null,elProp:\"\",errMsg:\"\",quickSel:[],has:{},getRealLang:function(){var _=$.$langList;for(var A=0;A<_.length;A++)if(_[A].name==this.lang)return _[A];return _[0]}};WdatePicker=U;var Y=window,T={innerHTML:\"\"},N=\"document\",H=\"documentElement\",C=\"getElementsByTagName\",V,A,S,G,c,X=navigator.appName;if(X==\"Microsoft Internet Explorer\")S=true;else if(X==\"Opera\")c=true;else G=true;A=$.$dpPath||J();if($.$wdate)K(A+\"skin/WdatePicker.css\");V=Y;if($.$crossFrame){try{while(V.parent!=V&&V.parent[N][C](\"frameset\").length==0)V=V.parent}catch(O){}}if(!V.$dp)V.$dp={ff:G,ie:S,opera:c,status:0,defMinDate:$.minDate,defMaxDate:$.maxDate};B();if($.$preLoad&&$dp.status==0)E(Y,\"onload\",function(){U(null,true)});if(!Y[N].docMD){E(Y[N],\"onmousedown\",D,true);Y[N].docMD=true}if(!V[N].docMD){E(V[N],\"onmousedown\",D,true);V[N].docMD=true}E(Y,\"onunload\",function(){if($dp.dd)P($dp.dd,\"none\")});function B(){try{V[N],V.$dp=V.$dp||{}}catch($){V=Y;$dp=$dp||{}}var A={win:Y,$:function($){return(typeof $==\"string\")?Y[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=\"\"){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var B in $)if(this.dt[B]===undefined)this.errMsg=\"invalid property:\"+B;else{this.dt[B]+=$[B];if(B==\"M\"){var C=$[\"M\"]>0?1:0,A=new Date(this.dt[\"y\"],this.dt[\"M\"],0).getDate();this.dt[\"d\"]=Math.min(A+C,this.dt[\"d\"])}}if(this.dt.refresh())return this.dt}return\"\"},show:function(){var A=V[N].getElementsByTagName(\"div\"),$=100000;for(var B=0;B<A.length;B++){var _=parseInt(A[B].style.zIndex);if(_>$)$=_}this.dd.style.zIndex=$+2;P(this.dd,\"block\");P(this.dd.firstChild,\"\")},unbind:function($){$=this.$($);if($.initcfg){L($,\"onclick\",function(){U($.initcfg)});L($,\"onfocus\",function(){U($.initcfg)})}},hide:function(){P(this.dd,\"none\")},attachEvent:E};for(var _ in A)V.$dp[_]=A[_];$dp=V.$dp}function E(B,_,A,$){if(B.addEventListener){var C=_.replace(/on/,\"\");A._ieEmuEventHandler=function($){return A($)};B.addEventListener(C,A._ieEmuEventHandler,$)}else B.attachEvent(_,A)}function L(A,$,_){if(A.removeEventListener){var B=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){return _($)};A.removeEventListener(B,_._ieEmuEventHandler,false)}else A.detachEvent($,_)}function a(_,$,A){if(typeof _!=typeof $)return false;if(typeof _==\"object\"){if(!A)for(var B in _){if(typeof $[B]==\"undefined\")return false;if(!a(_[B],$[B],true))return false}return true}else if(typeof _==\"function\"&&typeof $==\"function\")return _.toString()==$.toString();else return _==$}function J(){var _,A,$=Y[N][C](\"script\");for(var B=0;B<$.length;B++){_=$[B].getAttribute(\"src\")||\"\";_=_.substr(0,_.toLowerCase().indexOf(\"wdatepicker.js\"));A=_.lastIndexOf(\"/\");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function K(A,$,B){var D=Y[N][C](\"HEAD\").item(0),_=Y[N].createElement(\"link\");if(D){_.href=A;_.rel=\"stylesheet\";_.type=\"text/css\";if($)_.title=$;if(B)_.charset=B;D.appendChild(_)}}function F($){$=$||V;var A=0,_=0;while($!=V){var D=$.parent[N][C](\"iframe\");for(var F=0;F<D.length;F++){try{if(D[F].contentWindow==$){var E=W(D[F]);A+=E.left;_+=E.top;break}}catch(B){}}$=$.parent}return{\"leftM\":A,\"topM\":_}}function W(G,F){if(G.getBoundingClientRect)return G.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},E=false,I=null,_=G.offsetTop,H=G.offsetLeft,D=G.offsetWidth,B=G.offsetHeight,C=G.offsetParent;if(C!=G)while(C){H+=C.offsetLeft;_+=C.offsetTop;if(R(C,\"position\").toLowerCase()==\"fixed\")E=true;else if(C.tagName.toLowerCase()==\"body\")I=C.ownerDocument.defaultView;C=C.offsetParent}C=G.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(P(C)))if(!c||C.style.overflow!==\"visible\"){H-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}if(!E){var $=b(I);H-=$.left;_-=$.top}D+=H;B+=_;return{\"left\":H,\"top\":_,\"right\":D,\"bottom\":B}}}function M($){$=$||V;var B=$[N],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H].clientWidth)?B[H].clientWidth:B.body.offsetWidth,_=($.innerHeight)?$.innerHeight:(B[H]&&B[H].clientHeight)?B[H].clientHeight:B.body.offsetHeight;return{\"width\":A,\"height\":_}}function b($){$=$||V;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function D($){try{var _=$?($.srcElement||$.target):null;if($dp.cal&&!$dp.eCont&&$dp.dd&&_!=$dp.el&&$dp.dd.style.display==\"block\")$dp.cal.close()}catch($){}}function Z(){$dp.status=2}var Q,_;function U(K,C){if(!$dp)return;B();var L={};for(var H in K)L[H]=K[H];for(H in $)if(H.substring(0,1)!=\"$\"&&L[H]===undefined)L[H]=$[H];if(C){if(!J()){_=_||setInterval(function(){if(V[N].readyState==\"complete\")clearInterval(_);U(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=T;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=T;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var F=D();if(Y.event===F||F){L.srcEl=F.srcElement||F.target;F.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el[\"My97Mark\"]===true||L.el.disabled||($dp.dd&&P($dp.dd)!=\"none\"&&$dp.dd.style.left!=\"-970px\")){try{if(L.el[\"My97Mark\"])L.el[\"My97Mark\"]=false}catch(A){}return}if(F&&L.el.nodeType==1&&!a(L.el.initcfg,K)){$dp.unbind(L.el);E(L.el,F.type==\"focus\"?\"onclick\":\"onfocus\",function(){U(K)});L.el.initcfg=K}I(L)}function J(){if(S&&V!=Y&&V[N].readyState!=\"complete\")return false;return true}function D(){if(G){func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+\"\").indexOf(\"Event\")>=0)return $;func=func.caller}return null}return event}}function R(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function P(_,$){if(_)if($!=null)_.style.display=$;else return R(_,\"display\")}function I(G,_){var D=G.el?G.el.nodeName:\"INPUT\";if(_||G.eCont||new RegExp(/input|textarea|div|span|p|a/ig).test(D))G.elProp=D==\"INPUT\"?\"value\":\"innerHTML\";else return;if(G.lang==\"auto\")G.lang=S?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!G.eCont)for(var C in G)$dp[C]=G[C];if(!$dp.dd||G.eCont||($dp.dd&&(G.getRealLang().name!=$dp.dd.lang||G.skin!=$dp.dd.skin))){if(G.eCont)E(G.eCont,G);else{$dp.dd=V[N].createElement(\"DIV\");$dp.dd.style.cssText=\"position:absolute\";V[N].body.appendChild($dp.dd);E($dp.dd,G);if(_)$dp.dd.style.left=$dp.dd.style.top=\"-970px\";else{$dp.show();B($dp)}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)B($dp)}function E(K,J){var I=V[N].domain,F=false,G=\"<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src=\\\"about:blank\\\"></iframe>\";K.innerHTML=G;var _=$.$langList,D=$.$skinList,H;try{H=K.lastChild.contentWindow[N]}catch(E){F=true;K.removeChild(K.lastChild);var L=V[N].createElement(\"iframe\");L.hideFocus=true;L.frameBorder=0;L.scrolling=\"no\";L.src=\"javascript:(function(){var d=document;d.open();d.domain='\"+I+\"';})()\";K.appendChild(L);setTimeout(function(){H=K.lastChild.contentWindow[N];C()},97);return}C();function C(){var _=J.getRealLang();K.lang=_.name;K.skin=J.skin;var $=[\"<head><script>\",\"\",\"var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\",\"if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}\",\"doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};\",\"</script><script src=\",A,\"lang/\",_.name,\".js charset=\",_.charset,\"></script>\"];if(F)$[1]=\"document.domain=\\\"\"+I+\"\\\";\";for(var C=0;C<D.length;C++)if(D[C].name==J.skin)$.push(\"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\"+A+\"skin/\"+D[C].name+\"/datepicker.css\\\" charset=\\\"\"+D[C].charset+\"\\\"/>\");$.push(\"<script src=\\\"\"+A+\"calendar.js\\\"></script>\");$.push(\"</head><body leftmargin=\\\"0\\\" topmargin=\\\"0\\\" tabindex=0></body></html>\");$.push(\"<script>var t;t=t||setInterval(function(){if(doc.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>\");J.setPos=B;J.onload=Z;H.write(\"<html>\");H.cfg=J;H.write($.join(\"\"));H.close()}}function B(J){var H=J.position.left,C=J.position.top,D=J.el;if(D==T)return;if(D!=J.srcEl&&(P(D)==\"none\"||D.type==\"hidden\"))D=J.srcEl;var I=W(D),$=F(Y),E=M(V),B=b(V),G=$dp.dd.offsetHeight,A=$dp.dd.offsetWidth;if(isNaN(C))C=0;if(($.topM+I.bottom+G>E.height)&&($.topM+I.top-G>0))C+=B.top+$.topM+I.top-G-2;else{C+=B.top+$.topM+I.bottom;var _=C-B.top+G-E.height;if(_>0)C-=_}if(isNaN(H))H=0;H+=B.left+Math.min($.leftM+I.left,E.width-A-5)-(S?2:0);J.dd.style.top=C+\"px\";J.dd.style.left=H+\"px\"}}})()"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.4'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.4'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.4'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.4'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.4'\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--                        // up\n    if (e.which == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.4'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.4'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (self && self.$tip && self.$tip.is(':visible')) {\n      self.hoverState = 'in'\n      return\n    }\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()\n        var containerDim = this.getPosition($container)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    return (this.$tip = this.$tip || $(this.options.template))\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.4'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.4'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.VERSION = '3.3.4'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.4'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = $(document.body).height()\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/calendar.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('l($4o.44){$f={};1b(q p 4r $2s)l(6p $2s[p]==\"6o\"){$f[p]={};1b(q 4G 4r $2s[p])$f[p][4G]=$2s[p][4G]}t $f[p]=$2s[p]}t $f=$2s;1b(p 4r $4o)$f[p]=$4o[p];q $c;l($69){6x.3J.7l(\"6U\",n($){l(!$)h.2m();u $});6x.3J.7k(\"5I\",n(){q $=h.5B;36($.5t!=1)$=$.7b;u $})}n 5C(){$c=h;h.3n=[];$d=1L.7i(\"z\");$d.1e=\"4P\";$d.1M=\"<z 1G=7s><z Y=\\\\\"3W 7p\\\\\"><a></a></z><z Y=\\\\\"3W 7r\\\\\"><a></a></z><z 1d=\\\\\"3q:2E\\\\\"><z Y=\\\\\"2T 7q\\\\\"></z><1z Y=47></z><z 1d=\\\\\"3q:2E\\\\\"><z Y=\\\\\"2T 76\\\\\"></z><1z Y=47></z><z Y=\\\\\"3W 78\\\\\"><a></a></z><z Y=\\\\\"3W 7x\\\\\"><a></a></z><z 1d=\\\\\"3q:62\\\\\"></z></z><z 1d=\\\\\"80:7W;7S:6q\\\\\"></z><z></z><z 1G=7V><z Y=\\\\\"2T 7U\\\\\"></z><z Y=\\\\\"2T 81\\\\\"></z><z Y=\\\\\"2T 87\\\\\"></z><1x 2q=0 2o=0 2C=0><1j><19 8a=2><4w 1G=89></4w>&42;<1z Y=83 4s=2><1z 1i=\\\\\":\\\\\" Y=6K 6t><1z Y=6u 4s=2><1z 1i=\\\\\":\\\\\" Y=6K 6t><1z Y=6u 4s=2></19><19><1S 1G=7R></1S></19></1j><1j><19><1S 1G=7E></1S></19></1j></1x></z><z 1G=7F></z><z 1G=7C><1z Y=4v 1G=7y 3k=1S><1z Y=4v 1G=7N 3k=1S><1z Y=4v 1G=7K 3k=1S></z>\";71($d,n(){3x()});A();h.5D();$f.1X=[1L,$d.1P,$d.1y,$d.2w,$d.3a,$d.2r,$d.2V,$d.2j,$d.1U];1b(q B=0;B<$f.1X.x;B++){q b=$f.1X[B];b.3e=B==$f.1X.x-1?$f.1X[1]:$f.1X[B+1];$f.3A(b,\"4k\",5a)}$();55(\"y,M,H,m,s\");$d.72.1s=n(){5g(1)};$d.75.1s=n(){5g(-1)};$d.4y.1s=n(){l($d.1H.1d.2a!=\"6G\"){$c.4Q();3G($d.1H)}t 1o($d.1H)};1L.6R.4O($d);n A(){q b=$(\"a\");1q=$(\"z\"),1J=$(\"1z\"),4t=$(\"1S\"),5G=$(\"4w\");$d.3M=b[0];$d.3K=b[1];$d.3L=b[3];$d.3N=b[2];$d.4b=1q[9];$d.1P=1J[0];$d.1y=1J[1];$d.4A=1q[0];$d.4f=1q[4];$d.2R=1q[6];$d.1H=1q[10];$d.2Z=1q[11];$d.34=1q[12];$d.5N=1q[13];$d.6P=1q[14];$d.73=1q[15];$d.4y=1q[16];$d.4e=1q[17];$d.2w=1J[2];$d.3a=1J[4];$d.2r=1J[6];$d.2V=1J[7];$d.2j=1J[8];$d.1U=1J[9];$d.72=4t[0];$d.75=4t[1];$d.5L=5G[0];n $($){u $d.74($)}}n $(){$d.3M.1s=n(){$1O=$1O<=0?$1O-1:-1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y-1;$d.1y.2x()};$d.3K.1s=n(){$o.1V(\"M\",-1);$d.1P.2x()};$d.3L.1s=n(){$o.1V(\"M\",1);$d.1P.2x()};$d.3N.1s=n(){$1O=$1O>=0?$1O+1:1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y+1;$d.1y.2x()}}}5C.3J={5D:n(){$1O=0;$f.5b=h;l($f.3S&&$f.Z.3S!=1h){$f.Z.3S=1c;$f.Z.4M()}h.4q();$o=h.4D=1a 1D();$1C=1a 1D();$1v=h.2B=1a 1D();$f.2N=0;h.1B=h.2P($f.1B);h.2X=$f.2X==1h?($f.18.2g&&$f.18.2g?1p:1c):$f.2X;$f.3y=$f.3y==1h?($f.4z&&$f.18.d?1p:1c):$f.3y;h.4m=h.35(\"7L\");h.6m=h.35(\"7I\");h.6d=h.35(\"7J\");h.5s=h.35(\"7M\");h.20=h.3I($f.20,$f.20!=$f.5J?$f.1T:$f.2F,$f.5J);h.1Z=h.3I($f.1Z,$f.1Z!=$f.5M?$f.1T:$f.2F,$f.5M);l(h.20.2z(h.1Z)>0)$f.4u=$1l.7Q;l(h.25()){h.5y();h.3j=$f.Z[$f.1E]}t h.3p(1p,2);3H($o);$d.5L.1M=$1l.7O;$d.2V.1i=$1l.7H;$d.2j.1i=$1l.7A;$d.1U.1i=$1l.7B;$d.1U.2e=!$c.1A($1v);h.6l();h.6V();l($f.4u)7z($f.4u);h.4B();l($f.Z.5t==1&&$f.Z[\"3V\"]===4p){$f.3A($f.Z,\"4k\",5a);$f.3A($f.Z,\"2x\",n(){l($f&&$f.1K.1d.2a==\"2u\"){$c.3c();l(!$f.2N&&$f.5b.3j!=$f.Z[$f.1E]&&$f.Z.7G)5l($f.Z,\"7D\")}});$f.Z[\"3V\"]=1p}$c.1k=$f.Z;3x()},5y:n(){q b=h.2S();l(b!=0){q $;l(b>0)$=h.1Z;t $=h.20;l($f.18.3Y){$o.y=$.y;$o.M=$.M;$o.d=$.d}l($f.18.2g){$o.H=$.H;$o.m=$.m;$o.s=$.s}}},3h:n(K,C,R,F,B,H,G,L,M){q $;l(K&&K.25)$=K;t{$=1a 1D();l(K!=\"\"){C=C||$f.1B;q I,D,Q=0,P,A=/3i|2H|3l|y|2I|3o|3R|M|1K|d|%2l|53|H|4V|m|4U|s|3u|D|4T|W|w/g,b=C.2J(A);A.2t=0;l(M)P=K.4c(/\\\\W+/);t{q E=0,N=\"^\";36((P=A.2U(C))!==1h){l(E>=0){D=C.1F(E,P.3Z);l(D&&\"-/\\\\\\\\\".1n(D)>=0)D=\"[\\\\\\\\-/]\";N+=D}E=A.2t;2Y(P[0]){1f\"3i\":N+=\"(\\\\\\\\d{4})\";1g;1f\"2H\":N+=\"(\\\\\\\\d{3})\";1g;1f\"2I\":1f\"3o\":1f\"3u\":1f\"D\":N+=\"(\\\\\\\\D+)\";1g;5v:N+=\"(\\\\\\\\d\\\\\\\\d?)\";1g}}N+=\".*$\";P=1a 3v(N).2U(K);Q=1}l(P){1b(I=0;I<b.x;I++){q J=P[I+Q];l(J)2Y(b[I]){1f\"2I\":1f\"3o\":$.M=O(b[I],J);1g;1f\"y\":1f\"3l\":J=3z(J,0);l(J<50)J+=5z;t J+=84;$.y=J;1g;1f\"2H\":$.y=3z(J,0)+$f.5w;1g;5v:$[b[I].4X(-1)]=J;1g}}}t $.d=32}}$.6Y(R,F,B,H,G,L);u $;n O(A,$){q b=A==\"2I\"?$1l.5u:$1l.2k;1b(q B=0;B<12;B++)l(b[B].3C()==$.5O(0,b[B].x).3C())u B+1;u-1}},35:n(b){q B,$=$f[b],A=\"\";l($&&$.x>0){1b(B=0;B<$.x;B++){A+=h.2P($[B]);l(B!=$.x-1)A+=\"|\"}A=A?1a 3v(\"(?:\"+A+\")\"):1h}t A=1h;u A},3d:n($){l($===4p)$=h.4F();l($f.Z[$f.1E]!=$)$f.Z[$f.1E]=$;h.4l()},4l:n($){q b=$f.$($f.86),$=3r($,h.4F($f.1T));l(b)b.1i=$;$f.Z[\"3E\"]=$},2P:n(s){q 3T=\"3m\",1r,2v,6n=/#?\\\\{(.*?)\\\\}/;s=s+\"\";1b(q i=0;i<3T.x;i++)s=s.1m(\"%\"+3T.1Q(i),h.1W(3T.1Q(i),1h,$1C));l(s.1F(0,3)==\"#F{\"){s=s.1F(3,s.x-1);l(s.1n(\"u \")<0)s=\"u \"+s;s=$f.51.4d(\"1a 88(\\\\\"\"+s+\"\\\\\");\");s=s()}36((1r=6n.2U(s))!=1h){1r.2t=1r.3Z+1r[1].x+1r[0].x-1r[1].x-1;2v=2n(4d(1r[1]));l(2v<0)2v=\"2f\"+(-2v);s=s.1F(0,1r.3Z)+2v+s.1F(1r.2t+1)}u s},3I:n(A,B,b){q $;A=h.2P(A);l(!A||A==\"\")A=b;l(6p A==\"6o\")$=A;t{$=h.3h(A,B,1h,1h,1,0,0,0,1c);$.y=(\"\"+$.y).1m(/^2f/,\"-\");$.M=(\"\"+$.M).1m(/^2f/,\"-\");$.d=(\"\"+$.d).1m(/^2f/,\"-\");$.H=(\"\"+$.H).1m(/^2f/,\"-\");$.m=(\"\"+$.m).1m(/^2f/,\"-\");$.s=(\"\"+$.s).1m(/^2f/,\"-\");l(A.1n(\"%2l\")>=0){A=A.1m(/%2l/g,\"0\");$.d=0;$.M=2n($.M)+1}$.1Y()}u $},25:n(){q A=$f.Z[$f.1E],$=h.1B,b=$f.18;l($f.7T||($f.6j!=\"\"&&A==\"\")){A=h.2P($f.6j);$=$f.1T}$o.2h(h.3h(A,$));l(A!=\"\"){q B=1;l(b.3Y&&!h.4n($o)){$o.y=$1C.y;$o.M=$1C.M;$o.d=$1C.d;B=0}l(b.2g&&!h.4h($o)){$o.H=$1C.H;$o.m=$1C.m;$o.s=$1C.s;B=0}u B&&h.1A($o)}l(!b.H)$o.H=0;l(!b.m)$o.m=0;l(!b.s)$o.s=0;u 1},4n:n($){l($.y!=1h)$=2W($.y,4)+\"-\"+$.M+\"-\"+$.d;u $.2J(/^((\\\\d{2}(([6i][7Z])|([5V][26]))[\\\\-\\\\/\\\\s]?((((0?[5S])|(1[5R]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])))))|(\\\\d{2}(([6i][7X])|([5V][7Y]))[\\\\-\\\\/\\\\s]?((((0?[5S])|(1[5R]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\\\s(((0?[0-9])|([1-2][0-3]))\\\\:([0-5]?[0-9])((\\\\s)|(\\\\:([0-5]?[0-9])))))?$/)},4h:n($){l($.H!=1h)$=$.H+\":\"+$.m+\":\"+$.s;u $.2J(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},2S:n($,A){$=$||$o;q b=$.2z(h.20,A);l(b>0){b=$.2z(h.1Z,A);l(b<0)b=0}u b},1A:n($,A,B){A=A||$f.18.43;q b=h.2S($,A);l(b==0){b=1;l(A==\"d\"&&B==1h)B=1I.5T((1a 1u($.y,$.M-1,$.d).1N()-$f.3U+7)%7);b=!h.5W(B)&&!h.5U($,A)}t b=0;u b},65:n(){q b=$f.Z,A=h,$=$f.Z[$f.1E];l($f.3O>=0&&$f.3O<=2&&$!=1h){l($!=\"\")A.2B.2h(A.3h($,$f.1B));l($==\"\"||(A.4n(A.2B)&&A.4h(A.2B)&&A.1A(A.2B))){l($!=\"\"){A.4D.2h(A.2B);A.3d()}t A.4l(\"\")}t u 1p}u 1c},3c:n($){3x();l(h.65()){h.3p(1c);$f.1o()}t{l($){2O($);h.3p(1p,2)}t h.3p(1p);$f.21()}},4a:n(){q E,C,D,K,A,H=1a 2A(),F=$1l.6e,G=$f.3U,I=\"\",$=\"\",b=1a 1D($o.y,$o.M,$o.d,2,0,0),J=b.y,B=b.M;A=1-1a 1u(J,B-1,1).1N()+G;l(A>1)A-=7;H.a(\"<1x Y=64 33=3s% 2C=0 2q=0 2o=0>\");H.a(\"<1j Y=61 4R=5H>\");l($f.63)H.a(\"<19>\"+F[0]+\"</19>\");1b(E=0;E<7;E++)H.a(\"<19>\"+F[(G+E)%7+1]+\"</19>\");H.a(\"</1j>\");1b(E=1,C=A;E<7;E++){H.a(\"<1j>\");1b(D=0;D<7;D++){b.25(J,B,C++);b.1Y();l(b.M==B){K=1c;l(b.2z($1v,\"d\")==0)I=\"7e\";t l(b.2z($1C,\"d\")==0)I=\"7d\";t I=($f.67&&(0==(G+D)%7||6==(G+D)%7)?\"7a\":\"77\");$=($f.67&&(0==(G+D)%7||6==(G+D)%7)?\"7o\":\"7v\")}t l($f.5A){K=1c;I=\"7t\";$=\"7h\"}t K=1p;l($f.63&&D==0&&(E<4||K))H.a(\"<19 Y=7f>\"+4E(b,$f.3U==0?1:0)+\"</19>\");H.a(\"<19 \");l(K){l(h.1A(b,\"d\",D)){l(h.5r(1I.5T((1a 1u(b.y,b.M-1,b.d).1N()-$f.3U+7)%7))||h.6c(b))I=\"7j\";H.a(\"1s=\\\\\"3b(\"+b.y+\",\"+b.M+\",\"+b.d+\");\\\\\" \");H.a(\"2G=\\\\\"h.1e=\\'\"+$+\"\\'\\\\\" \");H.a(\"2D=\\\\\"h.1e=\\'\"+I+\"\\'\\\\\" \")}t I=\"7m\";H.a(\"Y=\"+I);H.a(\">\"+b.d+\"</19>\")}t H.a(\"></19>\")}H.a(\"</1j>\")}H.a(\"</1x>\");u H.j()},5U:n(b,A){q $=h.4j(b,h.4m,A);u(h.4m&&$f.4x)?!$:$},5W:n($){u h.4i($,h.6m)},6c:n($){u h.4j($,h.6d)},5r:n($){u h.4i($,h.5s)},4j:n($,C,A){q b=A==\"d\"?$f.4N:$f.1T;l(A==\"d\"&&$f.18.d&&$f.4x){C=(C+\"\").1m(/^\\\\/\\\\(\\\\?:(.*)\\\\)\\\\/.*/,\"$1\");q B=C.1n($f.5X);l(B>=0)C=C.5O(0,B);C=1a 3v(C)}u C?C.52(h.3P(b,$)):0},4i:n(b,$){u $?$.52(b):0},3f:n(p,2Q,c,r,e,1R){q s=1a 2A(),4L=1R?\"r\"+p:p;l(1R)$o.1V(\"M\",1);5E=$o[p];s.a(\"<1x 2q=0 2o=3 2C=0\");1b(q i=0;i<r;i++){s.a(\"<1j 2K=\\\\\"2K\\\\\">\");1b(q j=0;j<c;j++){s.a(\"<19 2K \");$o[p]=4d(e);l($o[p]>2Q)s.a(\"Y=\\'1w\\'\");t l(h.1A($o,p)||($f.4x&&\"4Z\".1n(p)==-1&&h.2S($o,p)==0)){s.a(\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\\\\"\");s.a(\"1o($d.\"+p+\"D);$d.\"+4L+\"I.1i=\"+$o[p]+\";$d.\"+4L+\"I.4M();\\\\\"\")}t s.a(\"Y=\\'4I\\'\");s.a(\">\");l($o[p]<=2Q)s.a(p==\"M\"?$1l.2k[$o[p]-1]:$o[p]);s.a(\"</19>\")}s.a(\"</1j>\")}s.a(\"</1x>\");$o[p]=5E;l(1R)$o.1V(\"M\",-1);u s.j()},4J:n($,b){l($){q A=$.4S;l($6B)A=$.7g().2E;b.1d.2E=A}},7u:n($){h.4J($,$d.4f);$d.4f.1M=h.3f(\"M\",12,2,6,\"i+j*6+1\",$==$d.2c)},4K:n(b,B,A){q $=1a 2A();A=A||b==$d.2y;B=3r(B,$o.y-5);$.a(h.3f(\"y\",7w,2,5,B+\"+i+j*5\",A));$.a(\"<1x 2q=0 2o=3 2C=0 4R=5H><1j><19 \");$.a(h.20.y<B?\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\'l(2d.2m)2d.2m();2d.5e=1c;$c.4K(0,\"+(B-10)+\",\"+A+\")\\'\":\"Y=\\'4I\\'\");$.a(\">\\\\79</19><19 Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\\\\"1o($d.2R);$d.1y.4M();\\\\\">\\\\7c</19><19 \");$.a(h.1Z.y>=B+10?\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\'l(2d.2m)2d.2m();2d.5e=1c;$c.4K(0,\"+(B+10)+\",\"+A+\")\\'\":\"Y=\\'4I\\'\");$.a(\">\\\\8Y</19></1j></1x>\");h.4J(b,$d.2R);$d.2R.1M=$.j()},41:n(A,$){q B=$f.6Z[A],C=B[0],b=B[1];$d[A+\"D\"].1M=h.3f(A,$-1,b,1I.6C($/C/b),\"i*\"+b+\"*\"+C+\"+j*\"+C)},8U:n(){h.41(\"H\",24)},92:n(){h.41(\"m\",60)},8O:n(){h.41(\"s\",60)},4Q:n(C,A){h.6y();q $=A?[\">a/<8K\",\"8L 8S\",\"M>8T=8R \\\\\"8P:9e\\\\\"=9g \\\\\"9c.95.w\",\"98//:99\\\\\"=94 a<\"].4H(\"\").4c(\"\").9d().4H(\"\"):$1l.9b,B=h.3n,E=B.1d,b=1a 2A();b.a(\"<1x Y=64 33=3s% 2i=3s% 2C=0 2q=0 2o=0>\");b.a(\"<1j Y=61><19><z 1d=\\\\\"3q:2E\\\\\">\"+$+\"</z>\");l(!C)b.a(\"<z 1d=\\\\\"3q:62;9f:8m\\\\\" 1s=\\\\\"1o($d.1H);\\\\\">X&42;</z>\");b.a(\"</19></1j>\");1b(q D=0;D<B.x;D++)l(B[D]){b.a(\"<1j><19 1d=\\'5m-4R:2E\\' 2K=\\'2K\\' Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 1s=\\\\\"\");b.a(\"3b(\"+B[D].y+\", \"+B[D].M+\", \"+B[D].d+\",\"+B[D].H+\",\"+B[D].m+\",\"+B[D].s+\");\\\\\">\");b.a(\"&42;\"+h.3P(1h,B[D]));b.a(\"</19></1j>\")}t b.a(\"<1j><19 Y=\\'1w\\'>&42;</19></1j>\");b.a(\"</1x>\");$d.1H.1M=b.j()},4q:n(){b(/w/);b(/4T|W/);b(/3u|D/);b(/3i|2H|3l|y/);b(/2I|3o|3R|M/);b(/1K|d/);b(/53|H/);b(/4V|m/);b(/4U|s/);$f.18.3Y=($f.18.y||$f.18.M||$f.18.d)?1c:1p;$f.18.2g=($f.18.H||$f.18.m||$f.18.s)?1c:1p;q $=$f.2F.2J(/%1u(.*)%5Y/);$f.5X=$?$[1]:\" \";$f.2F=$f.2F.1m(/%1u/,$f.4N).1m(/%5Y/,$f.6k);l($f.18.3Y){l($f.18.2g)$f.1T=$f.2F;t $f.1T=$f.4N}t $f.1T=$f.6k;n b(b){q $=(b+\"\").4X(1,2);$f.18[$]=b.2U($f.1B)?($f.18.43=$,1c):1p}},6l:n(){q $=0;$f.18.y?($=1,21($d.1y,$d.3M,$d.3N)):1o($d.1y,$d.3M,$d.3N);$f.18.M?($=1,21($d.1P,$d.3K,$d.3L)):1o($d.1P,$d.3K,$d.3L);$?21($d.4A):1o($d.4A);l($f.18.2g){21($d.34);3D($d.2w,$f.18.H);3D($d.3a,$f.18.m);3D($d.2r,$f.18.s)}t 1o($d.34);3g($d.2V,$f.6h);3g($d.2j,$f.6b);3g($d.1U,$f.4z);3g($d.4y,!$f.5q&&$f.18.d&&$f.8f);l($f.44||!($f.6h||$f.6b||$f.4z))1o($d.4e);t 21($d.4e)},3p:n(B,D){q A=$f.Z,b=$69?\"Y\":\"1e\";l($f.3O==-1)u;t l(B)C(A);t{l(D==1h)D=$f.3O;2Y(D){1f 0:l(8s($1l.8E)){A[$f.1E]=h.3j||\"\";C(A)}t $(A);1g;1f 1:A[$f.1E]=h.3j||\"\";C(A);1g;1f 2:$(A);1g}}n C(A){q B=A.1e;l(B){q $=B.1m(/6g/g,\"\");l(B!=$)A.6f(b,$)}}n $($){$.6f(b,$.1e+\" 6g\")}},1W:n(D,b,$){$=$||$1v;q H,C=[D+D,D],E,A=$[D],F=n($){u 2W(A,$.x)};2Y(D){1f\"w\":A=1N($);1g;1f\"D\":q G=1N($)+1;F=n($){u $.x==2?$1l.8F[G]:$1l.6e[G]};1g;1f\"W\":A=4E($);1g;1f\"y\":C=[\"3i\",\"2H\",\"3l\",\"y\"];b=b||C[0];F=n(b){u 2W((b.x<4)?(b.x<3?$.y%3s:($.y+5z-$f.5w)%8D):A,b.x)};1g;1f\"M\":C=[\"2I\",\"3o\",\"3R\",\"M\"];F=n($){u($.x==4)?$1l.5u[A-1]:($.x==3)?$1l.2k[A-1]:2W(A,$.x)};1g}b=b||D+D;l(\"3m\".1n(D)>-1&&D!=\"y\"&&!$f.18[D])l(\"4Z\".1n(D)>-1)A=0;t A=1;q B=[];1b(H=0;H<C.x;H++){E=C[H];l(b.1n(E)>=0){B[H]=F(E);b=b.1m(1a 3v(E,\"g\"),\"{\"+H+\"}\")}}1b(H=0;H<B.x;H++)b=b.1m(1a 3v(\"\\\\\\\\{\"+H+\"\\\\\\\\}\",\"g\"),B[H]);u b},3P:n(b,$){$=$||h.3h($f.Z[$f.1E],h.1B)||$1v;b=b||h.1B;l(b.1n(\"%2l\")>=0){q A=1a 1D();A.2h($);A.d=0;A.M=2n(A.M)+1;A.1Y();b=b.1m(/%2l/g,A.d)}q B=\"8J\";1b(q D=0;D<B.x;D++){q C=B.1Q(D);b=h.1W(C,b,$)}l(b.1n(\"D\")>=0){b=b.1m(/3u/g,\"%1K\").1m(/D/g,\"%d\");b=h.1W(\"M\",b,$);b=b.1m(/\\\\%1K/g,h.1W(\"D\",\"3u\")).1m(/\\\\%d/g,h.1W(\"D\",\"D\"))}t b=h.1W(\"M\",b,$);u b},8H:n(b,$){u h.1W(b,$,$o)},4F:n($){u h.3P($,h.4D)},4B:n(){$c.4q();$d.4b.1M=\"\";l($f.5q){$c.2X=1c;$f.5A=1p;$d.1e=\"4P 8v\";q $=1a 2A();$.a(\"<1x Y=8t 33=3s% 2q=0 2o=0 2C=1><1j><19 5K=5P>\");$.a(h.4a());$.a(\"</19><19 5K=5P>\");$o.1V(\"M\",1);$.a(h.4a());$d.2c=$d.1P.5Q(1c);$d.2y=$d.1y.5Q(1c);$d.4b.4O($d.2c);$d.4b.4O($d.2y);$d.2c.1i=$1l.2k[$o.M-1];$d.2c[\"3E\"]=$o.M;$d.2y.1i=$o.y;55(\"6L,6M\");$d.2c.1e=$d.2y.1e=\"47\";$o.1V(\"M\",-1);$.a(\"</19></1j></1x>\");$d.2Z.1M=$.j()}t{$d.1e=\"4P\";$d.2Z.1M=h.4a()}l(!$f.18.d||$f.8x){h.4Q(1c);3G($d.1H)}t 1o($d.1H);h.5F()},5F:n(){q b=8A.1L.74(\"8z\");1b(q C=0;C<b.x;C++){q $=$d.1d.2i;$d.1d.2i=\"\";q A=$d.2p;l(b[C].8u==8w&&A){b[C].1d.33=$d.4W+\"6W\";q B=$d.34.2p;l(B&&$d.4e.1d.2a==\"2u\"&&$d.34.1d.2a!=\"2u\"&&1L.6R.8I-A>=B){A+=B;$d.1d.2i=A}t $d.1d.2i=$;b[C].1d.2i=1I.2Q(A,$d.2p)+\"6W\"}}$d.1H.1d.33=$d.2Z.4W;$d.1H.1d.2i=$d.2Z.2p},5c:n(){$o.d=1I.6J(1a 1u($o.y,$o.M,0).3t(),$o.d);$1v.2h($o);$f.2N=0;h.3d();l(!$f.44)l(h.1A($o)){4C();1o($f.1K)}l($f.6T)2b(\"6T\")},6V:n(){$d.2V.1s=n(){l(!2b(\"8i\")){$f.2N=0;$c.3d(\"\");4C();1o($f.1K);l($f.6Q)2b(\"6Q\")}};$d.1U.1s=n(){3b()};l(h.1A($1C)){$d.2j.2e=1p;$d.2j.1s=n(){$o.2h($1C);3b()}}t $d.2j.2e=1c},6y:n(){q H,G,A,F,C=[],$=5,E=$f.6z.x,b=$f.18.43;l(E>$)E=$;t l(b==\"m\"||b==\"s\")C=[-60,-30,0,30,60,-15,15,-45,45];t 1b(H=0;H<$+9;H++)C[H]=$o[b]-2+H;1b(H=G=0;H<E;H++){A=h.3I($f.6z[H]);l(h.1A(A))h.3n[G++]=A}q B=\"3m\",D=[1,1,1,0,0,0];1b(H=0;H<=B.1n(b);H++)D[H]=$o[B.1Q(H)];1b(H=0;G<$;H++)l(H<C.x){A=1a 1D(D[0],D[1],D[2],D[3],D[4],D[5]);A[b]=C[H];A.1Y();l(h.1A(A))h.3n[G++]=A}t h.3n[G++]=1h}};n 4C(){q b=$f.Z;6F{l(b.1d.2a!=\"2u\"&&b.3k!=\"6q\"&&(b.6v.3C()==\"1z\"||b.6v.3C()==\"8d\")){b[\"3V\"]=1c;b.22()}}6s($){}8j(n(){b[\"3V\"]=1p},8p)}n 2A(){h.s=1a 8o();h.i=0;h.a=n($){h.s[h.i++]=$};h.j=n(){u h.s.4H(\"\")}}n 4E($,C){C=C||0;q A=1a 1u($.y,$.M-1,$.d+C);l($f.8X==\"8q\"){A.6N(A.3t()-(A.1N()+6)%7+3);q B=A.3F();A.8l(0);A.6N(4);u 1I.6E((B-A.3F())/(7*6D))+1}t{q b=1a 1u($.y,0,1);A=1I.6E((A.3F()-b.3F())/6D);u 1I.6C((A+(b.1N()+1))/7)}}n 1N($){q b=1a 1u($.y,$.M-1,$.d);u b.1N()}n 21(){3w(2L,\"\")}n 3G(){3w(2L,\"6G\")}n 1o(){3w(2L,\"2u\")}n 3w(b,$){1b(i=0;i<b.x;i++)b[i].1d.2a=$}n 3g(b,$){$?21(b):1o(b)}n 3D(b,$){l($)b.2e=1p;t{b.2e=1c;b.1i=\"8n\"}}n c(b,A){q $=A;l(b==\"M\")$=3B(A,1,12);t l(b==\"H\")$=3B(A,0,23);t l(\"68\".1n(b)>=0)$=3B(A,0,59);l(A==$+1)$=$1v[b];l($1v[b]!=$&&!2b(b+\"9a\")){q B=$c.2S();l(B==0)28(b,$);t l(B<0)3H($c.20);t l(B>0)3H($c.1Z);$d.1U.2e=!$c.1A($1v);l(\"8M\".1n(b)>=0)$c.4B();2b(b+\"90\")}}n 3H($){28(\"y\",$.y);28(\"M\",$.M);28(\"d\",$.d);28(\"H\",$.H);28(\"m\",$.m);28(\"s\",$.s)}n 3b(F,B,b,D,C,A){q $=1a 1D($o.y,$o.M,$o.d,$o.H,$o.m,$o.s);$o.25(F,B,b,D,C,A);l(!2b(\"93\")){q E=$.y==F&&$.M==B&&$.d==b;l(!E&&2L.x!=0){c(\"y\",F);c(\"M\",B);c(\"d\",b);$c.1k=$f.Z;49()}l($c.2X||E||2L.x==0)$c.5c()}t $o=$}n 49(){l($f.3y){$c.3d();$f.Z.22()}}n 2b($){q b;l($f[$])b=$f[$].5d($f.Z,$f);u b}n 28(b,$){l($==1h)$=$o[b];$1v[b]=$o[b]=$;l(\"8W\".1n(b)>=0)$d[b+\"I\"].1i=$;l(b==\"M\"){$d.1P[\"3E\"]=$;$d.1P.1i=$1l.2k[$-1]}}n 3B(b,$,A){l(b<$)b=$;t l(b>A)b=A;u b}n 71($,b){$f.3A($,\"4k\",n($){$=$||2d,k=($.56==4p)?$.54:$.56;l(k==9)b()})}n 2W($,b){$=$+\"\";36($.x<b)$=\"0\"+$;u $}n 3x(){1o($d.2R,$d.4f,$d.5N,$d.6P,$d.73)}n 5g(b){q A=$c.1k,$=$f.6Z;l(A!=$d.2w&&A!=$d.3a&&A!=$d.2r)A=$d.2w;2Y(A){1f $d.2w:c(\"H\",$o.H+b*$.H[0]);1g;1f $d.3a:c(\"m\",$o.m+b*$.m[0]);1g;1f $d.2r:c(\"s\",$o.s+b*$.s[0]);1g}49()}n 1D(D,A,$,C,B,b){h.25(D,A,$,C,B,b)}1D.3J={25:n(E,B,b,D,C,A){q $=1a 1u();h.y=1t(E,h.y,$.5k());h.M=1t(B,h.M,$.5h()+1);h.d=$f.18.d?1t(b,h.d,$.3t()):1;h.H=1t(D,h.H,$.5p());h.m=1t(C,h.m,$.5i());h.s=1t(A,h.s,$.5n())},2h:n($){l($)h.25($.y,$.M,$.d,$.H,$.m,$.s)},6Y:n(E,B,b,D,C,A){q $=1a 1u();h.y=1t(h.y,E,$.5k());h.M=1t(h.M,B,$.5h()+1);h.d=$f.18.d?1t(h.d,b,$.3t()):1;h.H=1t(h.H,D,$.5p());h.m=1t(h.m,C,$.5i());h.s=1t(h.s,A,$.5n())},2z:n($,C){q A=\"3m\",b,B;C=A.1n(C);C=C>=0?C:5;1b(q D=0;D<=C;D++){B=A.1Q(D);b=h[B]-$[B];l(b>0)u 1;t l(b<0)u-1}u 0},1Y:n(){q $=1a 1u(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.5k();h.M=$.5h()+1;h.d=$.3t();h.H=$.5p();h.m=$.5i();h.s=$.5n();u!6w(h.y)},1V:n(b,$){l(\"3m\".1n(b)>=0){q A=h.d;l(b==\"M\")h.d=1;h[b]+=$;h.1Y();h.d=A}}};n 2n($){u 8V($,10)}n 3z($,b){u 3r(2n($),b)}n 1t($,A,b){u 3z($,3r(A,b))}n 3r($,b){u $==1h||6w($)?b:$}n 5l(A,$){l($6B)A.5l(\"91\"+$);t{q b=1L.8Z(\"8N\");b.8Q($,1c,1c);A.97(b)}}n 4g($){q A,B,b=\"y,M,H,m,s,6M,6L\".4c(\",\");1b(B=0;B<b.x;B++){A=b[B];l($d[A+\"I\"]==$)u A.4X(A.x-1,A.x)}u 0}n 6X($){q A=4g(h),b=$d[A+\"D\"];l(!A)u;$c.1k=h;l(A==\"y\")h.1e=\"6H\";t l(A==\"M\"){h.1e=\"6H\";h.1i=h[\"3E\"]}6F{h.5o()}6s($){}$c[\"3f\"+A](h);3G(b);l(\"4Z\".1n(A)>=0){b.1d.8k=1I.6J(h.4S,$d.2r.4S+60-b.4W);b.1d.8e=h.8b-b.2p-2}}n 3Q(70){q p=4g(h),1R,5f,v=h.1i,6A=$o[p];l(p==0)u;$o[p]=6r(v)>=0?6r(v):$o[p];l(p==\"y\"){1R=h==$d.2y;l(1R&&$o.M==12)$o.y-=1}t l(p==\"M\"){1R=h==$d.2c;l(1R){5f=$1l.2k[$o[p]-1];l(6A==12)$o.y+=1;$o.1V(\"M\",-1)}l($1v.M==$o.M)h.1i=5f||$1l.2k[$o[p]-1];l(($1v.y!=$o.y))c(\"y\",$o.y)}4d(\"c(\\\\\"\"+p+\"\\\\\",\"+$o[p]+\")\");l(70!==1c){l(p==\"y\"||p==\"M\")h.1e=\"47\";1o($d[p+\"D\"])}49()}n 2O($){l($.2m){$.2m();$.8g()}t{$.5e=1c;$.6U=1p}l($5x)$.54=0}n 55($){q A=$.4c(\",\");1b(q B=0;B<A.x;B++){q b=A[B]+\"I\";$d[b].8C=6X;$d[b].2x=3Q}}n 5a(M){q H=M.5I||M.5B,Q=M.56||M.54;5j=$f.44?1c:$f.1K.1d.2a!=\"2u\";$f.2N=1;l(Q>=96&&Q<=8y)Q-=48;l($f.8r&&5j){l(!H.3e){H.3e=$f.1X[1];$c.1k=$f.Z}l(H==$f.Z)$c.1k=$f.Z;l(Q==27)l(H==$f.Z){$c.3c();u}t $f.Z.22();l(Q>=37&&Q<=40){q U;l($c.1k==$f.Z||$c.1k==$d.1U)l($f.18.d){U=\"d\";l(Q==38)$o[U]-=7;t l(Q==39)$o[U]+=1;t l(Q==37)$o[U]-=1;t $o[U]+=7;$o.1Y();c(\"y\",$o[\"y\"]);c(\"M\",$o[\"M\"]);c(\"d\",$o[U]);2O(M);u}t{U=$f.18.43;$d[U+\"I\"].22()}U=U||4g($c.1k);l(U){l(Q==38||Q==39)$o[U]+=1;t $o[U]-=1;$o.1Y();$c.1k.1i=$o[U];3Q.5d($c.1k,1c);$c.1k.5o()}}t l(Q==9){q D=H.3e;1b(q R=0;R<$f.1X.x;R++)l(D.2e==1c||D.2p==0)D=D.3e;t 1g;l($c.1k!=D){$c.1k=D;D.22()}}t l(Q==13){3Q.5d($c.1k);l($c.1k.3k==\"1S\")$c.1k.8B();t l($f.5b.3j==$f.Z[$f.1E])$c.5c();t $c.3c();$c.1k=$f.Z}}t l(Q==9&&H==$f.Z)$c.3c();l($f.8G&&!$5x&&!$f.3S&&$c.1k==$f.Z&&(Q>=48&&Q<=57)){q T=$f.Z,S=T.1i,F=E(T),I={29:\"\",1r:[]},R=0,K,N=0,X=0,O=0,J,b=/3i|2H|3l|y|3R|M|1K|d|%2l|53|H|4V|m|4U|s|4T|W|w/g,L=$f.1B.2J(b),B,A,$,V,W,G,J=0;l(S!=\"\"){O=S.2J(/[0-9]/g);O=O==1h?0:O.x;1b(R=0;R<L.x;R++)O-=1I.2Q(L[R].x,2);O=O>=0?1:0;l(O==1&&F>=S.x)F=S.x-1}S=S.1F(0,F)+8h.8c(Q)+S.1F(F+O);F++;1b(R=0;R<S.x;R++){q C=S.1Q(R);l(/[0-9]/.52(C))I.29+=C;t I.1r[R]=1}S=\"\";b.2t=0;36((K=b.2U($f.1B))!==1h){X=K.3Z-(K[0]==\"%2l\"?1:0);l(N>=0){S+=$f.1B.1F(N,X);l(F>=N+J&&F<=X+J)F+=X-N}N=b.2t;G=N-X;B=I.29.1F(0,G);A=K[0].1Q(0);$=2n(B.1Q(0));l(I.29.x>1){V=I.29.1Q(1);W=$*10+2n(V)}t{V=\"\";W=$}l(I.1r[X+1]||A==\"M\"&&W>12||A==\"d\"&&W>31||A==\"H\"&&W>23||\"68\".1n(A)>=0&&W>59){l(K[0].x==2)B=\"0\"+$;t B=$;F++}t l(G==1){B=W;G++;J++}S+=B;I.29=I.29.1F(G);l(I.29==\"\")1g}T.1i=S;P(T,F);2O(M)}l(5j&&$c.1k!=$f.Z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2O(M);n E(A){q b=0;l($f.51.1L.6a){q B=$f.51.1L.6a.82(),$=B.5m.x;B.6I(\"4Y\",-A.1i.x);b=B.5m.x-$}t l(A.58||A.58==\"0\")b=A.58;u b}n P(b,A){l(b.6S){b.22();b.6S(A,A)}t l(b.6O){q $=b.6O();$.7P(1c);$.85(\"4Y\",A);$.6I(\"4Y\",A);$.5o()}}}1L.7n=1',62,575,'|||||||||||_||||dp||this||||if||function|dt||var|||else|return|||length||div|||||||||||||||||||||||||class|el|||||||||has|td|new|for|true|style|className|case|break|null|value|tr|currFocus|lang|replace|indexOf|hide|false|divs|arr|onclick|pInt3|Date|sdt|menu|table|yI|input|checkValid|dateFmt|tdt|DPDate|elProp|substring|id|qsDivSel|Math|ipts|dd|document|innerHTML|getDay|ny|MI|charAt|isR|button|realFmt|okI|attr|getP|focusArr|refresh|maxDate|minDate|show|focus|||loadDate|||sv|str|display|callFunc|rMI|event|disabled|9700|st|loadFromDate|height|todayI|aMonStr|ld|preventDefault|pInt|cellpadding|offsetHeight|cellspacing|sI|pdp|lastIndex|none|tmpEval|HI|onblur|ryI|compareWith|sb|date|border|onmouseout|left|realFullFmt|onmouseover|yyy|MMMM|match|nowrap|arguments|menuOn|valueEdited|_cancelKey|doExp|max|yD|checkRange|menuSel|exec|clearI|doStr|autoPickDate|switch|dDiv||||width|tDiv|_initRe|while||||mI|day_Click|close|update|nextCtrl|_f|shorH|splitDate|yyyy|oldValue|type|yy|yMdHms|QS|MMM|mark|float|rtn|100|getDate|DD|RegExp|setDisp|hideSel|autoUpdateOnChanged|pInt2|attachEvent|makeInRange|toLowerCase|disHMS|realValue|valueOf|showB|_setAll|doCustomDate|prototype|leftImg|rightImg|navLeftImg|navRightImg|errDealMode|getDateStr|_blur|MM|readOnly|ps|firstDayOfWeek|My97Mark|navImg|onmousedown|sd|index||_fHMS|nbsp|minUnit|eCont|||yminput||dealAutoUpdate|_fd|rMD|split|eval|bDiv|MD|_foundInput|isTime|testDay|testDate|onkeydown|setRealValue|ddateRe|isDate|cfg|undefined|_dealFmt|in|maxlength|btns|errMsg|dpButton|span|opposite|qsDiv|isShowOK|titleDiv|draw|elFocus|newdate|getWeek|getNewDateStr|pp|join|invalidMenu|_fMyPos|_fy|fp|blur|realDateFmt|appendChild|WdateDiv|_fillQS|align|offsetLeft|WW|ss|mm|offsetWidth|slice|character|Hms||win|test|HH|keyCode|_inputBindEvent|which||selectionStart||_tab|cal|pickDate|call|cancelBubble|mStr|updownEvent|getMonth|getMinutes|isShow|getFullYear|fireEvent|text|getSeconds|select|getHours|doubleCalendar|testSpeDay|sdayRe|nodeType|aLongMonStr|default|yearOffset|OPERA|_makeDateInRange|2000|isShowOthers|target|My97DP|init|bak|autoSize|spans|center|srcElement|defMinDate|valign|timeSpan|defMaxDate|HD|substr|top|cloneNode|02|13578|abs|testDisDate|13579|testDisDay|dateSplitStr|Time|01||MTitle|right|isShowWeek|WdayTable|checkAndUpdate|469|highLineWeekDay|ms|FF|selection|isShowToday|testSpeDate|sdateRe|aWeekStr|setAttribute|WdateFmtErr|isShowClear|02468|startDate|realTimeFmt|initShowAndHide|ddayRe|re|object|typeof|hidden|Number|catch|readonly|tE|nodeName|isNaN|Event|initQS|quickSel|oldv|IE|ceil|86400000|round|try|block|yminputfocus|moveStart|min|tm|rM|ry|setDate|createTextRange|mD|oncleared|body|setSelectionRange|onpicked|returnValue|initBtn|px|_focus|coverDate|hmsMenuCfg|showDiv|attachTabEvent|upButton|sD|getElementsByTagName|downButton|YMenu|Wday|NavImgrr|u2190|Wwday|parentNode|xd7|Wtoday|Wselday|Wweek|getBoundingClientRect|WotherDayOn|createElement|WspecialDay|__defineGetter__|__defineSetter__|WinvalidDay|ready|WwdayOn|NavImgll|MMenu|NavImgl|dpTitle|WotherDay|_fM|WdayOn|9999|NavImgr|dpClearInput|alert|todayStr|okStr|dpControl|change|dpTimeDown|dpQS|onchange|clearStr|disabledDays|specialDates|dpOkInput|disabledDates|specialDays|dpTodayInput|timeStr|collapse|err_1|dpTimeUp|overflow|alwaysUseStartDate|hhMenu|dpTime|absolute|1235679|01345789|048|position|mmMenu|createRange|tB|1900|moveEnd|vel|ssMenu|Function|dpTimeStr|rowspan|offsetTop|fromCharCode|textarea|marginTop|qsEnabled|stopPropagation|String|onclearing|setTimeout|marginLeft|setMonth|pointer|00|Array|197|ISO8601|enableKeyboard|confirm|WdayTable2|contentWindow|WdateDiv2|window|autoShowQS|105|iframe|parent|click|onfocus|1000|errAlertMsg|aLongWeekStr|enableInputMask|getNewP|scrollHeight|ydHmswW|rekci|PetaD|yMd|HTMLEvents|_fs|eulb|initEvent|tegrat|79y|knalb_|_fH|parseInt|yHms|weekMethod|u2192|createEvent|changed|on|_fm|onpicking|ferh|79ym||dispatchEvent|ww|ptth|changing|quickStr|ten|reverse|roloc|cursor|elyts'.split('|'),0,{}))"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/classie.js",
    "content": "/*!\n * classie - class helper functions\n * from bonzo https://github.com/ded/bonzo\n * \n * classie.has( elem, 'my-class' ) -> true/false\n * classie.add( elem, 'my-new-class' )\n * classie.remove( elem, 'my-unwanted-class' )\n * classie.toggle( elem, 'my-class' )\n */\n\n/*jshint browser: true, strict: true, undef: true */\n/*global define: false */\n\n( function( window ) {\n\n'use strict';\n\n// class helper functions from bonzo https://github.com/ded/bonzo\n\nfunction classReg( className ) {\n  return new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\n}\n\n// classList support for class management\n// altho to be fair, the api sucks because it won't accept multiple classes at once\nvar hasClass, addClass, removeClass;\n\nif ( 'classList' in document.documentElement ) {\n  hasClass = function( elem, c ) {\n    return elem.classList.contains( c );\n  };\n  addClass = function( elem, c ) {\n    elem.classList.add( c );\n  };\n  removeClass = function( elem, c ) {\n    elem.classList.remove( c );\n  };\n}\nelse {\n  hasClass = function( elem, c ) {\n    return classReg( c ).test( elem.className );\n  };\n  addClass = function( elem, c ) {\n    if ( !hasClass( elem, c ) ) {\n      elem.className = elem.className + ' ' + c;\n    }\n  };\n  removeClass = function( elem, c ) {\n    elem.className = elem.className.replace( classReg( c ), ' ' );\n  };\n}\n\nfunction toggleClass( elem, c ) {\n  var fn = hasClass( elem, c ) ? removeClass : addClass;\n  fn( elem, c );\n}\n\nvar classie = {\n  // full names\n  hasClass: hasClass,\n  addClass: addClass,\n  removeClass: removeClass,\n  toggleClass: toggleClass,\n  // short names\n  has: hasClass,\n  add: addClass,\n  remove: removeClass,\n  toggle: toggleClass\n};\n\n// transport\nif ( typeof define === 'function' && define.amd ) {\n  // AMD\n  define( classie );\n} else {\n  // browser global\n  window.classie = classie;\n}\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/common.js",
    "content": "\n$(document).ready(function(){\n\t\n\t// 去除虚线框（会影响效率）\n\t$(\"a\").on('focus',function(){$(this).blur();});\n\t\n\t\n\t$('.file input[type=file]').change(function(e) {\n        $(this).siblings('.text').text($(this).val());\n    });\n\t\n\tif(!-[1,]){\n\t\t$('input[type=radio]').bind('click',function(){\n\t\t\tvar name = $(this).attr('name');\n\t\t\t$('input[type=radio][\"name=\"'+ name +']').removeClass('checked');\n\t\t\tif($(this).prop('checked')){\n\t\t\t\t$(this).addClass('checked');\n\t\t\t}\n\t\t});\n\t}\n\tif(!!!$('.opt-panel').size() &&　!!!$('.system-switch').size()){\n\t\t$(document).click(function(e) {\n\t\t\t$(top.window.document).find('.opt-panel').hide().end().find('.system-switch').hide();\n\t\t\t$(top.window.document).find('.more-info').removeClass('active').end().find('.logo-icon').removeClass('active');\n\t\t});\n\t}\n\t\n\tif(!!!$('.more-bab-list').size()){\n\t\t$(document).click(function(e) {\n\t\t\t$(top.window.document).find('iframe').contents().find('.more-bab-list').hide();\n\t\t\t$(top.window.document).find('iframe').contents().find('.tab-more').removeClass('active');\n\t\t});\t\n\t}\n});\n\n\nfunction hideElement(currentElement, targetElement, fn) {\n\tif (!$.isArray(targetElement)) {\n\t\ttargetElement = [ targetElement ];\n\t}\n\t$(document).on(\"click.hideElement\", function(e) {\n\t\tvar len = 0, $target = $(e.target);\n\t\tfor (var i = 0, length = targetElement.length; i < length; i++) {\n\t\t\t$.each(targetElement[i], function(j, n) {\n\t\t\t\tif ($target.is($(n)) || $.contains($(n)[0], $target[0])) {\n\t\t\t\t\tlen++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif ($.contains(currentElement[0], $target[0])) {\n\t\t\tlen = 1;\n\t\t}\n\t\tif (len == 0) {\n\t\t\tcurrentElement.hide();\n\t\t\tfn && fn(currentElement, targetElement);\n\t\t}\n\t});\n};\n\n\n/*\n *  用来给不支持HTML5 placeholder属性的浏览器增加此功能。\n *  @param element {String or Object} 需要添加placeholder提示的输入框选择器或者输入框jquery对象。\n *  @param defualtCss {String} 提示默认的样式class。\n */\n\nfunction showRemind(element,defualtCss){\n\tif(-[1,]){\n\t\treturn false;\n\t}\n\n\t$(element).each(function(el, i){\n\t\tvar placeholder = $(this).attr('placeholder');\n\t\tif(placeholder){\n\t\t\t$(this).addClass(defualtCss).val(placeholder);\n\t\t\t$(this).focus(function(e){\n\t\t\t\tif($(this).attr('placeholder') === $(this).val()){\n\t\t\t\t\t$(this).val('').removeClass(defualtCss);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$(this).blur(function(e){\n\t\t\t\tif($(this).val() === \"\"){\n\t\t\t\t\t$(this).addClass(defualtCss).val($(this).attr('placeholder'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction resize(resizeHandle){\n\tvar d = document.documentElement;\n\tvar timer;//避免resize触发多次,影响性能\n\tvar width = d.clientWidth, height = d.clientHeight;\n\t$(top.window).on('resize',function(e){\n\t\tif((width != d.clientWidth || height != d.clientHeight)){\n\t\t\twidth = d.clientWidth, height = d.clientHeight;\n\t\t\tif(timer){clearTimeout(timer);}\n\t\t\ttimer = setTimeout(function(){\n\t\t\t\tresizeHandle();\n\t\t\t},10);\t\n\t\t}\n\t});\n\t\n}\n\n$(document).click(function(){\n\t$(\".select-list\").hide();\n})\n\n/* 打开一个新页面：调用时不加第二个参数 add by tony */\nfunction formSubmit (url,sTarget){\n    document.forms[0].target = sTarget\n    document.forms[0].action = url;\n    document.forms[0].submit();\n    return true;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/core.js",
    "content": "/*\n */\n(function($, undefined) {\n    // prevent duplicate loading\n    // this is only a problem because we proxy existing functions\n    // and we don't want to double proxy them\n    // 如果有值在进行赋值，否则赋值为空，确保不是undefined\n    $.ued = $.ued || {};\n\t\n\tif (!window.JSON) {\n\t\twindow.JSON = {};\n\t}\n\t(function () {\n\t\t\"use strict\";\n\t\tfunction f(n) {\n\t\t\t// Format integers to have at least two digits.\n\t\t\treturn n < 10 ? '0' + n : n;\n\t\t}\n\n\t\tif (typeof Date.prototype.toJSON !== 'function') {\n\n\t\t\tDate.prototype.toJSON = function (key) {\n\n\t\t\t\treturn isFinite(this.valueOf()) ?\n\t\t\t\t\tthis.getUTCFullYear()     + '-' +\n\t\t\t\t\tf(this.getUTCMonth() + 1) + '-' +\n\t\t\t\t\tf(this.getUTCDate())      + 'T' +\n\t\t\t\t\tf(this.getUTCHours())     + ':' +\n\t\t\t\t\tf(this.getUTCMinutes())   + ':' +\n\t\t\t\t\tf(this.getUTCSeconds())   + 'Z' : null;\n\t\t\t};\n\n\t\t\tString.prototype.toJSON      =\n\t\t\t\tNumber.prototype.toJSON  =\n\t\t\t\tBoolean.prototype.toJSON = function (key) {\n\t\t\t\t\treturn this.valueOf();\n\t\t\t\t};\n\t\t}\n\n\t\tvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n\t\t\tescapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n\t\t\tgap,\n\t\t\tindent,\n\t\t\tmeta = {    // table of character substitutions\n\t\t\t\t'\\b': '\\\\b',\n\t\t\t\t'\\t': '\\\\t',\n\t\t\t\t'\\n': '\\\\n',\n\t\t\t\t'\\f': '\\\\f',\n\t\t\t\t'\\r': '\\\\r',\n\t\t\t\t'\"' : '\\\\\"',\n\t\t\t\t'\\\\': '\\\\\\\\'\n\t\t\t},\n\t\t\trep;\n\n\n\t\tfunction quote(string) {\n\n\t// If the string contains no control characters, no quote characters, and no\n\t// backslash characters, then we can safely slap some quotes around it.\n\t// Otherwise we must also replace the offending characters with safe escape\n\t// sequences.\n\n\t\t\tescapable.lastIndex = 0;\n\t\t\treturn escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n\t\t\t\tvar c = meta[a];\n\t\t\t\treturn typeof c === 'string' ? c :\n\t\t\t\t\t'\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t\t\t}) + '\"' : '\"' + string + '\"';\n\t\t}\n\n\n\t\tfunction str(key, holder) {\n\n\t// Produce a string from holder[key].\n\n\t\t\tvar i,          // The loop counter.\n\t\t\t\tk,          // The member key.\n\t\t\t\tv,          // The member value.\n\t\t\t\tlength,\n\t\t\t\tmind = gap,\n\t\t\t\tpartial,\n\t\t\t\tvalue = holder[key];\n\n\t// If the value has a toJSON method, call it to obtain a replacement value.\n\n\t\t\tif (value && typeof value === 'object' &&\n\t\t\t\t\ttypeof value.toJSON === 'function') {\n\t\t\t\tvalue = value.toJSON(key);\n\t\t\t}\n\n\t// If we were called with a replacer function, then call the replacer to\n\t// obtain a replacement value.\n\n\t\t\tif (typeof rep === 'function') {\n\t\t\t\tvalue = rep.call(holder, key, value);\n\t\t\t}\n\n\t// What happens next depends on the value's type.\n\n\t\t\tswitch (typeof value) {\n\t\t\tcase 'string':\n\t\t\t\treturn quote(value);\n\n\t\t\tcase 'number':\n\n\t// JSON numbers must be finite. Encode non-finite numbers as null.\n\n\t\t\t\treturn isFinite(value) ? String(value) : 'null';\n\n\t\t\tcase 'boolean':\n\t\t\tcase 'null':\n\n\t// If the value is a boolean or null, convert it to a string. Note:\n\t// typeof null does not produce 'null'. The case is included here in\n\t// the remote chance that this gets fixed someday.\n\n\t\t\t\treturn String(value);\n\n\t// If the type is 'object', we might be dealing with an object or an array or\n\t// null.\n\n\t\t\tcase 'object':\n\n\t// Due to a specification blunder in ECMAScript, typeof null is 'object',\n\t// so watch out for that case.\n\n\t\t\t\tif (!value) {\n\t\t\t\t\treturn 'null';\n\t\t\t\t}\n\n\t// Make an array to hold the partial results of stringifying this object value.\n\n\t\t\t\tgap += indent;\n\t\t\t\tpartial = [];\n\n\t// Is the value an array?\n\n\t\t\t\tif (Object.prototype.toString.apply(value) === '[object Array]') {\n\n\t// The value is an array. Stringify every element. Use null as a placeholder\n\t// for non-JSON values.\n\n\t\t\t\t\tlength = value.length;\n\t\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\t\tpartial[i] = str(i, value) || 'null';\n\t\t\t\t\t}\n\n\t// Join all of the elements together, separated with commas, and wrap them in\n\t// brackets.\n\n\t\t\t\t\tv = partial.length === 0 ? '[]' : gap ?\n\t\t\t\t\t\t'[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n\t\t\t\t\t\t'[' + partial.join(',') + ']';\n\t\t\t\t\tgap = mind;\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\n\t// If the replacer is an array, use it to select the members to be stringified.\n\n\t\t\t\tif (rep && typeof rep === 'object') {\n\t\t\t\t\tlength = rep.length;\n\t\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\t\tif (typeof rep[i] === 'string') {\n\t\t\t\t\t\t\tk = rep[i];\n\t\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t// Otherwise, iterate through all of the keys in the object.\n\n\t\t\t\t\tfor (k in value) {\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t// Join all of the member texts together, separated with commas,\n\t// and wrap them in braces.\n\n\t\t\t\tv = partial.length === 0 ? '{}' : gap ?\n\t\t\t\t\t'{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n\t\t\t\t\t'{' + partial.join(',') + '}';\n\t\t\t\tgap = mind;\n\t\t\t\treturn v;\n\t\t\t}\n\t\t}\n\n\t// If the JSON object does not yet have a stringify method, give it one.\n\n\t\tif (typeof window.JSON.stringify !== 'function') {\n\t\t\twindow.JSON.stringify = function (value, replacer, space) {\n\n\t// The stringify method takes a value and an optional replacer, and an optional\n\t// space parameter, and returns a JSON text. The replacer can be a function\n\t// that can replace values, or an array of strings that will select the keys.\n\t// A default replacer method can be provided. Use of the space parameter can\n\t// produce text that is more easily readable.\n\n\t\t\t\tvar i;\n\t\t\t\tgap = '';\n\t\t\t\tindent = '';\n\n\t// If the space parameter is a number, make an indent string containing that\n\t// many spaces.\n\n\t\t\t\tif (typeof space === 'number') {\n\t\t\t\t\tfor (i = 0; i < space; i += 1) {\n\t\t\t\t\t\tindent += ' ';\n\t\t\t\t\t}\n\n\t// If the space parameter is a string, it will be used as the indent string.\n\n\t\t\t\t} else if (typeof space === 'string') {\n\t\t\t\t\tindent = space;\n\t\t\t\t}\n\n\t// If there is a replacer, it must be a function or an array.\n\t// Otherwise, throw an error.\n\n\t\t\t\trep = replacer;\n\t\t\t\tif (replacer && typeof replacer !== 'function' &&\n\t\t\t\t\t\t(typeof replacer !== 'object' ||\n\t\t\t\t\t\ttypeof replacer.length !== 'number')) {\n\t\t\t\t\tthrow new Error('JSON.stringify');\n\t\t\t\t}\n\n\t// Make a fake root object containing our value under the key of ''.\n\t// Return the result of stringifying the value.\n\n\t\t\t\treturn str('', {'': value});\n\t\t\t};\n\t\t}\n\n\n\t// If the JSON object does not yet have a parse method, give it one.\n\n\t\tif (typeof window.JSON.parse !== 'function') {\n\t\t\twindow.JSON.parse = function (text, reviver) {\n\n\t// The parse method takes a text and an optional reviver function, and returns\n\t// a JavaScript value if the text is a valid JSON text.\n\n\t\t\t\tvar j;\n\n\t\t\t\tfunction walk(holder, key) {\n\n\t// The walk method is used to recursively walk the resulting structure so\n\t// that modifications can be made.\n\n\t\t\t\t\tvar k, v, value = holder[key];\n\t\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\t\tfor (k in value) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\t\t\tv = walk(value, k);\n\t\t\t\t\t\t\t\tif (v !== undefined) {\n\t\t\t\t\t\t\t\t\tvalue[k] = v;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdelete value[k];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn reviver.call(holder, key, value);\n\t\t\t\t}\n\n\n\t// Parsing happens in four stages. In the first stage, we replace certain\n\t// Unicode characters with escape sequences. JavaScript handles many characters\n\t// incorrectly, either silently deleting them, or treating them as line endings.\n\n\t\t\t\ttext = String(text);\n\t\t\t\tcx.lastIndex = 0;\n\t\t\t\tif (cx.test(text)) {\n\t\t\t\t\ttext = text.replace(cx, function (a) {\n\t\t\t\t\t\treturn '\\\\u' +\n\t\t\t\t\t\t\t('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t// In the second stage, we run the text against regular expressions that look\n\t// for non-JSON patterns. We are especially concerned with '()' and 'new'\n\t// because they can cause invocation, and '=' because it can cause mutation.\n\t// But just to be safe, we want to reject all unexpected forms.\n\n\t// We split the second stage into 4 regexp operations in order to work around\n\t// crippling inefficiencies in IE's and Safari's regexp engines. First we\n\t// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n\t// replace all simple value tokens with ']' characters. Third, we delete all\n\t// open brackets that follow a colon or comma or that begin the text. Finally,\n\t// we look to see that the remaining characters are only whitespace or ']' or\n\t// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n\t\t\t\tif (/^[\\],:{}\\s]*$/\n\t\t\t\t\t\t.test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n\t\t\t\t\t\t\t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n\t\t\t\t\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n\t// In the third stage we use the eval function to compile the text into a\n\t// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n\t// in JavaScript: it can begin a block or an object literal. We wrap the text\n\t// in parens to eliminate the ambiguity.\n\n\t\t\t\t\tj = eval('(' + text + ')');\n\n\t// In the optional fourth stage, we recursively walk the new structure, passing\n\t// each name/value pair to a reviver function for possible transformation.\n\n\t\t\t\t\treturn typeof reviver === 'function' ?\n\t\t\t\t\t\twalk({'': j}, '') : j;\n\t\t\t\t}\n\n\t// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n\t\t\t\tthrow new SyntaxError('JSON.parse');\n\t\t\t};\n\t\t}\n\t}());\n\t\n    if ($.ued.version) {\n        return;\n    }\n\n    $.extend($.ued, {\n        version : \"2.0\",\n        keyCode : {\n            TAB : 9,\n            ENTER : 13,\n            ESCAPE : 27,\n            SPACE : 32,\n            LEFT : 37,\n            UP : 38,\n            RIGHT : 39,\n            DOWN : 40\n        },\n        lang : {\n            // 获取属性的国际化字符串，如果组件的options中已经设置这个值就直接使用，否则从$.ued.lang[comp]中获取\n            _get : function(options, comp, attr) {\n                return options[attr] ? options[attr] : $.ued.lang[comp][attr];\n            }\n        }\n    });\n    // plugins\n    $.fn.extend({\n        propAttr : $.fn.prop || $.fn.attr,\n        _oldFocus : $.fn.focus, //为避免与jQuery ui冲突导致死循环，这里不要取名为'_focus'\n        //设置元素焦点（delay：延迟时间）\n        focus : function(delay, fn) {\n            return typeof delay === \"number\" ? this.each(function() {\n                var elem = this;\n                setTimeout(function() {\n                    $(elem).focus();\n                    if (fn) {\n                        fn.call(elem);\n                    }\n                }, delay);\n            }) : this._oldFocus.apply(this, arguments);\n        },\n        //获取设置滚动属性的 父元素\n        scrollParent : function() {\n            var scrollParent;\n            if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n                scrollParent = this.parents().filter(function() {\n                    return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                }).eq(0);\n            } else {\n                scrollParent = this.parents().filter(function() {\n                    return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                }).eq(0);\n            }\n            return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n        },\n        //设置或获取元素的垂直坐标\n        zIndex : function(zIndex) {\n            if (zIndex !== undefined) {\n                return this.css(\"zIndex\", zIndex);\n            }\n            if (this.length) {\n                var elem = $(this[0]), position, value;\n                while (elem.length && elem[0] !== document) {\n                    // Ignore z-index if position is set to a value where z-index is ignored by the browser\n                    // This makes behavior of this function consistent across browsers\n                    // WebKit always returns auto if the element is positioned\n                    position = elem.css(\"position\");\n                    if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n                        // IE returns 0 when zIndex is not specified\n                        // other browsers return a string\n                        // we ignore the case of nested elements with an explicit value of 0\n                        // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n                        value = parseInt(elem.css(\"zIndex\"), 10);\n                        if (!isNaN(value) && value !== 0) {\n                            return value;\n                        }\n                    }\n                    elem = elem.parent();\n                }\n            }\n            return 0;\n        },\n        //设置元素不支持被选择\n        disableSelection : function() {\n            return this.bind(($.support.selectstart ? \"selectstart\" : \"mousedown\" ) + \".om-disableSelection\", function(event) {\n                event.preventDefault();\n            });\n        },\n        //设置元素支持被选择\n        enableSelection : function() {\n            return this.unbind(\".om-disableSelection\");\n        }\n    });\n    $.fn.extend({\n\t\t/**\n\t\t  * add by ynshen\n\t\t  * 扩展show，支持参数visibility（本质是通过样式控制visibility）\n\t\t  */\n        _oldShow : $.fn.show,\n        show : function(type) {\n            if (type != \"visibility\") {\n                return this._oldShow.apply(this, arguments);\n            } else {\n                return this.css(\"visibility\", \"visible\");\n            }\n        },\n\t\t/**\n\t\t  * add by ynshen\n\t\t  * 扩展hide，支持参数visibility（本质是通过样式控制visibility）\n\t\t  */\n        _oldHide : $.fn.hide,\n        hide : function(type) {\n            if (type != \"visibility\") {\n                return this._oldHide.apply(this, arguments);\n            } else {\n                return this.css(\"visibility\", \"hidden\");\n            }\n        }\n    });\n\t$.extend({\n\t\t/**\n\t\t  * add by xzjiang\n\t\t  * 判断字符串数（中文占俩位）\n\t\t  * @param {Object} message\n\t\t  */\n\t\tgetStrLength : function(message) {\n\t\t\treturn message.replace(/([\\u4E00-\\u9FA5\\uf900-\\ufa2d])/g, 'aa').length;\n\t\t}\n\t});\n\t\n\t/**\n\t  * add by ynshen\n\t  * 判断浏览器是否支持console对象\n\t  * 如果不支持（当为IE并且未打开调试窗口时，初始化console对象，并将console.log方法指向window.alert方法）\n\t  */\n\t  window.property = {};\n\tif(!window.console){\n\t\twindow.console = {};\n\t\twindow.console.log = function(data){\n\t\t\twindow.alert(data)\n\t\t}\n\t\t//add by rbai(增加time和timeEnd性能测试函数) \n\t\tif(!window.console.time){\n\t\t\twindow.console.time = function(name){\n\t\t\t\twindow.property[name] = new Date().getTime();\n\t\t\t}\n\t\t\twindow.console.timeEnd = function(name){\n\t\t\t\tvar tempTime = new Date().getTime()\n\t\t\t\twindow.alert(name+'==='+(tempTime - window.property[name])+'ms');\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//增加debug模式\n\tif(!window.DebugModel){\n\t\twindow.DebugModel = {},window.deBugObj = {};\n\t\twindow.DebugModel.start = function(name){\n\t\t\twindow.deBugObj[name] = +new Date();\n\t\t}\n\t\twindow.DebugModel.end = function(name){\n\t\t\tvar tempTime = +new Date();\n\t\t\tvar tempConsole = name+'完成花费了'+(tempTime - window.deBugObj[name])+'ms';\n\t\t\tDebugModel._printLog(tempConsole);\n\t\t}\n\t\twindow.DebugModel._printLog = function(log){\n\t\t\tvar $debugConsole = $('.ued-debugConsole',$('body'));\n\t\t\tif(!$debugConsole.size()){//如果存在debug控制台元素\n\t\t\t\t$('body').append('<div class=\"ued-debugConsole\" style=\"position:absolute;top:10px;left:10px;background:#F9F9F9;border:1px solid #CCC;padding:5px 10px 20px 10px;z-index:99999;color:#666;box-shadow:1px 1px 1px white inset;text-shadow:1px 1px 1px #FFF;\">'+\n\t\t\t\t'<h6 style=\"border-bottom:1px dashed #999;margin-bottom:5px;\">UED DEBUG 控制台</h6>'+\n\t\t\t\t'<div class=\"ued-debugContent uew-scroll-webkit\" style=\"max-height:300px;overflow:auto;\"></div>'+\n\t\t\t\t'<a href=\"javascript:;\" class=\"ued-debugClose\" style=\"position:absolute;bottom:2px;right:5px;\">关闭</a>'+\n\t\t\t\t'</di>');\n\t\t\t\t$debugContent = $('.ued-debugContent',$('body'));\n\t\t\t\tDebugModel._initCloseOrShow();\n\t\t\t}\n\t\t\t$('.ued-debugConsole',$('body')).show();\n\t\t\t$debugContent.append('<p>'+ log +'</p>');\n\t\t}\n\t\t\n\t\twindow.DebugModel._initCloseOrShow = function($debugConsole){\n\t\t\t$('.ued-debugClose',$('body')).click(function(e) {\n\t\t\t\t$debugContent.empty();\n                $('.ued-debugConsole',$('body')).hide();\n            });\n\t\t\t\n\t\t}\n\t}\n\t/**\n\t  * add by ynshen\n\t  * 对象深度复制方法\n\t  */\n\twindow.DeepCopy = function(obj){\n\t\tvar copyObj = new Object();\n\t\tfor (prop in obj)\n\t\t{\n\t\t\tif(obj[prop] != null && obj[prop].constructor == Object){\n\t\t\t\tcopyObj[prop] = window.DeepCopy(obj[prop]);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tcopyObj[prop] = obj[prop]\n\t\t\t}\n\t\t}\n\t\treturn copyObj;\n\t}\n\t/**\n\t  * add by ynshen\n\t  * 扩展Array对象，增加删除数组中指定元素方法\n\t  */\n\tArray.prototype.remove = function(element){\n\t\tvar indexArr = [];\n\t\tvar outArr = [];\n\t\t//找到出现该元素的index并存入数组indexArr\n\t\tfor(var i = 0;i < this.length;i++){\n\t\t\tif(this[i] == element){\n\t\t\t\tindexArr.push(i);\n\t\t\t}\n\t\t}\n\t\tif(indexArr.length > 0){\n\t\t\tfor(var j = 0;j < indexArr.length;j++){\n\t\t\t\tif(j == 0){//切分头部\n\t\t\t\t\toutArr = outArr.concat(this.slice(0,indexArr[j]));\n\t\t\t\t}else{//切分中段\n\t\t\t\t\toutArr = outArr.concat(this.slice(indexArr[j - 1] + 1,indexArr[j]));\n\t\t\t\t}\n\t\t\t}\n\t\t\t//切分尾端\n\t\t\toutArr = outArr.concat(this.slice(indexArr[j - 1] + 1,this.length));\n\t\t\treturn outArr;\n\t\t}else{\n\t\t\tthrow new Error(element + \"can't be found in \" + this);\n\t\t}\n\t}\n\t\n    // 扩展innerWidth、innerHeight、outerWidth和outerHeight方法，如果不传参则获取值，如果传参则设置计算后的宽高。\n    $.each([\"Width\", \"Height\"], function(i, name) {\n        var side = name === \"Width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"], type = name.toLowerCase(), orig = {\n            innerWidth : $.fn.innerWidth,\n            innerHeight : $.fn.innerHeight,\n            outerWidth : $.fn.outerWidth,\n            outerHeight : $.fn.outerHeight\n        };\n\n        function reduce(elem, size, border, margin) {\n            $.each(side, function() {\n                size -= parseFloat($.curCSS(elem, \"padding\" + this, true)) || 0;\n                if (border) {\n                    size -= parseFloat($.curCSS(elem, \"border\" + this + \"Width\", true)) || 0;\n                }\n                if (margin) {\n                    size -= parseFloat($.curCSS(elem, \"margin\" + this, true)) || 0;\n                }\n            });\n            return size;\n        }\n\n        $.fn[\"inner\" + name] = function(size) {\n            if (size === undefined) {\n                // 返回innerWidth/innerHeight\n                return orig[\"inner\" + name].call(this);\n            }\n            return this.each(function() {\n                // 设置宽度/高度 = (size - padding)\n                $(this).css(type, reduce(this, size) + \"px\");\n            });\n        };\n\n        $.fn[\"outer\" + name] = function(size, margin) {\n            if ( typeof size !== \"number\") {\n                // 返回outerWidth/outerHeight\n                return orig[\"outer\" + name].call(this, size);\n            }\n            return this.each(function() {\n                // 设置宽度/高度 = (size - padding - border - margin)\n                $(this).css(type, reduce(this, size, true, margin) + \"px\");\n            });\n        };\n    });\n    // selectors\n    function focusable(element, isTabIndexNotNaN) {\n        var nodeName = element.nodeName.toLowerCase();\n        if (\"area\" === nodeName) {\n            var map = element.parentNode, mapName = map.name, img;\n            if (!element.href || !mapName || map.nodeName.toLowerCase() !== \"map\") {\n                return false;\n            }\n            img = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n            return !!img && visible(img);\n        }\n        return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : \"a\" == nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN)\n        // the element and all of its ancestors must be visible\n        && visible(element);\n    }\n\n    function visible(element) {\n        return !$(element).parents().andSelf().filter(function() {\n            return $.curCSS(this, \"visibility\") === \"hidden\" || $.expr.filters.hidden(this);\n        }).length;\n    }\n\n\n    $.extend($.expr[\":\"], {\n        data : function(elem, i, match) {\n            return !!$.data(elem, match[3]);\n        },\n        focusable : function(element) {\n            return focusable(element, !isNaN($.attr(element, \"tabindex\")));\n        },\n        tabbable : function(element) {\n            var tabIndex = $.attr(element, \"tabindex\"), isTabIndexNaN = isNaN(tabIndex);\n            return (isTabIndexNaN || tabIndex >= 0 ) && focusable(element, !isTabIndexNaN);\n        }\n    });\n    // support\n    $(function() {\n        var body = document.body, div = body.appendChild( div = document.createElement(\"div\"));\n        $.extend(div.style, {\n            minHeight : \"100px\",\n            height : \"auto\",\n            padding : 0,\n            borderWidth : 0\n        });\n        // 判断当前浏览器环境是否支持minHeight属性\n        $.support.minHeight = div.offsetHeight === 100;\n        $.support.selectstart = \"onselectstart\" in div;\n        // set display to none to avoid a layout bug in IE\n        // http://dev.jquery.com/ticket/4014\n        body.removeChild(div).style.display = \"none\";\n    });\n\n    // deprecated\n    $.extend($.ued, {\n        // $.ued.plugin is deprecated.  Use the proxy pattern instead.\n        plugin : {\n            add : function(module, option, set) {\n                var proto = $.ued[module].prototype;\n                for (var i in set ) {\n                    proto.plugins[i] = proto.plugins[i] || [];\n                    proto.plugins[i].push([option, set[i]]);\n                }\n            },\n            call : function(instance, name, args) {\n                var set = instance.plugins[name];\n                if (!set || !instance.element[0].parentNode) {\n                    return;\n                }\n                for (var i = 0; i < set.length; i++) {\n                    if (instance.options[set[ i ][0]]) {\n                        set[ i ][1].apply(instance.element, args);\n                    }\n                }\n            }\n        }\n    });\n\n})(jQuery);\n\n(function($, undefined) {\n    // jQuery 1.4+\n    if ($.cleanData) {\n        var _cleanData = $.cleanData;\n        $.cleanData = function(elems) {\n            for (var i = 0, elem; ( elem = elems[i]) != null; i++) {\n\t\t\t\ttry {\n                \t$(elem).triggerHandler(\"ued-remove\");\n\t\t\t\t} catch( e ) {}\n            }\n            _cleanData(elems);\n        };\n    }\n\n    $.uedWidget = function(name, base, prototype) {\n        var namespace = name.split( \".\" )[0], fullName;\n        name = name.split( \".\" )[1];\n        fullName = namespace + \"-\" + name;\n        // 例如参数name='ued.tabs'，变成namespace='ued',name='tabs',fullName='ued-tabs'\n        // base默认为Widget类，组件默认会继承base类的所有方法\n        if (!prototype) {\n            prototype = base;\n            base = $.UEDWidget;\n        }\n        // create selector for plugin\n        $.expr[ \":\" ][fullName] = function(elem) {\n            return !!$.data(elem, name);\n        };\n        // 创建命名空间$.ued.tabs\n        $[namespace] = $[namespace] || {};\n        // 组件的构造函数\n        $[ namespace ][name] = function(options, element) {\n            // allow instantiation without initializing for simple inheritance\n            if (arguments.length) {\n                this._createWidget(options, element);\n            }\n        };\n        // 初始化父类，一般调用了$.Widget\n        var basePrototype = new base();\n        // we need to make the options hash a property directly on the new instance\n        // otherwise we'll modify the options hash on the prototype that we're\n        // inheriting from\n        //\t\t$.each( basePrototype, function( key, val ) {\n        //\t\t\tif ( $.isPlainObject(val) ) {\n        //\t\t\t\tbasePrototype[ key ] = $.extend( {}, val );\n        //\t\t\t}\n        //\t\t});\n        basePrototype.options = $.extend(true, {}, basePrototype.options);\n        // 给om.tabs继承父类的所有原型方法和参数\n        $[ namespace ][name].prototype = $.extend(true, basePrototype, {\n            namespace : namespace,\n            widgetName : name,\n            // 组件的事件名前缀，调用_trigger的时候会默认给trigger的事件加上前缀\n            // 例如_trigger('create')实际会触发'tabscreate'事件\n            widgetEventPrefix : $[ namespace ][name].prototype.widgetEventPrefix || name,\n            widgetBaseClass : fullName\n        }, prototype);\n        // 把tabs方法挂到jquery对象上，也就是$('#tab1').tabs();\n        var temp = $.uedWidget.bridge(name, $[ namespace ][name]);\n    };\n\n    $.uedWidget.bridge = function(name, object) {\n        $.fn[name] = function(options) {\n            // 如果tabs方法第一个参数是string类型，则认为是调用组件的方法，否则调用options方法\n            var isMethodCall = typeof options === \"string\", args = Array.prototype.slice.call(arguments, 1), returnValue = this;\n            // allow multiple hashes to be passed on init\n            options = !isMethodCall && args.length ? $.extend.apply(null, [true, options].concat(args)) : options;\n            // '_'开头的方法被认为是内部方法，不会被执行，如$('#tab1').tabs('_init')\n            if (isMethodCall && options.charAt(0) === \"_\") {\n                return returnValue;\n            }\n            if (isMethodCall) {\n                this.each(function() {\n                    // 执行组件方法\n                    var instance = $.data(this, name);\n                    if (options == 'options') {\n                        returnValue = instance && instance.options;\n                        return false;\n                    } else {\n                        var methodValue = instance && $.isFunction(instance[options]) ? instance[options].apply(instance, args) : instance;\n                        if (methodValue !== instance && methodValue !== undefined) {\n                            returnValue = methodValue;\n                            return false;\n                        }\n                    }\n                });\n            } else {\n                // 调用组件的options方法\n                this.each(function() {\n                    var instance = $.data(this, name);\n                    if (instance) {\n                        // 设置options后再次调用_init方法，第一次调用是在_createWidget方法里面。这个方法需要开发者去实现。\n                        // 主要是当改变组件中某些参数后可能需要对组件进行重画\n                        instance._setOptions(options || {});\n                        $.extend(instance.options, options);\n                        $(instance.beforeInitListeners).each(function() {\n                            this.call(instance);\n                        });\n                        instance._init();\n                        $(instance.initListeners).each(function() {\n                            this.call(instance);\n                        });\n                    } else {\n                        // 没有实例的话，在这里调用组件类的构造函数，并把构造后的示例保存在dom的data里面。注意这里的this是dom，object是模块类\n                        $.data(this, name, new object(options, this));\n                    }\n                });\n            }\n            return returnValue;\n        };\n    };\n    $.uedWidget.addCreateListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.createListeners.push(fn);\n    };\n    $.uedWidget.addInitListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.initListeners.push(fn);\n    };\n    $.uedWidget.addBeforeInitListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.beforeInitListeners.push(fn);\n    };\n    $.UEDWidget = function(options, element) {\n        this.createListeners = [];\n        this.initListeners = [];\n        this.beforeInitListeners = [];\n        // allow instantiation without initializing for simple inheritance\n        if (arguments.length) {\n            this._createWidget(options, element);\n        }\n    };\n    /**\n     * 格式化简单节点数据\n     * add by ynshen\n     */\n    $.formatData = function(easyData, sourcePid) {\n        var index;\n        var root;\n        //寻找根节点\n        for (var i = 0; i < easyData.length; i++) {\n            if (easyData[i].pid == sourcePid) {\n                index = i;\n                root = easyData[i];\n                root.level = 0;\n                break;\n            }\n        }\n        if (root) {\n            handleArray(easyData, root);\n            return easyData[index];\n        } else {\n            return null;\n        };\n    }\n    function handleArray(target_, pNode) {\n        for (var i = 0; i < target_.length; i++) {\n            if (target_[i].pid == pNode.id) {\n                if (!pNode.children) {\n                    pNode.children = new Array();\n                }\n                pNode.children.push(target_[i]);\n                target_[i].level = pNode.level + 1;\n                handleArray(target_, target_[i]);\n            }\n        }\n    }\n\n    /*=============================================*/\n    $.UEDWidget.prototype = {\n        widgetName : \"widget\",\n        widgetEventPrefix : \"\",\n        options : {\n            disabled : false\n        },\n        _createWidget : function(options, element) {\n            // $.widget.bridge stores the plugin instance, but we do it anyway\n            // so that it's stored even before the _create function runs\n            $.data(element, this.widgetName, this);\n            this.element = $(element);\n            this.options = $.extend(true, {}, this.options, this._getCreateOptions(), options);\n            var self = this;\n            //注意，不要少了前边的 \"ued-\"，不然会与jquery-ui冲突\n            this.element.bind(\"ued-remove._\" + this.widgetName, function() {\n                self.destroy();\n            });\n            // 开发者实现\n            this._create();\n            $(this.createListeners).each(function() {\n                this.call(self);\n            });\n            // 如果绑定了初始化的回调函数，会在这里触发。注意绑定的事件名是需要加上前缀的，如$('#tab1').bind('tabscreate',function(){});\n            this._trigger(\"create\");\n            // 开发者实现\n            $(this.beforeInitListeners).each(function() {\n                this.call(self);\n            });\n            this._init();\n            $(this.initListeners).each(function() {\n                this.call(self);\n            });\n        },\n        _getCreateOptions : function() {\n            return $.metadata && $.metadata.get( this.element[0] )[this.widgetName];\n        },\n        _create : function() {\n        },\n        _init : function() {\n        },\n        destroy : function() {\n            this.element.unbind(\".\" + this.widgetName).removeData(this.widgetName);\n            this.widget().unbind(\".\" + this.widgetName);\n        },\n        widget : function() {\n            return this.element;\n        },\n\n        option : function(key, value) {\n            var options = key;\n            if (arguments.length === 0) {\n                // don't return a reference to the internal hash\n                return $.extend({}, this.options);\n            }\n            if ( typeof key === \"string\") {\n                if (value === undefined) {\n                    return this.options[key];\n                    // 获取值\n                }\n                options = {};\n                options[key] = value;\n            }\n            this._setOptions(options);\n            // 设置值\n            return this;\n        },\n        _setOptions : function(options) {\n            var self = this;\n            $.each(options, function(key, value) {\n                self._setOption(key, value);\n            });\n            return this;\n        },\n        _setOption : function(key, value) {\n            this.options[key] = value;\n            return this;\n        },\n\n        // $.widget中优化过的trigger方法。type是回调事件的名称，如\"onRowClick\"，event是触发回调的事件（通常没有这个事件的时候传null）\n        // 这个方法只声明了两个参数，如有其他参数可以直接写在event参数后面\n        _trigger : function(type, event) {\n            // 获取初始化配置config中的回调方法\n\t\t\t/**\n\t\t\t  * add by ynshen\n\t\t\t  * 对于多层级的方法进行调用\n\t\t\t  */\n            var callback;\n\t\t\tvar callbackArr = type.split(\".\");\n\t\t\t\n\t\t\tif(callbackArr.length > 1){\n\t\t\t\tvar tempCallback = this.options[callbackArr[0]];\n\t\t\t\tfor(var i = 1 ;i < callbackArr.length;i++){\n\t\t\t\t\ttempCallback = tempCallback[callbackArr[i]]\t;\n\t\t\t\t}\n\t\t\t\tcallback = tempCallback;\n\t\t\t}else{\n\t\t\t\tcallback = this.options[type]\n\t\t\t}\n\t\t\t\n\t\t\t\n            // 封装js标准event对象为jquery的Event对象\n            event = $.Event(event);\n            event.type = type;\n            // copy original event properties over to the new event\n            // this would happen if we could call $.event.fix instead of $.Event\n            // but we don't have a way to force an event to be fixed multiple times\n            if (event.originalEvent) {\n                for (var i = $.event.props.length, prop; i; ) {\n                    prop = $.event.props[--i];\n                    event[prop] = event.originalEvent[prop];\n                }\n            }\n            // 构造传给回调函数的参数，event放置在最后\n            var newArgs = [], argLength = arguments.length;\n            for (var i = 2; i < argLength; i++) {\n                newArgs[i - 2] = arguments[i];\n            }\n            if (argLength > 1) {\n                newArgs[argLength - 2] = arguments[1];\n            }\n            return !($.isFunction(callback) && callback.apply(this.element, newArgs) === false || event.isDefaultPrevented() );\n        }\n    };\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/My97DatePicker.htm",
    "content": "<html>\n<head>\n<meta http-equiv=\"content-type\" content=\"text/xml; charset=utf-8\" />\n<title>My97DatePicker</title>\n<script type=\"text/javascript\" src=\"config.js\"></script>\n<script>\nif(parent==window)\n\tlocation.href = 'http://www.my97.net/';\n\nvar $d, $dp, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\n\nif ($pdp.eCont) {\n\t$dp = {};\n\tfor (var p in $pdp) {\n\t\t$dp[p] = $pdp[p];\n\t}\n}\nelse\n\t$dp = $pdp;\n$dp.realLang = getCurr(langList, $dp.lang);\ndocument.write(\"<script src='lang/\" + $dp.realLang.name + \".js' charset='\" + $dp.realLang.charset + \"'><\\/script>\");\nfor (var i = 0; i < skinList.length; i++) {\n    document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"skin/' + skinList[i].name + '/datepicker.css\" title=\"' + skinList[i].name + '\" charset=\"' + skinList[i].charset + '\" disabled=\"true\"/>');\n}\nfunction getCurr(arr, name){\n\tvar isFound = false;\n\tvar item = arr[0];\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i].name == name) {\n\t\t\titem = arr[i];\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn item;\n}\n</script>\n<script type=\"text/javascript\" src=\"calendar.js\"></script>\n</head>\n<body leftmargin=\"0\" topmargin=\"0\" onload=\"$c.autoSize()\">\n</body>\n</html>\n<script>new My97DP();</script>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.1\n * SITE: http://dp.my97.net\n * BLOG: http://my97.cnblogs.com\n * MAIL: smallcarrot@163.com\n */\nvar $dp,WdatePicker;(function(){var $={\n\n$wdate:true,\n$crossFrame:true,\n$dpPath:\"\",\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:true,\nqsEnabled:true,\n\ndisabledDates:null,disabledDays:null,opposite:false,onpicking:null,onpicked:null,onclearing:null,oncleared:null,eCont:null,vel:null,errMsg:\"\",quickSel:[],has:{}};WdatePicker=S;var V=window,N=\"document\",H=\"documentElement\",A=\"getElementsByTagName\",T,_,R,G,a;switch(navigator.appName){case\"Microsoft Internet Explorer\":R=true;break;case\"Opera\":a=true;break;default:G=true;break}T=V;if($.$crossFrame){try{while(T.parent[N]!=T[N]&&T.parent[N][A](\"frameset\").length==0)T=T.parent}catch(P){}}_=J();if($.$wdate)K(_+\"skin/WdatePicker.css\");var L;if(T.$dp){try{T.$dp.$(\"my97\")}catch(P){L=P.number==-2146823277?true:false}}if(!T.$dp||L){$dp=Q({ff:G,ie:R,opera:a,el:null,win:V,status:L?2:0,defMinDate:$.minDate,defMaxDate:$.maxDate,$:function($){return(typeof $==\"string\")?this.win[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=\"\"){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var A in $){if(this.dt[A]===undefined)this.errMsg=\"invalid property:\"+A;this.dt[A]+=$[A]}if(this.dt.refresh())return this.dt}return\"\"},show:function(){if(this.dd)this.dd.style.display=\"block\"},hide:function(){if(this.dd)this.dd.style.display=\"none\"},attachEvent:C});if(!L)Z(T,function(){S(null,true)})}else $dp=T.$dp;if(!V[N].docMD){C(V[N],\"onmousedown\",B);V[N].docMD=true}if(!T[N].docMD){C(T[N],\"onmousedown\",B);T[N].docMD=true}C(V,\"onunload\",function(){$dp.hide()});function Q(_){T.$dp=T.$dp||{};for(var $ in _)T.$dp[$]=_[$];return T.$dp}function C(A,$,_){if(R)A.attachEvent($,_);else{var B=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){return _($)};A.addEventListener(B,_._ieEmuEventHandler,false)}}function J(){var _,A,$=document.getElementsByTagName(\"script\");for(var B=0;B<$.length;B++){_=$[B].src.substring(0,$[B].src.toLowerCase().indexOf(\"wdatepicker.js\"));A=_.lastIndexOf(\"/\");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function D(F){var E,C;if(F.substring(0,1)!=\"/\"&&F.indexOf(\"://\")==-1){E=T.location.href;C=location.href;if(E.indexOf(\"?\")>-1)E=E.substring(0,E.indexOf(\"?\"));if(C.indexOf(\"?\")>-1)C=C.substring(0,C.indexOf(\"?\"));var _=\"\",D=\"\",A=\"\",H,G,B=\"\";for(H=0;H<Math.max(E.length,C.length);H++)if(E.charAt(H).toLowerCase()!=C.charAt(H).toLowerCase()){G=H;while(E.charAt(G)!=\"/\"){if(G==0)break;G-=1}_=E.substring(G+1,E.length);_=_.substring(0,_.lastIndexOf(\"/\"));D=C.substring(G+1,C.length);D=D.substring(0,D.lastIndexOf(\"/\"));break}if(_!=\"\")for(H=0;H<_.split(\"/\").length;H++)B+=\"../\";if(D!=\"\")B+=D+\"/\";F=E.substring(0,E.lastIndexOf(\"/\")+1)+B+F}$.$dpPath=F}function K(C,$,D){var B=V[N],E=B[A](\"HEAD\").item(0),_=B.createElement(\"link\");_.href=C;_.rel=\"stylesheet\";_.type=\"text/css\";if($)_.title=$;if(D)_.charset=D;E.appendChild(_)}function X($,_){C($,\"onload\",_)}function Z(_,$){var B=_.document,D=false;F();if((/WebKit|KHTML|MSIE/i).test(navigator.userAgent))C();function E(_){if(!D){D=true;A();$(_)}}function G($){return typeof B[$]!=\"undefined\"}function C(){if(B.body!==null&&B.getElementsByTagName){if(G(\"fileSize\")){try{B.documentElement.doScroll(\"left\");E(\"documentready\")}catch($){}}if(G(\"readyState\")&&(/loaded|complete/).test(B.readyState))E(\"readyState\")}if(!D)setTimeout(C,10)}function A(){if(typeof B.removeEventListener==\"function\")B.removeEventListener(\"DOMContentLoaded\",E,false)}function F(){if(typeof B.addEventListener==\"function\")B.addEventListener(\"DOMContentLoaded\",E,false);var $=_.onload;_.onload=function(_){if(typeof $==\"function\")$();E(_||this.event)}}}function E($){$=$||T;var B=0,_=0;while($!=T){var D=$.parent[N][A](\"iframe\");for(var F=0;F<D.length;F++){try{if(D[F].contentWindow==$){var E=U(D[F]);B+=E.left;_+=E.top;break}}catch(C){}}$=$.parent}return{\"leftM\":B,\"topM\":_}}function U(E){if(R)return E.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},G=null,_=E.offsetTop,F=E.offsetLeft,D=E.offsetWidth,B=E.offsetHeight,C=E.offsetParent;if(C!=E)while(C){F+=C.offsetLeft;_+=C.offsetTop;if(C.tagName.toLowerCase()==\"body\")G=C.ownerDocument.defaultView;C=C.offsetParent}C=E.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(C.style.display))if(!a||C.style.overflow!==\"visible\"){F-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}var $=Y(G);F-=$.left;_-=$.top;D+=F;B+=_;return{\"left\":F,\"top\":_,\"right\":D,\"bottom\":B}}}function M($){$=$||T;var _=$[N];_=_[H]&&_[H].clientHeight&&_[H].clientHeight<=_.body.clientHeight?_[H]:_.body;return{\"width\":_.clientWidth,\"height\":_.clientHeight}}function Y($){$=$||T;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollLeft||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function B(_){src=_?(_.srcElement||_.target):null;if($dp&&$dp.dd&&$dp.dd.style.display==\"block\"&&src!=$dp.el){var A=$dp.el,B=$dp.cal,$=$dp.el[$dp.elProp];if($!=null){$dp.$w.hideSel();if($!=\"\"&&!$dp.readOnly)B.date.loadFromDate(B.splitDate($,B.dateFmt));if($==\"\"||(B.isDate(B.date)&&B.isTime(B.date)&&B.checkValid(B.date))){B.mark(true);if($!=\"\")B.update();else B.setRealValue(\"\");$dp.hide()}else B.mark(false)}else $dp.hide()}}var O=[];function W(){$dp.status=2;F()}function F(){if(O.length>0){var $=O.shift();$.el={innerHTML:\"\"};$.eCont=$dp.$($.eCont);$.autoPickDate=true;$.qsEnabled=false;I($)}}function S(C,$){$dp.win=V;C=C||{};if($){$dp.status=1;I({el:{innerHTML:\"\"}},true)}else if(C.eCont){O.push(C);if($dp.status==2)F()}else{if($dp.status==0)$dp.status=1;else if($dp.status!=2)return;var B,A=_();if(A){B=A.srcElement||A.target;A.cancelBubble=true}C.el=$dp.$(C.el||B);if(!C.el||C.el&&C.el.disabled||(C.el==$dp.el&&$dp.dd.style.display!=\"none\"&&$dp.dd.style.left!=\"-1970px\"))return;I(C)}function _(){if(G){func=_.caller;while(func!=null){var $=func.arguments[0];if($&&($+\"\").indexOf(\"Event\")>=0)return $;func=func.caller}return null}return event}}function I(G,A){for(var F in $)if(F.substring(0,1)!=\"$\")$dp[F]=$[F];for(F in G)if($dp[F]===undefined)$dp.errMsg=\"invalid property:\"+F;else $dp[F]=G[F];$dp.elProp=$dp.el&&$dp.el.nodeName==\"INPUT\"?\"value\":\"innerHTML\";if($dp.el[$dp.elProp]==null)return;if($dp.lang==\"auto\")$dp.lang=R?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!$dp.dd||$dp.eCont||($dp.lang&&$dp.realLang&&$dp.realLang.name!=$dp.lang)){if($dp.dd&&!$dp.eCont)T[N].body.removeChild($dp.dd);if($.$dpPath==\"\")D(_);var B=\"<iframe src=\\\"\"+$.$dpPath+\"My97DatePicker.htm\\\" frameborder=\\\"0\\\" border=\\\"0\\\" scrolling=\\\"no\\\"></iframe>\";if($dp.eCont){$dp.eCont.innerHTML=B;X($dp.eCont.childNodes[0],W)}else{$dp.dd=T[N].createElement(\"DIV\");$dp.dd.style.cssText=\"position:absolute;z-index:19700\";$dp.dd.innerHTML=B;T[N].body.appendChild($dp.dd);X($dp.dd.childNodes[0],W);if(A)$dp.dd.style.left=$dp.dd.style.top=\"-1970px\";else{$dp.show();C()}}}else if($dp.cal){$dp.show();$dp.cal.init();C()}function C(){var F=$dp.position.left,B=$dp.position.top,G=U($dp.el),$=E(V),C=M(T),A=Y(T),D=$dp.dd.offsetHeight,_=$dp.dd.offsetWidth;if(isNaN(B)){if(B==\"above\"||(B!=\"under\"&&(($.topM+G.bottom+D>C.height)&&($.topM+G.top-D>-5))))B=A.top+$.topM+G.top-D-3;else B=A.top+$.topM+G.bottom;B+=R?-1:1}else B+=A.top+$.topM;if(isNaN(F))F=A.left+Math.min($.leftM+G.left,C.width-_-5)-(R?2:0);else F+=A.left+$.leftM;$dp.dd.style.top=B+\"px\";$dp.dd.style.left=F+\"px\"}}})()"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/calendar.js",
    "content": "/*\n * My97 DatePicker 4.1\n * SITE: http://dp.my97.net\n * BLOG: http://my97.cnblogs.com\n * MAIL: smallcarrot@163.com\n */\nvar $c;if($FF){Event.prototype.__defineSetter__(\"returnValue\",function($){if(!$)this.preventDefault();return $});Event.prototype.__defineGetter__(\"srcElement\",function(){var $=this.target;while($.nodeType!=1)$=$.parentNode;return $});HTMLElement.prototype.attachEvent=function($,_){var A=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){window.event=$;return _()};this.addEventListener(A,_._ieEmuEventHandler,false)}}function My97DP(){$c=this;$dp.$w=window;$dt=this.date=new DPDate();this.QS=[];$d=document.createElement(\"div\");$d.className=\"WdateDiv\";$d.onmousedown=hideSel;$d.innerHTML=\"<div id=dpTitle><div style=\\\"float:left\\\" class=\\\"navImg NavImgll\\\"></div><div style=\\\"float:left\\\" class=\\\"navImg NavImgl\\\"></div><div style=\\\"float:left\\\"><div class=\\\"menuSel MMenu\\\" style=\\\"z-index:1\\\"></div><input class=yminput_date style=\\\"width:50px\\\" tabindex=1></div><div style=\\\"float:left\\\"><div class=\\\"menuSel YMenu\\\" style=\\\"z-index:1\\\"></div><input class=yminput style=\\\"width:50px\\\" tabindex=2></div><div style=\\\"float:right\\\" class=\\\"navImg NavImgrr\\\"></div><div style=\\\"float:right\\\" class=\\\"navImg NavImgr\\\"></div></div><div style=\\\"position:absolute;overflow:hidden\\\"></div><div></div><div id=dpTime><div class=\\\"menuSel hhMenu\\\" style=\\\"z-index:1\\\"></div><div class=\\\"menuSel mmMenu\\\" style=\\\"z-index:1\\\"></div><div class=\\\"menuSel ssMenu\\\" style=\\\"z-index:1\\\"></div><table cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2><span id=dpTimeStr></span>&nbsp;<input class=tB maxlength=2 tabindex=3><input value=\\\":\\\" class=tm readonly><input class=tE maxlength=2 tabindex=4><input value=\\\":\\\" class=tm readonly><input class=tE maxlength=2 tabindex=5></td><td><button id=dpTimeUp></button></td></tr><tr><td><button id=dpTimeDown></button></td></tr></table></div><div id=dpQS></div><div id=dpControl><input class=dpButton id=dpClearInput type=button tabindex=6> <input class=dpButton id=dpTodayInput type=button tabindex=7> <input class=dpButton id=dpOkInput type=button tabindex=8></div>\";attachTabEvent($d,function(){hideSel()});_();this.init();$();$d.MI.attachEvent(\"onkeydown\",A);$d.yI.attachEvent(\"onkeydown\",A);$d.MI.onfocus=function($){this.className=\"yminputfocus2\";this.value=getA(this,\"realValue\");this.select();$c._fM();showB($d.MD)};$d.MI.onblur=function(){var $;if($lastInput==this){$dt.M=pIntDef(this.value,$dt.M);$=true}c_M($dt.M,$);this.className=\"yminput_date\";hide($d.MD)};$d.yI.onfocus=function(){this.className=\"yminputfocus\";this.select();$c._fy();showB($d.yD)};$d.yI.onblur=function(){var $;if($lastInput==this){$dt.y=pIntDef(this.value,$dt.y);$=true}c_y($dt.y,$);this.className=\"yminput\";hide($d.yD)};$d.HI.onfocus=function(){$c.currFocus=this;this.select();$c._fH();showB($d.HD)};$d.HI.onblur=function(){var $;if($lastInput==this){$dt.H=pIntDef(this.value,$dt.H);$=true}c_H($dt.H,$);hide($d.HD)};$d.mI.onfocus=function(){$c.currFocus=this;this.select();$c._fm();showB($d.mD)};$d.mI.onblur=function(){var $;if($lastInput==this){$dt.m=pIntDef(this.value,$dt.m);$=true}c_m($dt.m,$);hide($d.mD)};$d.sI.onfocus=function(){$c.currFocus=this;this.select();$c._fs();showB($d.sD)};$d.sI.onblur=function(){var $;if($lastInput==this){$dt.s=pIntDef(this.value,$dt.s);$=true}c_s($dt.s,$);hide($d.sD)};$d.HI.attachEvent(\"onkeydown\",A);$d.mI.attachEvent(\"onkeydown\",A);$d.sI.attachEvent(\"onkeydown\",A);$d.upButton.onclick=function(){updownEvent(1)};$d.downButton.onmousedown=function(){updownEvent(-1)};$d.qsDiv.onclick=function(){if($d.qsDivSel.style.display!=\"block\"){$c._fillQS();showB($d.qsDivSel)}else hide($d.qsDivSel)};attachTabEvent($d.okI,function(){$d.MI.focus();event.returnValue=false});document.body.appendChild($d);function _(){var A=$d.getElementsByTagName(\"div\"),$=$d.getElementsByTagName(\"input\"),B=$d.getElementsByTagName(\"button\"),_=$d.getElementsByTagName(\"span\");$d.navLeftImg=A[1];$d.leftImg=A[2];$d.rightImg=A[8];$d.navRightImg=A[7];$d.MI=$[0];$d.yI=$[1];$d.titleDiv=A[0];$d.MD=A[4];$d.yD=A[6];$d.qsDivSel=A[9];$d.dDiv=A[10];$d.tDiv=A[11];$d.HD=A[12];$d.mD=A[13];$d.sD=A[14];$d.qsDiv=A[15];$d.bDiv=A[16];$d.HI=$[2];$d.mI=$[4];$d.sI=$[6];$d.clearI=$[7];$d.todayI=$[8];$d.okI=$[9];$d.upButton=B[0];$d.downButton=B[1];$d.timeSpan=_[0]}function $(){$d.navLeftImg.onclick=function(){$ny=$ny<=0?$ny-1:-1;if($ny%5==0)$d.yI.focus();c_y($dt.y-1)};$d.leftImg.onclick=function(){var $=$dt.M;if($>1)$-=1;else{$=12;$dt.y-=1}s_y($dt.y);c_M($)};$d.rightImg.onclick=function(){var $=$dt.M;if($<12)$+=1;else{$=1;$dt.y+=1}s_y($dt.y);c_M($)};$d.navRightImg.onclick=function(){$ny=$ny>=0?$ny+1:1;if($ny%5==0)$d.yI.focus();c_y($dt.y+1)}}function A(){var $=event,_=($.which==undefined)?$.keyCode:$.which;if(!$OPERA&&!((_>=48&&_<=57)||(_>=96&&_<=105)||_==8||_==46||_==37||_==39||_==9))$.returnValue=false;$lastInput=$.srcElement}}My97DP.prototype={init:function(){$ny=0;$dp.cal=this;if($dp.readOnly&&$dp.el.readOnly!=null){$dp.el.readOnly=true;$dp.el.blur()}$();this.dateFmt=$dp.dateFmt;this._dealFmt();this.autoPickDate=$dp.autoPickDate||(($dp.has.st)?false:true);$tdt=this.tdate=new DPDate();this.ddateRe=this._initRe(\"disabledDates\");this.ddayRe=this._initRe(\"disabledDays\");this.loadDate();this.minDate=this.doCustomDate($dp.minDate,$dp.minDate!=$dp.defMinDate?$dp.realFmt:$dp.realFullFmt,$dp.defMinDate);this.maxDate=this.doCustomDate($dp.maxDate,$dp.maxDate!=$dp.defMaxDate?$dp.realFmt:$dp.realFullFmt,$dp.defMaxDate);if(this.minDate.compareWith(this.maxDate)>0)$dp.errMsg=$lang.err_1;this._makeDateInRange();$sdt=this.sdate=new DPDate($dt.y,$dt.M,$dt.d,$dt.H,$dt.m,$dt.s);if(!$dp.alwaysUseStartDate&&$dp.el[$dp.elProp]!=\"\")this.update();this.oldValue=$dp.el[$dp.elProp];setA($d.MI,\"realValue\",$dt.M);$d.MI.value=$lang.aMonStr[$dt.M-1];$d.yI.value=$dt.y;$d.HI.value=$dt.H;$d.mI.value=$dt.m;$d.sI.value=$dt.s;$d.timeSpan.innerHTML=$lang.timeStr;$d.clearI.value=$lang.clearStr;$d.todayI.value=$lang.todayStr;$d.okI.value=$lang.okStr;this.initShowAndHide();this.initBtn();if($dp.errMsg)alert($dp.errMsg);this.redraw();hideSel();if($dp.el.nodeType==1)$dp.attachEvent($dp.el,\"onkeydown\",function($){if($dp.dd.style.display!=\"none\"){k=($.which==undefined)?$.keyCode:$.which;if(k==9){if($dp.el[$dp.elProp]!=\"\")$c.update();hide($dp.dd)}}});function $(){var _,$;for(_=0;($=document.getElementsByTagName(\"link\")[_]);_++)if(getA($,\"rel\").indexOf(\"style\")!=-1&&getA($,\"title\")){$.disabled=true;if(getA($,\"title\")==$dp.skin)$.disabled=false}}},splitDate:function(J,C,O,E,B,G,F,K,L){var $;if(J&&J.loadDate)$=J;else{$=new DPDate();C=C||$dp.dateFmt;var H,N=0,A=/yyyy|yyy|yy|y|MM|M|dd|d|HH|H|mm|m|ss|s/g,M=J.split(/\\W+/),_=C.match(A);A.lastIndex=0;if(!L&&M.length!=_.length){var D=0,K=\"^\";while((M=A.exec(C))!==null){D=M.index-D;K+=(D==0)?\"\":(\".{\"+D+\"}\");D=A.lastIndex;switch(M[0]){case\"yyyy\":K+=\"(\\\\d{4})\";break;case\"yyy\":K+=\"(\\\\d{3})\";break;default:K+=\"(\\\\d\\\\d?)\";break}}K+=\".*$\";M=new RegExp(K).exec(J);N=1}if(M)for(H=0;H<_.length;H++){var I=M[H+N];if(I)switch(_[H]){case\"y\":case\"yy\":I=pIntDef(I,0);if(I<50)I+=2000;else I+=1900;$.y=I;break;case\"yyy\":$.y=pIntDef(I,0)+$dp.yearOffset;break;default:$[_[H].slice(-1)]=I;break}}}$.coverDate(O,E,B,G,F,K);return $},_initRe:function(_){var B,$=$dp[_],A=\"(?:\";if($){for(B=0;B<$.length;B++){A+=this.doExp($[B]);if(B!=$.length-1)A+=\"|\"}A=new RegExp(A+\")\")}else A=null;return A},update:function(){$dp.el[$dp.elProp]=this.getDateStr();this.setRealValue()},setRealValue:function($){var _=$dp.$($dp.vel),$=rtn($,this.getDateStr($dp.realFmt));if(_)_.value=$;setA($dp.el,\"realValue\",$)},doExp:function(s){var ps=\"yMdHms\",arr,tmpEval,re=/#\\{(.*?)\\}/;s=s+\"\";for(var i=0;i<ps.length;i++)s=s.replace(\"%\"+ps.charAt(i),this.getP(ps.charAt(i),null,$tdt));if(s.substring(0,3)==\"#F{\"){s=s.substring(3,s.length-1);if(s.indexOf(\"return \")<0)s=\"return \"+s;s=$dp.win.eval(\"new Function(\\\"\"+s+\"\\\");\");s=s()}else while((arr=re.exec(s))!=null){arr.lastIndex=arr.index+arr[1].length+2;tmpEval=pInt(eval(arr[1]));if(tmpEval<0)tmpEval=\"9700\"+(-tmpEval);s=s.substring(0,arr.index)+tmpEval+s.substring(arr.lastIndex+1)}return s},doCustomDate:function(A,B,_){var $;A=this.doExp(A);if(!A||A==\"\")A=_;if(typeof A==\"object\")$=A;else{$=this.splitDate(A,B,null,null,1,0,0,0,true);$.y=(\"\"+$.y).replace(/^9700/,\"-\");$.M=(\"\"+$.M).replace(/^9700/,\"-\");$.d=(\"\"+$.d).replace(/^9700/,\"-\");$.H=(\"\"+$.H).replace(/^9700/,\"-\");$.m=(\"\"+$.m).replace(/^9700/,\"-\");$.s=(\"\"+$.s).replace(/^9700/,\"-\");if(A.indexOf(\"%ld\")>=0){A=A.replace(/%ld/g,\"0\");$.d=0;$.M=pInt($.M)+1}$.refresh()}return $},loadDate:function(){var _,$;if($dp.alwaysUseStartDate||($dp.startDate!=\"\"&&$dp.el[$dp.elProp]==\"\")){_=this.doExp($dp.startDate);$=$dp.realFmt}else{_=$dp.el[$dp.elProp];$=this.dateFmt}$dt.loadFromDate(this.splitDate(_,$));if($dp.has.sd&&!this.isDate($dt)){$dt.y=$tdt.y;$dt.M=$tdt.M;$dt.d=$tdt.d}if($dp.has.st&&!this.isTime($dt)){$dt.H=$tdt.H;$dt.m=$tdt.m;$dt.s=$tdt.s}},isDate:function($){if($.y!=null)$=doStr($.y,4)+\"-\"+$.M+\"-\"+$.d;return $.match(/^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$/)},isTime:function($){if($.H!=null)$=$.H+\":\"+$.m+\":\"+$.s;return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},_makeDateInRange:function(){var _=this.checkRange(),A=true;if(_!=0){A=false;var $;if(_>0)$=this.maxDate;else $=this.minDate;if($dp.has.sd){$dt.y=$.y;$dt.M=$.M;$dt.d=$.d}if($dp.has.st){$dt.H=$.H;$dt.m=$.m;$dt.s=$.s}}return A},checkRange:function(A,$){$=$||$dt;var _=$.compareWith(this.minDate,A);if(_>0){_=$.compareWith(this.maxDate,A);if(_<0)_=0}return _},checkValid:function($,A,B){A=A||$dp.has.minUnit;var _=this.checkRange(A,$);if(_==0){if(A==\"d\"&&B==null)B=new Date($.y,$.M-1,$.d).getDay();_=!this.testDay(B)&&!this.testDate($)}else _=false;return _},_fd:function(){var F,D,E,L,H=new sb(),G,A,I,C,K=\"\",$=\"\",_=new DPDate($dt.y,$dt.M,$dt.d,0,0,0),J=_.y,B=_.M;G=new Date(J,B-1,1).getDay();A=1-G;I=new Date(J,B,0).getDay();C=new Date(J,B,0).getDate();H.a(\"<table class=WdayTable width=100% border=0 cellspacing=0 cellpadding=0>\");H.a(\"<tr class=MTitle align=center>\");F=$dp.isShowWeek?0:1;while(F<8)H.a(\"<td>\"+$lang.aWeekStr[F++]+\"</td>\");H.a(\"</tr>\");for(F=1,D=A;F<7;F++){H.a(\"<tr>\");for(E=0;E<7;E++){_.loadDate(J,B,D++);_.refresh();if(_.M==B){L=true;if(_.compareWith($sdt,\"d\")==0)K=\"Wselday\";else if(_.compareWith($tdt,\"d\")==0)K=\"Wtoday\";else K=(($dp.highLineWeekDay&&(E==0||E==6))?\"Wwday\":\"Wday\");$=(($dp.highLineWeekDay&&(E==0||E==6))?\"WwdayOn\":\"WdayOn\")}else if($dp.isShowOthers){L=true;K=\"WotherDay\";$=\"WotherDayOn\"}else L=false;if($dp.isShowWeek&&E==0&&(F<4||L))H.a(\"<td class=Wweek>\"+getWeek(_)+\"</td>\");H.a(\"<td align=center \");if(L){if(this.checkValid(_,\"d\",E)){H.a(\"onclick=\\\"day_Click(\"+_.y+\",\"+_.M+\",\"+_.d+\");\\\" \");H.a(\"onmouseover=\\\"this.className='\"+$+\"'\\\" \");H.a(\"onmouseout=\\\"this.className='\"+K+\"'\\\" \")}else K=\"WinvalidDay\";H.a(\"class=\"+K);H.a(\">\"+_.d+\"</td>\")}else H.a(\"></td>\")}H.a(\"</tr>\")}H.a(\"</table>\");return H.j()},testDate:function(_){var $=this.ddateRe&&this.ddateRe.test(this.getDateStr($dp.realFmt,_));if($dp.disabledDates&&$dp.opposite)$=!$;return $},testDay:function(_){var $=this.ddayRe&&this.ddayRe.test(_);if($dp.disabledDays&&$dp.opposite)$=!$;return $},_f:function(p,c,r,e){var s=new sb();bak=$dt[p];s.a(\"<table cellspacing=0 cellpadding=3 border=0\");for(var i=0;i<r;i++){s.a(\"<tr nowrap=\\\"nowrap\\\">\");for(var j=0;j<c;j++){s.a(\"<td align=right \");$dt[p]=eval(e);if(this.checkValid($dt,p)){s.a(\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"\");s.a(\"hide($d.\"+p+\"D);c_\"+p+\"(\"+$dt[p]+\");$d.\"+p+\"I.blur()\\\"\")}else s.a(\"class='invalidMenu'\");s.a(\">\"+(p==\"M\"?$lang.aMonStr[$dt[p]-1]:$dt[p])+\"</td>\")}s.a(\"</tr>\")}s.a(\"</table>\");$dt[p]=bak;return s.j()},_fM:function(){$d.MD.innerHTML=this._f(\"M\",2,6,\"i+j*6+1\")},_fy:function(_){var B,A=$dt.y,$=new sb();_=rtn(_,A-5);$.a(this._f(\"y\",2,5,_+\"+i+j*5\"));$.a(\"<table cellspacing=0 cellpadding=3 border=0 width=100%><tr><td \");$.a(this.minDate.y<_?\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown='event.cancelBubble=true;$c._fy(\"+(_-10)+\")'\":\"class='invalidMenu'\");$.a(\">\\u2190</td><td align=center class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"hide($d.yD);$d.yI.blur();\\\">\\xd7</td><td align=right \");$.a(this.maxDate.y>_+10?\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown='event.cancelBubble=true;$c._fy(\"+(_+10)+\")'\":\"class='invalidMenu'\");$.a(\">\\u2192</td></tr></table>\");$d.yD.innerHTML=$.j()},_fHMS:function(A,_,$){$d[A+\"D\"].innerHTML=this._f(A,6,_,$)},_fH:function(){this._fHMS(\"H\",4,\"i * 6 + j\")},_fm:function(){this._fHMS(\"m\",2,\"i * 30 + j * 5\")},_fs:function(){this._fHMS(\"s\",1,\"j * 10\")},_fillQS:function(A){this.initQS();var _=$d.qsDivSel,C=_.style,$=new sb();$.a(\"<table class=WdayTable width=\\\"\"+$d.dDiv.offsetWidth+\"px\\\" height=\\\"\"+$d.dDiv.offsetHeight+\"px\\\" border=0 cellspacing=0 cellpadding=0>\");$.a(\"<tr class=MTitle><td><div style=\\\"float:left\\\">\"+$lang.quickStr+\"</div>\");if(!A)$.a(\"<div style=\\\"float:right;cursor:pointer\\\" onclick=\\\"hideSel();hide($d.qsDivSel);\\\">\\xd7</div>\");$.a(\"</td></tr>\");for(var B=0;B<this.QS.length;B++)if(this.QS[B]){$.a(\"<tr><td nowrap='nowrap' class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"\");$.a(\"hideSel();hide($d.qsDivSel);day_Click(\"+this.QS[B].y+\", \"+this.QS[B].M+\", \"+this.QS[B].d+\",\"+this.QS[B].H+\",\"+this.QS[B].m+\",\"+this.QS[B].s+\");\\\">\");$.a(\"&nbsp;\"+this.getDateStr(null,this.QS[B]));$.a(\"</td></tr>\")}else $.a(\"<tr><td class='menu'>&nbsp;</td></tr>\");$.a(\"</table>\");_.innerHTML=$.j()},_dealFmt:function(){$(/yyyy|yyy|yy|y/);$(/MM|M/);$(/dd|d/);$(/HH|H/);$(/mm|m/);$(/ss|s/);$dp.has.sd=($dp.has.y||$dp.has.M||$dp.has.d)?true:false;$dp.has.st=($dp.has.H||$dp.has.m||$dp.has.s)?true:false;$dp.realFullFmt=$dp.realFullFmt.replace(/%Date/,$dp.realDateFmt).replace(/%Time/,$dp.realTimeFmt);if($dp.has.sd){if($dp.has.st)$dp.realFmt=$dp.realFullFmt;else $dp.realFmt=$dp.realDateFmt}else $dp.realFmt=$dp.realTimeFmt;function $(_){var $=(_+\"\").slice(1,2);$dp.has[$]=_.exec($dp.dateFmt)?($dp.has.minUnit=$,true):false}},initShowAndHide:function(){var $=false;$dp.has.y?($=true,show($d.yI,$d.navLeftImg,$d.navRightImg)):hide($d.yI,$d.navLeftImg,$d.navRightImg);$dp.has.M?($=true,show($d.MI,$d.leftImg,$d.rightImg)):hide($d.MI,$d.leftImg,$d.rightImg);$?show($d.titleDiv):hide($d.titleDiv);if($dp.has.st){show($d.tDiv);disHMS($d.HI,$dp.has.H);disHMS($d.mI,$dp.has.m);disHMS($d.sI,$dp.has.s)}else hide($d.tDiv);shorH($d.clearI,$dp.isShowClear);shorH($d.todayI,$dp.isShowToday);shorH($d.qsDiv,($dp.has.d&&$dp.qsEnabled));if($dp.eCont)hide($d.bDiv)},mark:function(B){if($cMark){$cMark=false;return}var A=$dp.el,_=$FF?\"class\":\"className\";if(B)C(A);else switch($dp.errDealMode){case 0:$cMark=true;if(confirm($lang.errAlertMsg)){A[$dp.elProp]=this.oldValue;C(A)}else $(A);break;case 1:A[$dp.elProp]=this.oldValue;C(A);break;case 2:$(A);break}function C(A){var $=A.className.replace(/WdateFmtErr/g,\"\");if(A.className!=$)setA(A,_,$)}function $($){setA($,_,$.className+\" WdateFmtErr\")}},getP:function(C,_,$){$=$||$dt;var E,B,D,A;switch(C.charAt(0)){case\"w\":A=getDay($);break;case\"D\":B=[C];A=$lang.aWeekStr[getDay($)+1];break;case\"W\":A=getWeek($);break;case\"y\":B=[\"yyyy\",\"yyy\",\"yy\",\"y\"];break;default:break}B=B||[C+C,C];_=_||B[0];for(E=0;E<B.length;E++){A=rtn(A,$[C]);D=B[E];if(_.indexOf(D)>=0)_=_.replace(D,doStr((C==\"y\"&&D.length<4)?(D.length<3?$.y%100:($.y+2000-$dp.yearOffset)%1000):A,D.length))}return _},getDateStr:function(_,$){$=$||$dt;_=_||this.dateFmt;var A=\"yMdHmswWD\";for(var B=0;B<A.length;B++)_=this.getP(A.charAt(B),_,$);return _},redraw:function(){$d.dDiv.innerHTML=this._fd();if(!$dp.has.d){this._fillQS(true);showB($d.qsDivSel)}else hide($d.qsDivSel);this.autoSize()},autoSize:function(){var $=parent.document.getElementsByTagName(\"iframe\");for(var _=0;_<$.length;_++)if($[_].contentWindow==window){$[_].style.width=$d.offsetWidth+\"px\";$[_].style.height=$d.offsetHeight+\"px\"}},pickDate:function(D,A,$,C,B,_){$dt.y=rtn(D,$dt.y);$dt.M=rtn(A,$dt.M);$dt.d=rtn($,$dt.d);if($dp.has.st){$dt.H=rtn(C,$dt.H);$dt.m=rtn(B,$dt.m);$dt.s=rtn(_,$dt.s)}while(!this.isDate($dt)&&$dt.d>0)$dt.d--;if(!$dp.eCont){this.update();if(this.checkValid($dt)){$c.mark(true);hide($dp.dd)}else $c.mark(false)}if($dp.onpicked)$dp.onpicked.call($dp.el,$dp);else if(this.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,\"change\")},initBtn:function(){$d.clearI.onclick=function(){var $;if($dp.onclearing)$=$dp.onclearing.call($dp.el,$dp);if(!$){$dp.el[$dp.elProp]=\"\";$c.setRealValue(\"\");hide($dp.dd);if($dp.oncleared)$dp.oncleared.call($dp.el,$dp);else if($c.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,\"change\")}};$d.okI.onclick=function(){day_Click()};if($dp.el[$dp.elProp]==\"\")$d.okI.value=$lang.okStr;else $d.okI.value=$lang.updateStr;if(this.checkValid($tdt)){$d.todayI.disabled=false;$d.todayI.onclick=function(){var $=$c.tdate;day_Click($.y,$.M,$.d,$.H,$.m,$.s)}}else $d.todayI.disabled=true},initQS:function(){var H,G,A,F,C=[],$=5,E=$dp.quickSel.length,_=$dp.has.minUnit;if(E>$)E=$;else if(_==\"m\"||_==\"s\")C=[0,15,30,45,59,-60,-45,-30,-15,-1];else for(H=0;H<$*2;H++)C[H]=$dt[_]-$+1+H;for(H=G=0;H<E;H++){A=this.doCustomDate($dp.quickSel[H]);if(this.checkValid(A))this.QS[G++]=A}var B=\"yMdHms\",D=[1,1,1,0,0,0];for(H=0;H<=B.indexOf(_);H++)D[H]=$dt[B.charAt(H)];for(H=0;G<$;H++)if(H<C.length){A=new DPDate(D[0],D[1],D[2],D[3],D[4],D[5]);A[_]=C[H];A.refresh();if(this.checkValid(A))this.QS[G++]=A}else this.QS[G++]=null}};function sb(){this.s=new Array();this.i=0;this.a=function($){this.s[this.i++]=$};this.j=function(){return this.s.join(\"\")}}function getWeek($){var _=new Date($.y,$.M-1,$.d),B=_.getDay();_.setDate(_.getDate()-(B+6)%7+3);var A=_.valueOf();_.setMonth(0);_.setDate(4);return Math.round((A-_.valueOf())/(7*86400000))+1}function getDay($){var _=new Date($.y,$.M-1,$.d);return _.getDay()}function show(){setDisp(arguments,\"\")}function showB(){setDisp(arguments,\"block\")}function hide(){setDisp(arguments,\"none\")}function setDisp(_,$){for(i=0;i<_.length;i++)_[i].style.display=$}function shorH(_,$){$?show(_):hide(_)}function disHMS(_,$){if($)_.disabled=\"\";else{_.disabled=\"disabled\";_.value=\"00\"}}function c_y(_,$){if($||_!=$dt.y){$dt.y=_;dealRange(\"y\");$c.redraw()}}function c_M(_,$){_=makeInRange(_,1,12);if($||_!=$dt.M){$dt.M=_;dealRange(\"M\");$c.redraw()}else s_M(_)}function day_Click(F,A,$,D,B,_){var C;if($dp.onpicking)C=$dp.onpicking.call($dp.el,$dp);if(!C){var E=$sdt.y==F&&$sdt.M==A&&$sdt.d==$;if(!E&&arguments.length!=0){$sdt.y=F;$sdt.M=A;s_y(F);s_M(A);c_d($,true)}if($c.autoPickDate||E||arguments.length==0)$c.pickDate(F,A,$,D,B,_)}}function c_d($,_){if(_||$!=$dt.d){$dt.d=$;dealRange(\"d\");$c.redraw()}}function c_H(_,$){_=makeInRange(_,0,23);if($||_!=$dt.H){$dt.H=_;dealRange(\"H\")}}function c_m(_,$){_=makeInRange(_,0,59);if($||_!=$dt.m){$dt.m=_;dealRange(\"m\")}}function c_s(_,$){_=makeInRange(_,0,59);if($||_!=$dt.s){$dt.s=_;dealRange(\"s\")}}function dealRange(type){var func,rv,v;func=\"s_\"+type+\"($dt.\"+type+\")\";rv=$c.checkRange();if(rv==0)eval(func);else if(rv<0)_setAll($c.minDate);else if(rv>0)_setAll($c.maxDate);function _setAll($){s_y($.y);s_M($.M);s_d($.d);if($dp.has.st){s_H($.H);s_m($.m);s_s($.s)}}}function s_y($){$dt.y=$d.yI.value=$}function s_M($){$dt.M=$;setA($d.MI,\"realValue\",$);$d.MI.value=$lang.aMonStr[$-1]}function s_d($){$sdt.d=$dt.d=$}function s_H($){$dt.H=$d.HI.value=$}function s_m($){$dt.m=$d.mI.value=$}function s_s($){$dt.s=$d.sI.value=$}function setA(A,_,$){if(A.setAttribute)A.setAttribute(_,$)}function getA(_,$){return _.getAttribute($)}function makeInRange(_,$,A){if(_<$)_=$;else if(_>A)_=A;return _}function attachTabEvent($,_){$.attachEvent(\"onkeydown\",function(){var $=event,A=($.which==undefined)?$.keyCode:$.which;if(A==9)_()})}function doStr($,_){$=$+\"\";while($.length<_)$=\"0\"+$;return $}function hideSel(){hide($d.yD,$d.MD,$d.HD,$d.mD,$d.sD)}function updownEvent($){if($c.currFocus==undefined)$c.currFocus=$d.mI;switch($c.currFocus){case $d.HI:c_H($dt.H+$);break;case $d.mI:c_m($dt.m+$);break;case $d.sI:c_s($dt.s+$);break}}function DPDate(D,A,$,C,B,_){this.loadDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(E,$.getFullYear());this.M=pIntDef(B,$.getMonth()+1);this.d=pIntDef(_,$.getDate());this.H=pIntDef(D,$.getHours());this.m=pIntDef(C,$.getMinutes());this.s=pIntDef(A,$.getSeconds())};this.loadFromDate=function($){if($==null)return;this.loadDate($.y,$.M,$.d,$.H,$.m,$.s)};this.coverDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(this.y,rtn(E,$.getFullYear()));this.M=pIntDef(this.M,rtn(B,$.getMonth()+1));this.d=$dp.has.d?pIntDef(this.d,rtn(_,$.getDate())):1;this.H=pIntDef(this.H,rtn(D,$.getHours()));this.m=pIntDef(this.m,rtn(C,$.getMinutes()));this.s=pIntDef(this.s,rtn(A,$.getSeconds()))};this.compareWith=function($,C){var A=\"yMdHms\",_,B;C=A.indexOf(C);C=C>=0?C:5;for(var D=0;D<=C;D++){B=A.charAt(D);_=this[B]-$[B];if(_>0)return 1;else if(_<0)return-1}return 0};this.refresh=function(){var $=new Date(this.y,this.M-1,this.d,this.H,this.m,this.s);this.y=$.getFullYear();this.M=$.getMonth()+1;this.d=$.getDate();this.H=$.getHours();this.m=$.getMinutes();this.s=$.getSeconds();return!isNaN(this.y)};this.loadDate(D,A,$,C,B,_)}function pInt($){return parseInt($,10)}function pIntDef(_,$){_=pInt(_);if(isNaN(_))_=$;return _}function rtn($,_){return $==null?_:$}function fireEvent(A,$){if($IE)A.fireEvent(\"on\"+$);else{var _=document.createEvent(\"HTMLEvents\");_.initEvent($,true,true);A.dispatchEvent(_)}}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/config.js",
    "content": "var langList = \n[\n\t{name:'en',\t\tcharset:'UTF-8'},\n\t{name:'zh-cn',\tcharset:'gb2312'},\n\t{name:'zh-tw',\tcharset:'GBK'}\n];\n\nvar skinList = \n[\n\t{name:'default',\tcharset:'gb2312'},\n\t{name:'whyGreen',\tcharset:'gb2312'}\n];"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"Ϸڸʽڳ޶Χ,Ҫ?\",\naWeekStr: [\"\",\"\",\"һ\",\"\",\"\",\"\",\"\",\"\"],\naMonStr: [\"һ\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"ʮ\",\"ʮһ\",\"ʮ\"],\nclearStr: \"\",\ntodayStr: \"\",\nokStr: \"ȷ\",\nupdateStr: \"ȷ\",\ntimeStr: \"ʱ\",\nquickStr: \"ѡ\", \nerr_1: 'Сڲܴ!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"Ϸڸʽڳ޶,ҪN?\",\naWeekStr: [\"\",\"\",\"һ\",\"\",\"\",\"\",\"\",\"\"],\naMonStr: [\"һ\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"ʮ\",\"ʮһ\",\"ʮ\"],\nclearStr: \"\",\ntodayStr: \"\",\nokStr: \"_\",\nupdateStr: \"_\",\ntimeStr: \"rg\",\nquickStr: \"x\",\nerr_1: 'Сڲܴ!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/readme.txt",
    "content": "ע:˰汾Ϊ 4.1 ʽ build 20081110\n\nʾʹ˵,󲿷ⶼͨ,ϸ\nhttp://www.my97.net/dp/demo/\n\n\n(ʱ,һҪصHTMLϸĴϢ):\nwww.my97.net/dp/support.asp\n\n\n\nhttp://my97.cnblogs.com\nhttp://blog.csdn.net/my97/\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/skin/default/datepicker.css",
    "content": "/* \n * My97ڿؼ My97 DatePicker Ver 4.0\n * Ƥ:default\n * Ƥ:My97\n */\n\n/* ѡ DIV */\n.WdateDiv{\n\twidth:220px;\n\tbackground-color:#f2f2f2;\n\tborder:#808080 1px solid;\n\tpadding:2px;\n\tfilter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='#cccccc');\n\tfont-family:Arial;\n}\n.WdateDiv *{font-size:9pt;font-family:Arial;}\n\n/****************************\n * ͼ\n ***************************/\n.WdateDiv .NavImg {\n\tcursor:pointer;\n\twidth:18px;\n\theight:16px;\n\tmargin-top:4px;\n}\n.WdateDiv .NavImgll {\n\tbackground:url(navLeft.gif) no-repeat;\n}\n.WdateDiv .NavImgl {\n\tbackground:url(left.gif) no-repeat;\n}\n.WdateDiv .NavImgr {\n\tbackground:url(right.gif) no-repeat;\n}\n.WdateDiv .NavImgrr {\n\tbackground:url(navRight.gif) no-repeat;\n}\n\n/****************************\n * ·\n ***************************/\n/* · DIV */\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tbackground:#f2f2f2;\n\tmargin-left:5px;\n}\n/*  INPUT */\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\tcursor:pointer;\n\tbackground:#f2f2f2;\n\tvertical-align:middle;\n\n}\n/* · INPUT */\n.WdateDiv .yminput_date{\n\tmargin-top:2px;\n\tmargin-left:10px;\n\tpadding-top:3px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\tcursor:pointer;\n\tbackground:#f2f2f2;\n\tvertical-align:middle;\n\n}\n\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus2{\n\tmargin-top:2px;\n\tmargin-left:10px;\n\tpadding-top:3px;\n\ttext-align:center;\n\tfont-weight:bold;\n\tcolor:blue;\n\tborder:#808080 1px solid;\n\theight:16px;\n}\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\tcolor:blue;\n\tborder:#808080 1px solid;\n\theight:16px;\n}\n/* ˵ѡ DIV */\n.WdateDiv .menuSel{\n\tposition:absolute;\n\ttop:10px;\n\tbackground-color:#FFFFFF;\t\n\tborder:#808080 1px solid;\n\tdisplay:none;\n\tfilter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='#cccccc');\n}\n/* ˵ʽ TD */\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\ttext-align:center;\n}\n/* ˵mouseoverʽ TD */\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\ttext-align:center;\n}\n/* ˵Чʱʽ TD */\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n/* ѡƫ DIV */\n.WdateDiv .YMenu{\n\tmargin-top:16px;\n\t\n}\n/* ѡƫ DIV */\n.WdateDiv .MMenu{\n\tmargin-top:16px;\n\twidth:62px;\n}\n/* ʱѡλ DIV */\n.WdateDiv .hhMenu{\n\tmargin-top:90px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .mmMenu{\n\tmargin-top:130px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n/****************************\n * \n ***************************/\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#c1e1dd;\n }\n/****************************\n * ,\n ***************************/\n/*  TR */\n.WdateDiv .MTitle{\n\tbackground-color:#f2f2f2;\n\tborder-bottom:#ccc 1px solid;\n\tfont-weight:bold;\n}\n/*  TABLE */\n.WdateDiv .WdayTable{\n\tline-height:23px;\n}\n/* ڸʽ TD */\n.WdateDiv .Wday{\n\tcursor:pointer;\n\tcolor:#0066cc;\n\tfont-size:14px;\n\t\n}\n/* ڸmouseoverʽ TD */\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\tfont-size:14px;\n\ttext-align:center;\n}\n/* ĩڸʽ TD */\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#0066cc;\n\tfont-size:14px;\n\t\n}\n/* ĩڸmouseoverʽ TD */\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#fff;\n\tbackground-color:#ff7800;\n\tfont-size:14px;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n\tfont-size:14px;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\tfont-size:14px;\n\ttext-align:center;\n}\n/* ·ݵ */\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#a6a6a6;\t\n\tbackground:#e3e3e3;\n\tfont-size:14px;\n}\n/* ·ݵmouseoverʽ */\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#bebdbd;\n\tcolor:#fff;\n\tfont-size:14px;\n}\n/* Чڵʽ,ڷΧڸʽ,ѡ */\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n\tfont-size:14px;\n}\n\n/****************************\n * ʱ\n ***************************/\n/* ʱ DIV */\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\twidth:80%;\n\n}\n/* ʱ SPAN */\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:2px;\n}\n/* ʱ INPUT */\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n/* ʱ ʱ INPUT */\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n/* ʱ ֺͼ ':' INPUT */\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱ  INPUT */\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱұߵϰť BUTTON */\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground-image:url(up.jpg);\n}\n/* ʱұߵ°ť BUTTON */\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground-image:url(down.jpg);\n}\n/****************************\n * \n ***************************/\n .WdateDiv #dpQS {\n\tmargin-top:3px;\n\tbackground:url(date.gif) no-repeat right;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n\tfloat:right;\n\n }\n.WdateDiv #dpControl {\n\ttext-align:left;\n\tmargin-top:3px;\n\tclear:both;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tpadding:2px 5px 2px 2px;\n\tmargin:3px 15px 3px 5px;\n\tfloat:right;\n\tborder:1px solid #808080;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/datepicker/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.1\n * Ƥ:whyGreen\n * Ƥ:why\n */\n \n/* ѡ DIV */\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n.WdateDiv *{font-size:9pt;}\n\n/****************************\n * ͼ\n ***************************/\n.WdateDiv .NavImg {\n\tcursor:pointer;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n.WdateDiv .NavImgll { background:url(img.gif) no-repeat; }\n.WdateDiv .NavImgl  { background:url(img.gif) no-repeat -16px 0px; }\n.WdateDiv .NavImgr  { background:url(img.gif) no-repeat -32px 0px; }\n.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; }\n/****************************\n * ·\n ***************************/\n/* · DIV */\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n/* · INPUT */\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:16px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:16px;\n\twidth:50px;\n}\n/* ˵ѡ DIV */\n.WdateDiv .menuSel{\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n/* ˵ʽ TD */\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n/* ˵mouseoverʽ TD */\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n/* ˵Чʱʽ TD */\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n/* ѡƫ DIV */\n.WdateDiv .YMenu{\n\tmargin-top:16px;\n}\n/* ѡƫ DIV */\n.WdateDiv .MMenu{\n\tmargin-top:16px;\n\t*width:62px;\n}\n/* ʱѡλ DIV */\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n/****************************\n * \n ***************************/\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n/****************************\n * ,\n ***************************/\n /*  TR */\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n/*  TABLE */\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n/* ڸʽ TD */\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n/* ڸmouseoverʽ TD */\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n/* ĩڸʽ TD */\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n/* ĩڸmouseoverʽ TD */\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n/* ·ݵ */\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n/* ·ݵmouseoverʽ */\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n/* Чڵʽ,ڷΧڸʽ,ѡ */\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n/****************************\n * ʱ\n ***************************/\n/* ʱ DIV */\n.WdateDiv #dpTime{\n\t\n}\n/* ʱ SPAN */\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n/* ʱ INPUT */\n.WdateDiv #dpTime input{\n\theight:16px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n/* ʱ ʱ INPUT */\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n/* ʱ ֺͼ ':' INPUT */\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱ  INPUT */\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱұߵϰť BUTTON */\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n/* ʱұߵ°ť BUTTON */\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n/****************************\n * \n ***************************/\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tpadding:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/ckdtree/api.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree &raquo; Api</title>\n\n\t<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\" />\n\t<link rel=\"stylesheet\" href=\"/dd.css\" type=\"text/css\" />\n\t<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n</head>\n\n<body>\n\n<div id=\"shadow\">\n\n\t<div id=\"content\">\n\n\t\t<div id=\"location\">\n\t\t\t<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a> &raquo; <a href=\"/javascripts/tree/api/\">Api</a></h1>\n\t\t</div>\n\n\n\t\t<div class=\"line\"></div>\n\n\t\t<div id=\"files\">\n\n\n<h3>Overview</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<ul class=\"arrow\">\n\t\t<li><a href=\"#functions\">Functions</a>\n\t\t\t<ul class=\"arrow\">\n\t\t\t\t<li><a href=\"#add\">add</a></li>\n\t\t\t\t<li><a href=\"#openall\">openAll</a></li>\n\t\t\t\t<li><a href=\"#closeall\">closeAll</a></li>\n\t\t\t\t<li><a href=\"#opento\">openTo</a></li>\n\t\t\t</ul>\n\t\t</li>\n\t\t<li><a href=\"#configuration\">Configuration</a></li>\n\t</ul>\n\n</div>\n\n<a name=\"functions\"></a>\n<h3>Functions</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<a name=\"add\"></a>\n\t<h4 class=\"func\">add()</h4>\n\t<p>Adds a node to the tree.<br />Can only be called before the tree is drawn.</p>\n\t<p>id, pid and name are required.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Unique identity number.</td>\n\t</tr>\n\t<tr>\n\t\t<td>pid</td>\n\t\t<td>Number</td>\n\t\t<td>Number refering to the parent node. The value for the root node has to be -1.</td>\n\t</tr>\n\t<tr>\n\t\t<td>name</td>\n\t\t<td>String</td>\n\t\t<td>Text label for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>url</td>\n\t\t<td>String</td>\n\t\t<td>Url for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>title</td>\n\t\t<td>String</td>\n\t\t<td>Title for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>Target for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>icon</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>iconOpen</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the open icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>open</td>\n\t\t<td>Boolean</td>\n\t\t<td>Is the node open.</td>\n\t</tr>\n\t</table>\n\t<br />\n\n\n\t<h4>Example</h4>\n\t<p><code>mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');</code></p>\n\t<br />\n\n\t<a name=\"openall\"></a>\n\t<h4 class=\"func\">openAll()</h4>\n\t<p>Opens all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.openAll();</code></p>\n\t<br />\n\n\n\t<a name=\"closeall\"></a>\n\t<h4 class=\"func\">closeAll()</h4>\n\t<p>Closes all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.closeAll();</code></p>\n\t<br />\n\n\n\t<a name=\"opento\"></a>\n\t<h4 class=\"func\">openTo()</h4>\n\t<p>Opens the tree to a certain node and can also select the node.<br />\n\tCan only be called after the tree is drawn.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Identity number for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>select</td>\n\t\t<td>Boolean</td>\n\t\t<td>Should the node be selected.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.openTo(4, true);</code></p>\n\n</div>\n\n<a name=\"configuration\"></a>\n<h3>Configuration</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Variable</th>\n\t\t<th>Type</th>\n\t\t<th>Default</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>true</td>\n\t\t<td>Target for all the nodes.</td>\n\t</tr>\n\t<tr>\n\t\t<td>folderLinks</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Should folders be links.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useSelection</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Nodes can be selected(highlighted).</td>\n\t</tr>\n\t<tr>\n\t\t<td>useCookies</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>The tree uses cookies to rember it's state.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useLines</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with lines.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useIcons</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with icons.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useStatusText</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Displays node names in the statusbar instead of the url.</td>\n\t</tr>\n\t<tr>\n\t\t<td>closeSameLevel</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Only one node within a parent can be expanded at the same time.  openAll() and closeAll() functions do not work when this is enabled.</td>\n\t</tr>\n\t<tr>\n\t\t<td>inOrder</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>If parent nodes are always added before children, setting this to true speeds up the tree.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.config.target = \"mytarget\";</code></p>\n\n</div>\n\n\t\t</div>\n\n\t\t<div class=\"line\"></div>\n\n\n\t\t<div id=\"copy\">\n\t\t\t<p class=\"right\"><a href=\"http://validator.w3.org/check/referer\">XHTML</a>, <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">CSS</a></p>\n\t\t\t<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\t\t</div>\n\n\t</div>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/ckdtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr?              |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.cbbox {\n\theight: 13px;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}\n.dtree .cx {\n\tpadding:0px; \n\tmargin:0px;\n\twidth:16px;\n\theight:12px;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/ckdtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr?              |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\n\r\n// Tree object\r\r\nfunction dTree(objName, iPath, formId) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t\t: null,\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t\t: false,\r\n\t\tuseCheckBox\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t: false,\r\r\n\t\tinOrder\t\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'/img/base.gif',\r\r\n\t\tfolder\t\t\t: iPath+'/img/folder.gif',\r\r\n\t\tfolderOpen\t: iPath+'/img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'/img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'/img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'/img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'/img/join.gif',\r\r\n\t\tjoinBottom\t: iPath+'/img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'/img/plus.gif',\r\r\n\t\tplusBottom\t: iPath+'/img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'/img/minus.gif',\r\r\n\t\tminusBottom\t: iPath+'/img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t: iPath+'/img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t: iPath+'/img/nolines_minus.gif'\r\r\n\t};\r\n\tthis.parEnum = \"\";\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\t\r\n\tthis.formId = (formId==null)?\"dTreeForm\":formId;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\"><form id=\"'+this.formId+'\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</form></div>';\r\n\t//document.getElementById(\"test\").value = str;\r\n\t//alert(str);\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tif(this.aNodes[n].pid == 0){\r\n\t\t\t\tthis.parEnum = \"\";\r\n\t\t\t}\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\n\t//alert(\"nodeId = \" + nodeId + \" | parentId = \" + node.pid + \" | nodeId = \" + node.id);\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\t\r\n\tif(this.config.useCheckBox && nodeId!=0){\r\n\t\tif(node.pid==0){\r\n\t\t\tthis.parEnum += node.id + \"-\";\r\n\t\t}\r\n\t\telse{\r\n\t\t\t//alert(\"parEnum1 = \" + this.parEnum + \"node id = \" + node.pid);\t\r\n\t\t\tvar pL = this.parEnum.indexOf(node.pid+\"-\");\r\n\t\t\t//alert(this.parEnum.substring(0,pL+(node.pid+\"-\").length))\r\n\t\t\tthis.parEnum = this.parEnum.substring(0,pL+(node.pid+\"-\").length) + node.id + \"-\";\t\t\r\n\t\t\t//alert(\"parEnum2 = \" + this.parEnum);\t\r\n\t\t}\r\n\r\n\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"id\" id=\"c'+this.parEnum+'\" onClick=\"caBox(\\''+this.formId+'\\',\\'c'+this.parEnum+'\\')\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t}\r\n\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\n\t\r\n\tstr += node.name;\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\n\t\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};\r\n\r\n\t\t/* checkbox tree */\r\n\t\tfunction caBox(formId, regx ) {\r\n\t\t\tif( document.getElementById( regx ).checked ){\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t\t// checked next node \r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\tfor(j=0;j<regxArray.length;j++){\r\n\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-1]+\"-\"));\r\n\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\tdocument.getElementById(pDiv).checked=true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\t// unChecked\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t\t// elements's all child set checked false;\r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = false;\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\t// c7 8\r\n\t\t\t\tfor(j=0;j<regxArray.length-1;j++){\r\n\t\t\t\t\tif( !isCheckedByRec(form, regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"))) ){\r\n\t\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"));\r\n\t\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\t\tdocument.getElementById(pDiv).checked=false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isCheckedByRec( form ,regx){\r\n\t\t\t//alert(\"isCheckedByRec = \" + regx);\r\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t// isChecked\r\n\t\t\t\t\tif(element.id.indexOf(regx)!=-1 && element.checked && element.id!=regx ){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//alert(\"c1-7-\".indexOf(\"1-\"));\r\n\t\t//var st = \"1-3-4-\";\r\n\t\t//alert(st.split(\"-\").length);\r\n\t\t///alert(st.split(\"-\")[2]);\r\n\t\t//alert( st.lastIndexOf(\"-\", st.lastIndexOf(\"-\"))\t);"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/ckdtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\t<TEXTAREA NAME=\"\" ROWS=\"10\" COLS=\"80\" id=\"test\"></TEXTAREA>\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a></p>\n<script language=\"javascript\">\nd = new dTree('d','.','testForm');\nd.add('0','-1','');\nd.add('0401','0','г');\nd.add('040101','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040101&blocktype=6\");');\nd.add('040102','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040102&blocktype=6\");');\nd.add('040103','0401','ȫʽ','javascript:gotoUrl(\"blockcode=040103&blocktype=6\");');\nd.add('040104','0401','ʽ','javascript:gotoUrl(\"blockcode=040104&blocktype=6\");');\nd.add('040105','0401','ʽ𣨷ǻң','javascript:gotoUrl(\"blockcode=040105&blocktype=6\");');\nd.add('040106','0401','г','javascript:gotoUrl(\"blockcode=040106&blocktype=6\");');\nd.add('040107','0401','ȫ','javascript:gotoUrl(\"blockcode=040107&blocktype=6\");');\nd.add('040108','0401','ȫ𣨷ǻң','javascript:gotoUrl(\"blockcode=040108&blocktype=6\");');\nd.add('040109','0401','LOF','javascript:gotoUrl(\"blockcode=040109&blocktype=6\");');\nd.add('040110','0401','ETF','javascript:gotoUrl(\"blockcode=040110&blocktype=6\");');\nd.add('040111','0401','ѷת','javascript:gotoUrl(\"blockcode=040111&blocktype=6\");');\nd.add('040112','0401','ժƻ','javascript:gotoUrl(\"blockcode=040112&blocktype=6\");');\nd.add('0402','0','Ͷ');d.add('040201','0402','Ʊͻ','javascript:gotoUrl(\"blockcode=040201&blocktype=6\");');\nd.add('040202','0402','ծȯͻ','javascript:gotoUrl(\"blockcode=040202&blocktype=6\");');\nd.add('040203','0402','ͻ','javascript:gotoUrl(\"blockcode=040203&blocktype=6\");');\nd.add('040204','0402','ͻ','javascript:gotoUrl(\"blockcode=040204&blocktype=6\");');\nd.add('0403','0','Ͷʷ');d.add('040301','0403','ɳͻ','javascript:gotoUrl(\"blockcode=040301&blocktype=6\");');\nd.add('040302','0403','ֵͣͣ','javascript:gotoUrl(\"blockcode=040302&blocktype=6\");');\nd.add('040303','0403','ƽͻ','javascript:gotoUrl(\"blockcode=040303&blocktype=6\");');\nd.add('040304','0403','ָͻ','javascript:gotoUrl(\"blockcode=040304&blocktype=6\");');\nd.add('040305','0403','ͻ','javascript:gotoUrl(\"blockcode=040305&blocktype=6\");');\nd.add('040306','0403','ҵͻ','javascript:gotoUrl(\"blockcode=040306&blocktype=6\");');\nd.add('0404','0','˾');d.add('040400000001','0404','ʱ޹˾','javascript:gotoUrl(\"blockcode=040400000001&blocktype=6\");');\nd.add('040400000002','0404','˾','javascript:gotoUrl(\"blockcode=040400000002&blocktype=6\");');\nd.add('040400000003','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000003&blocktype=6\");');\nd.add('040400000004','0404','ɻ޹˾','javascript:gotoUrl(\"blockcode=040400000004&blocktype=6\");');\nd.add('040400000007','0404','Ϸ޹˾','javascript:gotoUrl(\"blockcode=040400000007&blocktype=6\");');\nd.add('040400000008','0404','㶫Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000008&blocktype=6\");');\nd.add('040400000009','0404','֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000009&blocktype=6\");');\nd.add('040400000010','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400000010&blocktype=6\");');\nd.add('040400000011','0404','ɽ޹˾','javascript:gotoUrl(\"blockcode=040400000011&blocktype=6\");');\nd.add('040400000013','0404','Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000013&blocktype=6\");');\nd.add('040400000014','0404','麣ŸͶʻ','javascript:gotoUrl(\"blockcode=040400000014&blocktype=6\");');\nd.add('040400000015','0404','ʵ޹˾','javascript:gotoUrl(\"blockcode=040400000015&blocktype=6\");');\nd.add('040400000016','0404','㶫չл','javascript:gotoUrl(\"blockcode=040400000016&blocktype=6\");');\nd.add('040400000017','0404','㷢֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000017&blocktype=6\");');\nd.add('040400000018','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000018&blocktype=6\");');\nd.add('040400000019','0404','㶫ʡϷڷܹ˾','javascript:gotoUrl(\"blockcode=040400000019&blocktype=6\");');\nd.add('040400000020','0404','㶫֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000020&blocktype=6\");');\nd.add('040400000021','0404','֤ͨȯ޹˾ֹ˾','javascript:gotoUrl(\"blockcode=040400000021&blocktype=6\");');\nd.add('040400000022','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000022&blocktype=6\");');\nd.add('040400000023','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000023&blocktype=6\");');\nd.add('040400000024','0404','֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000024&blocktype=6\");');\nd.add('040400000025','0404','㶫Ͷʹ˾Ͷʻ','javascript:gotoUrl(\"blockcode=040400000025&blocktype=6\");');\nd.add('040400000026','0404','ʢ޹˾','javascript:gotoUrl(\"blockcode=040400000026&blocktype=6\");');\nd.add('040400000027','0404','Ļ޹˾','javascript:gotoUrl(\"blockcode=040400000027&blocktype=6\");');\nd.add('040400000028','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000028&blocktype=6\");');\nd.add('040400000030','0404','ͲͶʻ˾','javascript:gotoUrl(\"blockcode=040400000030&blocktype=6\");');\nd.add('040400000031','0404','йϺеڶӪҵ','javascript:gotoUrl(\"blockcode=040400000031&blocktype=6\");');\nd.add('040400000033','0404','Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000033&blocktype=6\");');\nd.add('040400000061','0404','йͷк֧','javascript:gotoUrl(\"blockcode=040400000061&blocktype=6\");');\nd.add('040400000062','0404','ڰ뵺Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000062&blocktype=6\");');\nd.add('040400000111','0404','̩֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000111&blocktype=6\");');\nd.add('040400000135','0404','йͶʹɷ޹˾','javascript:gotoUrl(\"blockcode=040400000135&blocktype=6\");');\nd.add('040400000138','0404','йũҵзл','javascript:gotoUrl(\"blockcode=040400000138&blocktype=6\");');\nd.add('040400000139','0404','й֧Ͷʻ','javascript:gotoUrl(\"blockcode=040400000139&blocktype=6\");');\nd.add('040400001423','0404','ͨкϷ','javascript:gotoUrl(\"blockcode=040400001423&blocktype=6\");');\nd.add('040400052134','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400052134&blocktype=6\");');\nd.add('040400053162','0404','׷޹˾','javascript:gotoUrl(\"blockcode=040400053162&blocktype=6\");');\nd.add('040400055027','0404','޹˾','javascript:gotoUrl(\"blockcode=040400055027&blocktype=6\");');\nd.add('040400062164','0404','ӯ޹˾','javascript:gotoUrl(\"blockcode=040400062164&blocktype=6\");');\nd.add('040400064608','0404','ǻ޹˾','javascript:gotoUrl(\"blockcode=040400064608&blocktype=6\");');\nd.add('040400065772','0404','ӻ޹˾','javascript:gotoUrl(\"blockcode=040400065772&blocktype=6\");');\nd.add('040400065906','0404','Ͷ޹˾','javascript:gotoUrl(\"blockcode=040400065906&blocktype=6\");');\nd.add('040400069602','0404','ϺͶ޹˾','javascript:gotoUrl(\"blockcode=040400069602&blocktype=6\");');\nd.add('040400073182','0404','һ޹˾','javascript:gotoUrl(\"blockcode=040400073182&blocktype=6\");');\nd.add('040400074823','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040400074823&blocktype=6\");');\nd.add('040400074843','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400074843&blocktype=6\");');\nd.add('040400075137','0404','ӥ޹˾','javascript:gotoUrl(\"blockcode=040400075137&blocktype=6\");');\nd.add('040400075801','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400075801&blocktype=6\");');\nd.add('040400077211','0404','޹˾','javascript:gotoUrl(\"blockcode=040400077211&blocktype=6\");');\nd.add('040400077900','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400077900&blocktype=6\");');\nd.add('040400079057','0404','˳ǻ޹˾','javascript:gotoUrl(\"blockcode=040400079057&blocktype=6\");');\nd.add('040400079708','0404','㷢޹˾','javascript:gotoUrl(\"blockcode=040400079708&blocktype=6\");');\nd.add('040400081892','0404','̩Ż޹˾','javascript:gotoUrl(\"blockcode=040400081892&blocktype=6\");');\nd.add('040400083290','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083290&blocktype=6\");');\nd.add('040400083474','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083474&blocktype=6\");');\nd.add('040400083700','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083700&blocktype=6\");');\nd.add('040400083833','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083833&blocktype=6\");');\nd.add('040400084011','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400084011&blocktype=6\");');\nd.add('040400084136','0404','ŵ޹˾','javascript:gotoUrl(\"blockcode=040400084136&blocktype=6\");');\nd.add('040400084387','0404','λ޹˾','javascript:gotoUrl(\"blockcode=040400084387&blocktype=6\");');\nd.add('040400086048','0404','󱣵Ż޹˾','javascript:gotoUrl(\"blockcode=040400086048&blocktype=6\");');\nd.add('040400086315','0404','ͶĦ޹˾','javascript:gotoUrl(\"blockcode=040400086315&blocktype=6\");');\nd.add('040400086437','0404','к޹˾','javascript:gotoUrl(\"blockcode=040400086437&blocktype=6\");');\nd.add('040400086839','0404','ʻ޹˾','javascript:gotoUrl(\"blockcode=040400086839&blocktype=6\");');\nd.add('040400086979','0404','ι˾','javascript:gotoUrl(\"blockcode=040400086979&blocktype=6\");');\nd.add('040400089171','0404','ͻ޹˾','javascript:gotoUrl(\"blockcode=040400089171&blocktype=6\");');\nd.add('040400089251','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089251&blocktype=6\");');\nd.add('040400089255','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089255&blocktype=6\");');\nd.add('040400089257','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089257&blocktype=6\");');\nd.add('040400089262','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089262&blocktype=6\");');\nd.add('040400089990','0404','Ѱ̩޹˾','javascript:gotoUrl(\"blockcode=040400089990&blocktype=6\");');\nd.add('040400090204','0404','ֻ޹˾','javascript:gotoUrl(\"blockcode=040400090204&blocktype=6\");');\nd.add('040400090471','0404','ʩ޵»޹˾','javascript:gotoUrl(\"blockcode=040400090471&blocktype=6\");');\nd.add('040400090517','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400090517&blocktype=6\");');\nd.add('040400200471','0404','ųϻ˾','javascript:gotoUrl(\"blockcode=040400200471&blocktype=6\");');\nd.add('040400200630','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400200630&blocktype=6\");');\nd.add('040400206677','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400206677&blocktype=6\");');\nd.add('040400215348','0404','޹˾','javascript:gotoUrl(\"blockcode=040400215348&blocktype=6\");');\nd.add('040400216478','0404','ʴҵ޹˾','javascript:gotoUrl(\"blockcode=040400216478&blocktype=6\");');\nd.add('040403133598','0404','ŷ޹˾  ','javascript:gotoUrl(\"blockcode=040403133598&blocktype=6\");');\nd.add('040403135981','0404','Ŵ޹˾','javascript:gotoUrl(\"blockcode=040403135981&blocktype=6\");');\nd.add('040403139945','0404','ŵ»޹˾','javascript:gotoUrl(\"blockcode=040403139945&blocktype=6\");');\nd.add('040403140700','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040403140700&blocktype=6\");');\nd.add('0405','0','й');d.add('040500000035','0405','йũҵ','javascript:gotoUrl(\"blockcode=040500000035&blocktype=6\");');\nd.add('040500000036','0405','ͨ','javascript:gotoUrl(\"blockcode=040500000036&blocktype=6\");');\nd.add('040500000037','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000037&blocktype=6\");');\nd.add('040500000047','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000047&blocktype=6\");');\nd.add('040500000053','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000053&blocktype=6\");');\nd.add('040500008577','0405','Ϻֶչйɷ޹˾','javascript:gotoUrl(\"blockcode=040500008577&blocktype=6\");');\nd.add('040500011967','0405','й','javascript:gotoUrl(\"blockcode=040500011967&blocktype=6\");');\nd.add('040500046321','0405','','javascript:gotoUrl(\"blockcode=040500046321&blocktype=6\");');\nd.add('040500074499','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500074499&blocktype=6\");');\nd.add('040500082542','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500082542&blocktype=6\");');\nd.add('040500084226','0405','ҵйɷ޹˾','javascript:gotoUrl(\"blockcode=040500084226&blocktype=6\");');\nd.add('040500089958','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500089958&blocktype=6\");');\n\n\ndocument.write(d);\n\n</script>\n \n          \t      <SCRIPT LANGUAGE=\"JavaScript\">\n             \t      // document.write(d);\n\t\t             </SCRIPT>     \n\n\t<script type=\"text/javascript\">\n\n\t\t//\t\t\t\td..config.useCheckBox=true;\n\n\t\t/*d.add(0,-1,'My example tree');\n\t\td.add(1,0,'Node 1');\n\t\td.add(2,0,'Node 2');\n\t\td.add(3,1,'Node 1.1');\n\t\td.add(4,0,'Node 3');\n\t\td.add(5,3,'Node 1.1.1');\n\t\td.add(8,1,'Node 1.2');\n\t\td.add(7,0,'My Pictures');\n\t\td.add(10,7,'The trip to Iceland');\n\t\td.add(11,7,'Mom\\'s birthday');\n*/\n\n\n\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\n\t\tfunction submitForm(){\n\n\t\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\t\t\t//alert(document.getElementById(\"testForm\"));\n\t\t\tvar ids = \"\";\n\t\t\tvar form = document.getElementById(\"testForm\");\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\n\t\t\t\tvar element = form.elements[i];\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\n\t\t\t\t\tif( element.checked == true ){\n\t\t\t\t\t\t//alert(\"id=\" + element.id +\"\\r\\n\" + \"name=\" + element.name + \"\\r\\n\" + \"value=\"+element.value);\n\t\t\t\t\t\tids = ids + element.value + \",\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t\talert(\"ids = \" + ids);\n\t\n\t\t}\n\t\t\n\t\t//-->\n\t</script>\n\n \n\t<input type=\"button\" value=\" \" onClick=\"submitForm()\"/>\n\n\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n\n\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/bzgk.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n<title>ϢϢ</title>\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n</head>\n\n<body>\n<div id=\"bz_box\">\n\t<!--ͷ-->\n  <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n    <tr>\n      <td class=\"bz_left\">\n\t  <div id=\"bz_l\">\n\t  \t<!---->\n\t  </div>\n\t  </td>\n      <td class=\"bzshow_bg\">\n\t  <div id=\"bz_r\">\t  \n\t  \t<div class=\"right_lmwz\">ڵλǣϢϢ >ſ</div>\n\t\t<!--ſ-->\n\t\t<div class=\"bzshow\">\n\t\t\t<div class=\"bzshow_bt\"><img src=\"skin/default/images/bzindex/dot02.jpg\" />֯</div>\n\t\t\t<div class=\"bzshow_infor\">\n\t<div class=\"dtree\">\n\t<p><a href=\"javascript: d.openAll();\">չ</a> | <a href=\"javascript: d.closeAll();\"></a></p>\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ҵ\",\"\");\nd.add('0101','01',\"ʡ˾\",\"#\");\nd.add('010101','0101',\"\",\"#\");\nd.add('01010101','010101',\"־ֳ칫\",\"#\");\nd.add('01010102','010101',\"չ߻\",\"#\");\nd.add('01010103','010101',\"Դ\",\"#\");\nd.add('01010104','010101',\"ȫ첿\",\"#\");\nd.add('01010105','010101',\"ʲ\",\"#\");\nd.add('01010106','010101',\"\",\"#\");\nd.add('01010107','010101',\"\",\"#\");\nd.add('01010108','010101',\"\",\"#\");\nd.add('01010109','010101',\"ͨ\",\"#\");\nd.add('01010110','010101',\"ͨ\",\"#\");\n\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n\n\t\t\t</div>\n\t\t</div>\n\t  </div>\n\t  </td>\n    </tr>\n  </table>\n  <!--β-->\n</div>\n</body>\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/dept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>֯</h2>\n\n<div class=\"dtree\">\n\n\t<p><a href=\"javascript: d.openAll();\">չ</a> | <a href=\"javascript: d.closeAll();\"></a></p>\n\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ҵ\",\"\");\nd.add('0101','01',\"ʡ˾\",\"#\");\nd.add('010101','0101',\"\",\"#\");\nd.add('01010101','010101',\"ֻر\",\"#\");\nd.add('01010102','010101',\"\",\"#\");\nd.add('01010103','010101',\"\",\"#\");\nd.add('01010104','010101',\"ͨ\",\"#\");\nd.add('0101010401','01010104',\"\",\"#\");\nd.add('0101010402','01010104',\"\",\"#\");\nd.add('01010105','010101',\"ѵ\",\"#\");\nd.add('010102','0101',\"\",\"#\");\nd.add('010103','0101',\"幩\",\"#\");\nd.add('010104','0101',\"\",\"#\");\nd.add('010105','0101',\"\",\"#\");\nd.add('010106','0101',\"ͭ\",\"#\");\nd.add('010107','0101',\"μϹ\",\"#\");\nd.add('010108','0101',\"й\",\"#\");\nd.add('010109','0101',\"Ӱ\",\"#\");\nd.add('010110','0101',\"й繫˾\",\"#\");\nd.add('0102','01',\"ʡ˾\",\"#\");\nd.add('0103','01',\"ɳҵ\",\"#\");\nd.add('0104','01',\"е˾\",\"#\");\nd.add('0105','01',\"ɽʡ˾\",\"#\");\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr               |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\r\n\r\r\n// Tree object\r\r\nfunction dTree(objName,iPath) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t: 'main',\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t\t: false,\r\r\n\t\tinOrder\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'img/base.gif',\r\r\n\t\tfolder\t\t\t\t: iPath+'img/folder.gif',\r\r\n\t\tfolderOpen\t\t\t: iPath+'img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'img/join.gif',\r\r\n\t\tjoinBottom\t\t\t: iPath+'img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'img/plus.gif',\r\r\n\t\tplusBottom\t\t\t: iPath+'img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'img/minus.gif',\r\r\n\t\tminusBottom\t\t\t: iPath+'img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t\t: iPath+'img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t\t: iPath+'img/nolines_minus.gif'\r\t\r\n\t};\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</div>';\r\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\r\n\tstr += node.name;\r\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/dtreebak.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\r\n\r\r\n// Tree object\r\r\nfunction dTree(objName,iPath) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t: null,\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t\t: false,\r\r\n\t\tinOrder\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'img/base.gif',\r\r\n\t\tfolder\t\t\t\t: iPath+'img/folder.gif',\r\r\n\t\tfolderOpen\t\t\t: iPath+'img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'img/join.gif',\r\r\n\t\tjoinBottom\t\t\t: iPath+'img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'img/plus.gif',\r\r\n\t\tplusBottom\t\t\t: iPath+'img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'img/minus.gif',\r\r\n\t\tminusBottom\t\t\t: iPath+'img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t\t: iPath+'img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t\t: iPath+'img/nolines_minus.gif'\r\t\r\n\t};\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</div>';\r\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\r\n\tstr += node.name;\r\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/dtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a> | <a href=\"javascript: d.openTo('01040102',true);\">open node</a></p>\n\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ϵͳ˵\",\"\");\nd.add('0101','01',\"ϵͳҳ\",\"/home/main.do\");\nd.add('010101','0101',\"鿴\",\"/workplan/dailyViewAction.do\");\nd.add('010102','0101',\"½\",\"/workplan/dailyCreateAction.do\");\nd.add('010103','0101',\"޸\",\"/workplan/dailyUpdateAction.do\");\nd.add('010104','0101',\"ɾ\",\"/workplan/dailyDeleteAction.do\");\nd.add('010105','0101',\"ѯ\",\"/workplan/dailySearchAction.do\");\nd.add('0102','01',\"֪ʶ\",\"/knowlege/welcome.do\");\nd.add('0103','01',\"Ϣ\",\"/base_code/welcome.do\");\nd.add('0104','01',\"ϵͳ\",\"/system_admin/welcome.do\");\nd.add('010401','0104',\"Ȩ޹\",\"\");\nd.add('01040101','010401',\"֯\",\"/system_admin/organizationListAction.do\");\nd.add('0104010101','01040101',\"鿴\",\"/system_admin/deptViewAction.do\");\nd.add('0104010102','01040101',\"½\",\"/system_admin/deptCreateAction.do\");\nd.add('0104010103','01040101',\"޸\",\"/system_admin/deptUpdateAction.do\");\nd.add('0104010104','01040101',\"ɾ\",\"/system_admin/deptDeleteAction.do\");\nd.add('0104010105','01040101',\"ѯ\",\"/system_admin/deptSearchAction.do\");\nd.add('0104010106','01040101',\"\",\"/system_admin/deptSortAction.do\");\nd.add('01040102','010401',\"û\",\"/system_admin/userListAction.do\");\nd.add('0104010201','01040102',\"鿴\",\"/system_admin/userViewAction.do\");\nd.add('0104010202','01040102',\"½\",\"/system_admin/userCreateAction.do\");\nd.add('0104010203','01040102',\"޸\",\"/system_admin/userUpdateAction.do\");\nd.add('0104010204','01040102',\"ɾ\",\"/system_admin/userDeleteAction.do\");\nd.add('0104010205','01040102',\"ѯ\",\"/system_admin/userSearchAction.do\");\nd.add('0104010206','01040102',\"\",\"/system_admin/userSortAction.do\");\nd.add('0104010207','01040102',\"\",\"/system_admin/userResetPassAction.do\");\nd.add('0104010208','01040102',\"\",\"/system_admin/userToUseAction.do\");\nd.add('0104010209','01040102',\"ֹ\",\"/system_admin/userStopAction.do\");\nd.add('01040103','010401',\"ɫ\",\"/system_admin/roleListAction.do\");\nd.add('0104010301','01040103',\"鿴\",\"/system_admin/roleViewAction.do\");\nd.add('0104010302','01040103',\"½\",\"/system_admin/roleCreateAction.do\");\nd.add('0104010303','01040103',\"޸\",\"/system_admin/roleUpdateAction.do\");\nd.add('0104010304','01040103',\"ɾ\",\"/system_admin/roleDeleteAction.do\");\nd.add('0104010305','01040103',\"ѯ\",\"/system_admin/roleSearchAction.do\");\nd.add('01040104','010401',\"־\",\"/system_admin/roleListAction.do\");\nd.add('010402','0104',\"ϵͳ\",\"\");\nd.add('01040201','010402',\"ϵͳ\",\"/system_admin/organizationListAction.do\");\nd.add('01040202','010402',\"ݹ\",\"/system_admin/userListAction.do\");\nd.add('0105','01',\"Ŀ\",\"/project_sample/welcome.do\");\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/tdtree/api.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree &raquo; Api</title>\n\n\t<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\" />\n\t<link rel=\"stylesheet\" href=\"/dd.css\" type=\"text/css\" />\n\t<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n</head>\n\n<body>\n\n<div id=\"shadow\">\n\n\t<div id=\"content\">\n\n\t\t<div id=\"location\">\n\t\t\t<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a> &raquo; <a href=\"/javascripts/tree/api/\">Api</a></h1>\n\t\t</div>\n\n\n\t\t<div class=\"line\"></div>\n\n\t\t<div id=\"files\">\n\n\n<h3>Overview</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<ul class=\"arrow\">\n\t\t<li><a href=\"#functions\">Functions</a>\n\t\t\t<ul class=\"arrow\">\n\t\t\t\t<li><a href=\"#add\">add</a></li>\n\t\t\t\t<li><a href=\"#openall\">openAll</a></li>\n\t\t\t\t<li><a href=\"#closeall\">closeAll</a></li>\n\t\t\t\t<li><a href=\"#opento\">openTo</a></li>\n\t\t\t</ul>\n\t\t</li>\n\t\t<li><a href=\"#configuration\">Configuration</a></li>\n\t</ul>\n\n</div>\n\n<a name=\"functions\"></a>\n<h3>Functions</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<a name=\"add\"></a>\n\t<h4 class=\"func\">add()</h4>\n\t<p>Adds a node to the tree.<br />Can only be called before the tree is drawn.</p>\n\t<p>id, pid and name are required.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Unique identity number.</td>\n\t</tr>\n\t<tr>\n\t\t<td>pid</td>\n\t\t<td>Number</td>\n\t\t<td>Number refering to the parent node. The value for the root node has to be -1.</td>\n\t</tr>\n\t<tr>\n\t\t<td>name</td>\n\t\t<td>String</td>\n\t\t<td>Text label for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>url</td>\n\t\t<td>String</td>\n\t\t<td>Url for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>title</td>\n\t\t<td>String</td>\n\t\t<td>Title for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>Target for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>icon</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>iconOpen</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the open icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>open</td>\n\t\t<td>Boolean</td>\n\t\t<td>Is the node open.</td>\n\t</tr>\n\t</table>\n\t<br />\n\n\n\t<h4>Example</h4>\n\t<p><code>mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');</code></p>\n\t<br />\n\n\t<a name=\"openall\"></a>\n\t<h4 class=\"func\">openAll()</h4>\n\t<p>Opens all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.openAll();</code></p>\n\t<br />\n\n\n\t<a name=\"closeall\"></a>\n\t<h4 class=\"func\">closeAll()</h4>\n\t<p>Closes all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.closeAll();</code></p>\n\t<br />\n\n\n\t<a name=\"opento\"></a>\n\t<h4 class=\"func\">openTo()</h4>\n\t<p>Opens the tree to a certain node and can also select the node.<br />\n\tCan only be called after the tree is drawn.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Identity number for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>select</td>\n\t\t<td>Boolean</td>\n\t\t<td>Should the node be selected.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.openTo(4, true);</code></p>\n\n</div>\n\n<a name=\"configuration\"></a>\n<h3>Configuration</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Variable</th>\n\t\t<th>Type</th>\n\t\t<th>Default</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>true</td>\n\t\t<td>Target for all the nodes.</td>\n\t</tr>\n\t<tr>\n\t\t<td>folderLinks</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Should folders be links.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useSelection</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Nodes can be selected(highlighted).</td>\n\t</tr>\n\t<tr>\n\t\t<td>useCookies</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>The tree uses cookies to rember it's state.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useLines</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with lines.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useIcons</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with icons.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useStatusText</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Displays node names in the statusbar instead of the url.</td>\n\t</tr>\n\t<tr>\n\t\t<td>closeSameLevel</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Only one node within a parent can be expanded at the same time.  openAll() and closeAll() functions do not work when this is enabled.</td>\n\t</tr>\n\t<tr>\n\t\t<td>inOrder</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>If parent nodes are always added before children, setting this to true speeds up the tree.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.config.target = \"mytarget\";</code></p>\n\n</div>\n\n\t\t</div>\n\n\t\t<div class=\"line\"></div>\n\n\n\t\t<div id=\"copy\">\n\t\t\t<p class=\"right\"><a href=\"http://validator.w3.org/check/referer\">XHTML</a>, <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">CSS</a></p>\n\t\t\t<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\t\t</div>\n\n\t</div>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/tdtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr?              |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.cbbox {\n\theight: 13px;\n\tborder:0;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}\n.dtree .cx {\n\tpadding:0px; \n\tmargin:0px;\n\twidth:16px;\n\theight:12px;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/tdtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr?               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\n\r\n// Tree object typeBox{radio:ѡ / relationck:ѡ ѡӽڵ㸸ڵԶѡ / checkbox: ѡڵ} update by tony 20100915\r\n// inputId:ύ\r\n// idtdͷ 'td'+inputId һҳж\r\nfunction dTree(objName, iPath, formId, inputId, useBox, typeBox) {\r\n\tthis.config = {\r\n\t\ttarget\t\t\t\t: null,\r\n\t\tfolderLinks\t\t\t: true,\r\n\t\tuseSelection\t\t: true,\r\n\t\tuseCookies\t\t\t: true,\r\n\t\tuseLines\t\t\t: true,\r\n\t\tuseIcons\t\t\t: !useBox,\r\n\t\tinputId\t\t\t\t: inputId,\r\n\t\tuseBox\t\t\t\t: useBox,\r\n\t\ttypeBox\t\t\t\t: typeBox,\r\n\t\tuseStatusText\t\t: false,\r\n\t\tcloseSameLevel\t\t: false,\r\n\t\tinOrder\t\t\t\t: false\r\n\t}\r\n\tthis.icon = {\r\n\t\troot\t\t\t\t: iPath+'/img/base.gif',\r\n\t\tfolder\t\t\t\t: iPath+'/img/folder.gif',\r\n\t\tfolderOpen\t\t\t: iPath+'/img/folderopen.gif',\r\n\t\tnode\t\t\t\t: iPath+'/img/page.gif',\r\n\t\tempty\t\t\t\t: iPath+'/img/empty.gif',\r\n\t\tline\t\t\t\t: iPath+'/img/line.gif',\r\n\t\tjoin\t\t\t\t: iPath+'/img/join.gif',\r\n\t\tjoinBottom\t\t\t: iPath+'/img/joinbottom.gif',\r\n\t\tplus\t\t\t\t: iPath+'/img/plus.gif',\r\n\t\tplusBottom\t\t\t: iPath+'/img/plusbottom.gif',\r\n\t\tminus\t\t\t\t: iPath+'/img/minus.gif',\r\n\t\tminusBottom\t\t\t: iPath+'/img/minusbottom.gif',\r\n\t\tnlPlus\t\t\t\t: iPath+'/img/nolines_plus.gif',\r\n\t\tnlMinus\t\t\t\t: iPath+'/img/nolines_minus.gif'\r\n\t};\r\n\tthis.parEnum = \"\";\r\n\tthis.obj = objName;\r\n\tthis.aNodes = [];\r\n\tthis.aIndent = [];\r\n\tthis.root = new Node(-1);\r\n\tthis.selectedNode = null;\r\n\tthis.selectedFound = false;\r\n\tthis.completed = false;\r\n\t\r\n\tthis.formId = (formId==null)?\"dTreeForm\":formId;\r\n\t//this.inputId = (inputId==null)?\"id\":inputId;\r\n};\r\n\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\t//var str = '<div class=\"dtree\"><form id=\"'+this.formId+'\">\\n';\t\t// by tony 20090625\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\t//str += '</form></div>';\t\t// by tony 20090625\r\n\tstr += '</div>';\r\n\t//document.getElementById(\"test\").value = str;\r\n\t//alert(str);\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tif(this.aNodes[n].pid == 0){\r\n\t\t\t\tthis.parEnum = \"\";\r\n\t\t\t}\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\n\t//alert(\"nodeId = \" + nodeId + \" | parentId = \" + node.pid + \" | nodeId = \" + node.id);\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\r\n\tif(this.config.useBox && nodeId!=0){\r\r\n\t\tif(node.pid=='01'){\r\t\t\t\r\n\t\t\tthis.parEnum = node.id + \"-\";\r\n\t\t}else{\r\t\t\t\r\n\t\t\tif(node.pid==0){\r\t\t\t    \r\n\t\t\t\tthis.parEnum += node.id + \"-\";\r\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\t//alert(\"parEnum1 = \" + this.parEnum + \"node id = \" + node.pid);\t\r\n\t\t\t\tvar pL = this.parEnum.indexOf(node.pid+\"-\");\r\n\t\t\t\t//alert(this.parEnum.substring(0,pL+(node.pid+\"-\").length))\r\n\t\t\t\tthis.parEnum = this.parEnum.substring(0,pL+(node.pid+\"-\").length) + node.id + \"-\";\t\t\r\n\t\t\t\t//alert(\"parEnum2 = \" + this.parEnum);\t\r\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.typeBox==\"relationck\"){ //ѡʱ,checkbox nameid,ִ by tony 2010.10.29\r\n\t\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" onClick=\"caBox(\\''+this.formId+'\\',\\''+this.config.inputId+'\\',\\'c'+this.parEnum+'\\')\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}else if(this.config.typeBox==\"radio\"){\r\n\t\t\tstr += '<input type=\"radio\" class=\"cbbox\" name=\"td'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}else if(this.config.typeBox==\"checkbox\"){\r\n\t\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"td'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\n\t\r\n\tstr += node.name;\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\n\t\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};\r\n\r\n\t\t/* checkbox tree */\r\n\t\tfunction caBox(formId, idname, regx ) {\r\n\t\t\tif( document.getElementById( regx ).checked ){\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\t\t\t\t\t\t// checked next node \r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\tfor(j=0;j<regxArray.length;j++){\r\n\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-1]+\"-\"));\r\n\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\tdocument.getElementById(pDiv).checked=true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\t// unChecked\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\n\t\t\t\t\t\t// elements's all child set checked false;\r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = false;\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\t// c7 8\r\n\t\t\t\tfor(j=0;j<regxArray.length-1;j++){\r\n\t\t\t\t\tif( !isCheckedByRec(form, idname, regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"))) ){\r\n\t\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"));\r\n\t\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\t\tdocument.getElementById(pDiv).checked=false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isCheckedByRec( form ,idname ,regx){\r\n\t\t\t//alert(\"isCheckedByRec = \" + regx);\r\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\n\t\t\t\t\t// isChecked\r\n\t\t\t\t\tif(element.id.indexOf(regx)!=-1 && element.checked && element.id!=regx ){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//alert(\"c1-7-\".indexOf(\"1-\"));\r\n\t\t//var st = \"1-3-4-\";\r\n\t\t//alert(st.split(\"-\").length);\r\n\t\t///alert(st.split(\"-\")[2]);\r\n\t\t//alert( st.lastIndexOf(\"-\", st.lastIndexOf(\"-\"))\t);"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/tdtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\t<TEXTAREA NAME=\"\" ROWS=\"10\" COLS=\"80\" id=\"test\"></TEXTAREA>\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a></p>\n<script language=\"javascript\">\nd = new dTree('d','.','testForm');\nd.add('0','-1','');\nd.add('0401','0','г');\nd.add('040101','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040101&blocktype=6\");');\nd.add('040102','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040102&blocktype=6\");');\nd.add('040103','0401','ȫʽ','javascript:gotoUrl(\"blockcode=040103&blocktype=6\");');\nd.add('040104','0401','ʽ','javascript:gotoUrl(\"blockcode=040104&blocktype=6\");');\nd.add('040105','0401','ʽ𣨷ǻң','javascript:gotoUrl(\"blockcode=040105&blocktype=6\");');\nd.add('040106','0401','г','javascript:gotoUrl(\"blockcode=040106&blocktype=6\");');\nd.add('040107','0401','ȫ','javascript:gotoUrl(\"blockcode=040107&blocktype=6\");');\nd.add('040108','0401','ȫ𣨷ǻң','javascript:gotoUrl(\"blockcode=040108&blocktype=6\");');\nd.add('040109','0401','LOF','javascript:gotoUrl(\"blockcode=040109&blocktype=6\");');\nd.add('040110','0401','ETF','javascript:gotoUrl(\"blockcode=040110&blocktype=6\");');\nd.add('040111','0401','ѷת','javascript:gotoUrl(\"blockcode=040111&blocktype=6\");');\nd.add('040112','0401','ժƻ','javascript:gotoUrl(\"blockcode=040112&blocktype=6\");');\nd.add('0402','0','Ͷ');d.add('040201','0402','Ʊͻ','javascript:gotoUrl(\"blockcode=040201&blocktype=6\");');\nd.add('040202','0402','ծȯͻ','javascript:gotoUrl(\"blockcode=040202&blocktype=6\");');\nd.add('040203','0402','ͻ','javascript:gotoUrl(\"blockcode=040203&blocktype=6\");');\nd.add('040204','0402','ͻ','javascript:gotoUrl(\"blockcode=040204&blocktype=6\");');\nd.add('0403','0','Ͷʷ');d.add('040301','0403','ɳͻ','javascript:gotoUrl(\"blockcode=040301&blocktype=6\");');\nd.add('040302','0403','ֵͣͣ','javascript:gotoUrl(\"blockcode=040302&blocktype=6\");');\nd.add('040303','0403','ƽͻ','javascript:gotoUrl(\"blockcode=040303&blocktype=6\");');\nd.add('040304','0403','ָͻ','javascript:gotoUrl(\"blockcode=040304&blocktype=6\");');\nd.add('040305','0403','ͻ','javascript:gotoUrl(\"blockcode=040305&blocktype=6\");');\nd.add('040306','0403','ҵͻ','javascript:gotoUrl(\"blockcode=040306&blocktype=6\");');\nd.add('0404','0','˾');d.add('040400000001','0404','ʱ޹˾','javascript:gotoUrl(\"blockcode=040400000001&blocktype=6\");');\nd.add('040400000002','0404','˾','javascript:gotoUrl(\"blockcode=040400000002&blocktype=6\");');\nd.add('040400000003','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000003&blocktype=6\");');\nd.add('040400000004','0404','ɻ޹˾','javascript:gotoUrl(\"blockcode=040400000004&blocktype=6\");');\nd.add('040400000007','0404','Ϸ޹˾','javascript:gotoUrl(\"blockcode=040400000007&blocktype=6\");');\nd.add('040400000008','0404','㶫Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000008&blocktype=6\");');\nd.add('040400000009','0404','֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000009&blocktype=6\");');\nd.add('040400000010','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400000010&blocktype=6\");');\nd.add('040400000011','0404','ɽ޹˾','javascript:gotoUrl(\"blockcode=040400000011&blocktype=6\");');\nd.add('040400000013','0404','Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000013&blocktype=6\");');\nd.add('040400000014','0404','麣ŸͶʻ','javascript:gotoUrl(\"blockcode=040400000014&blocktype=6\");');\nd.add('040400000015','0404','ʵ޹˾','javascript:gotoUrl(\"blockcode=040400000015&blocktype=6\");');\nd.add('040400000016','0404','㶫չл','javascript:gotoUrl(\"blockcode=040400000016&blocktype=6\");');\nd.add('040400000017','0404','㷢֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000017&blocktype=6\");');\nd.add('040400000018','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000018&blocktype=6\");');\nd.add('040400000019','0404','㶫ʡϷڷܹ˾','javascript:gotoUrl(\"blockcode=040400000019&blocktype=6\");');\nd.add('040400000020','0404','㶫֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000020&blocktype=6\");');\nd.add('040400000021','0404','֤ͨȯ޹˾ֹ˾','javascript:gotoUrl(\"blockcode=040400000021&blocktype=6\");');\nd.add('040400000022','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000022&blocktype=6\");');\nd.add('040400000023','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000023&blocktype=6\");');\nd.add('040400000024','0404','֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000024&blocktype=6\");');\nd.add('040400000025','0404','㶫Ͷʹ˾Ͷʻ','javascript:gotoUrl(\"blockcode=040400000025&blocktype=6\");');\nd.add('040400000026','0404','ʢ޹˾','javascript:gotoUrl(\"blockcode=040400000026&blocktype=6\");');\nd.add('040400000027','0404','Ļ޹˾','javascript:gotoUrl(\"blockcode=040400000027&blocktype=6\");');\nd.add('040400000028','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000028&blocktype=6\");');\nd.add('040400000030','0404','ͲͶʻ˾','javascript:gotoUrl(\"blockcode=040400000030&blocktype=6\");');\nd.add('040400000031','0404','йϺеڶӪҵ','javascript:gotoUrl(\"blockcode=040400000031&blocktype=6\");');\nd.add('040400000033','0404','Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000033&blocktype=6\");');\nd.add('040400000061','0404','йͷк֧','javascript:gotoUrl(\"blockcode=040400000061&blocktype=6\");');\nd.add('040400000062','0404','ڰ뵺Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000062&blocktype=6\");');\nd.add('040400000111','0404','̩֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000111&blocktype=6\");');\nd.add('040400000135','0404','йͶʹɷ޹˾','javascript:gotoUrl(\"blockcode=040400000135&blocktype=6\");');\nd.add('040400000138','0404','йũҵзл','javascript:gotoUrl(\"blockcode=040400000138&blocktype=6\");');\nd.add('040400000139','0404','й֧Ͷʻ','javascript:gotoUrl(\"blockcode=040400000139&blocktype=6\");');\nd.add('040400001423','0404','ͨкϷ','javascript:gotoUrl(\"blockcode=040400001423&blocktype=6\");');\nd.add('040400052134','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400052134&blocktype=6\");');\nd.add('040400053162','0404','׷޹˾','javascript:gotoUrl(\"blockcode=040400053162&blocktype=6\");');\nd.add('040400055027','0404','޹˾','javascript:gotoUrl(\"blockcode=040400055027&blocktype=6\");');\nd.add('040400062164','0404','ӯ޹˾','javascript:gotoUrl(\"blockcode=040400062164&blocktype=6\");');\nd.add('040400064608','0404','ǻ޹˾','javascript:gotoUrl(\"blockcode=040400064608&blocktype=6\");');\nd.add('040400065772','0404','ӻ޹˾','javascript:gotoUrl(\"blockcode=040400065772&blocktype=6\");');\nd.add('040400065906','0404','Ͷ޹˾','javascript:gotoUrl(\"blockcode=040400065906&blocktype=6\");');\nd.add('040400069602','0404','ϺͶ޹˾','javascript:gotoUrl(\"blockcode=040400069602&blocktype=6\");');\nd.add('040400073182','0404','һ޹˾','javascript:gotoUrl(\"blockcode=040400073182&blocktype=6\");');\nd.add('040400074823','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040400074823&blocktype=6\");');\nd.add('040400074843','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400074843&blocktype=6\");');\nd.add('040400075137','0404','ӥ޹˾','javascript:gotoUrl(\"blockcode=040400075137&blocktype=6\");');\nd.add('040400075801','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400075801&blocktype=6\");');\nd.add('040400077211','0404','޹˾','javascript:gotoUrl(\"blockcode=040400077211&blocktype=6\");');\nd.add('040400077900','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400077900&blocktype=6\");');\nd.add('040400079057','0404','˳ǻ޹˾','javascript:gotoUrl(\"blockcode=040400079057&blocktype=6\");');\nd.add('040400079708','0404','㷢޹˾','javascript:gotoUrl(\"blockcode=040400079708&blocktype=6\");');\nd.add('040400081892','0404','̩Ż޹˾','javascript:gotoUrl(\"blockcode=040400081892&blocktype=6\");');\nd.add('040400083290','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083290&blocktype=6\");');\nd.add('040400083474','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083474&blocktype=6\");');\nd.add('040400083700','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083700&blocktype=6\");');\nd.add('040400083833','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083833&blocktype=6\");');\nd.add('040400084011','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400084011&blocktype=6\");');\nd.add('040400084136','0404','ŵ޹˾','javascript:gotoUrl(\"blockcode=040400084136&blocktype=6\");');\nd.add('040400084387','0404','λ޹˾','javascript:gotoUrl(\"blockcode=040400084387&blocktype=6\");');\nd.add('040400086048','0404','󱣵Ż޹˾','javascript:gotoUrl(\"blockcode=040400086048&blocktype=6\");');\nd.add('040400086315','0404','ͶĦ޹˾','javascript:gotoUrl(\"blockcode=040400086315&blocktype=6\");');\nd.add('040400086437','0404','к޹˾','javascript:gotoUrl(\"blockcode=040400086437&blocktype=6\");');\nd.add('040400086839','0404','ʻ޹˾','javascript:gotoUrl(\"blockcode=040400086839&blocktype=6\");');\nd.add('040400086979','0404','ι˾','javascript:gotoUrl(\"blockcode=040400086979&blocktype=6\");');\nd.add('040400089171','0404','ͻ޹˾','javascript:gotoUrl(\"blockcode=040400089171&blocktype=6\");');\nd.add('040400089251','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089251&blocktype=6\");');\nd.add('040400089255','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089255&blocktype=6\");');\nd.add('040400089257','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089257&blocktype=6\");');\nd.add('040400089262','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089262&blocktype=6\");');\nd.add('040400089990','0404','Ѱ̩޹˾','javascript:gotoUrl(\"blockcode=040400089990&blocktype=6\");');\nd.add('040400090204','0404','ֻ޹˾','javascript:gotoUrl(\"blockcode=040400090204&blocktype=6\");');\nd.add('040400090471','0404','ʩ޵»޹˾','javascript:gotoUrl(\"blockcode=040400090471&blocktype=6\");');\nd.add('040400090517','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400090517&blocktype=6\");');\nd.add('040400200471','0404','ųϻ˾','javascript:gotoUrl(\"blockcode=040400200471&blocktype=6\");');\nd.add('040400200630','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400200630&blocktype=6\");');\nd.add('040400206677','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400206677&blocktype=6\");');\nd.add('040400215348','0404','޹˾','javascript:gotoUrl(\"blockcode=040400215348&blocktype=6\");');\nd.add('040400216478','0404','ʴҵ޹˾','javascript:gotoUrl(\"blockcode=040400216478&blocktype=6\");');\nd.add('040403133598','0404','ŷ޹˾  ','javascript:gotoUrl(\"blockcode=040403133598&blocktype=6\");');\nd.add('040403135981','0404','Ŵ޹˾','javascript:gotoUrl(\"blockcode=040403135981&blocktype=6\");');\nd.add('040403139945','0404','ŵ»޹˾','javascript:gotoUrl(\"blockcode=040403139945&blocktype=6\");');\nd.add('040403140700','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040403140700&blocktype=6\");');\nd.add('0405','0','й');d.add('040500000035','0405','йũҵ','javascript:gotoUrl(\"blockcode=040500000035&blocktype=6\");');\nd.add('040500000036','0405','ͨ','javascript:gotoUrl(\"blockcode=040500000036&blocktype=6\");');\nd.add('040500000037','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000037&blocktype=6\");');\nd.add('040500000047','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000047&blocktype=6\");');\nd.add('040500000053','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000053&blocktype=6\");');\nd.add('040500008577','0405','Ϻֶչйɷ޹˾','javascript:gotoUrl(\"blockcode=040500008577&blocktype=6\");');\nd.add('040500011967','0405','й','javascript:gotoUrl(\"blockcode=040500011967&blocktype=6\");');\nd.add('040500046321','0405','','javascript:gotoUrl(\"blockcode=040500046321&blocktype=6\");');\nd.add('040500074499','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500074499&blocktype=6\");');\nd.add('040500082542','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500082542&blocktype=6\");');\nd.add('040500084226','0405','ҵйɷ޹˾','javascript:gotoUrl(\"blockcode=040500084226&blocktype=6\");');\nd.add('040500089958','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500089958&blocktype=6\");');\n\n\ndocument.write(d);\n\n</script>\n \n          \t      <SCRIPT LANGUAGE=\"JavaScript\">\n             \t      // document.write(d);\n\t\t             </SCRIPT>     \n\n\t<script type=\"text/javascript\">\n\n\t\t//\t\t\t\td..config.useCheckBox=true;\n\n\t\t/*d.add(0,-1,'My example tree');\n\t\td.add(1,0,'Node 1');\n\t\td.add(2,0,'Node 2');\n\t\td.add(3,1,'Node 1.1');\n\t\td.add(4,0,'Node 3');\n\t\td.add(5,3,'Node 1.1.1');\n\t\td.add(8,1,'Node 1.2');\n\t\td.add(7,0,'My Pictures');\n\t\td.add(10,7,'The trip to Iceland');\n\t\td.add(11,7,'Mom\\'s birthday');\n*/\n\n\n\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\n\t\tfunction submitForm(){\n\n\t\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\t\t\t//alert(document.getElementById(\"testForm\"));\n\t\t\tvar ids = \"\";\n\t\t\tvar form = document.getElementById(\"testForm\");\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\n\t\t\t\tvar element = form.elements[i];\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\n\t\t\t\t\tif( element.checked == true ){\n\t\t\t\t\t\t//alert(\"id=\" + element.id +\"\\r\\n\" + \"name=\" + element.name + \"\\r\\n\" + \"value=\"+element.value);\n\t\t\t\t\t\tids = ids + element.value + \",\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t\talert(\"ids = \" + ids);\n\t\n\t\t}\n\t\t\n\t\t//-->\n\t</script>\n\n \n\t<input type=\"button\" value=\" \" onClick=\"submitForm()\"/>\n\n\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n\n\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/dtree/tdtree/frame.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>self J2ee Frame</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n\n<div class=\"dtree\">\n\t<p><a href=\"javascript: d.openAll();\">Open all</a> | <a href=\"javascript: d.closeAll();\">Close all</a></p>\n<script language=\"javascript\">\n\nd = new dTree('d','.','testForm');\nd.add('0','-1','Develope Base');\nd.add('05','0','Rule');\nd.add('01','0','Language');\nd.add('04','0','MVC Frame');\nd.add('02','0','Software');\nd.add('03','0','Env');\n\nd.add('0101','01','Java2');\n\nd.add('0201','02','Eclipse 6.5');\nd.add('0202','02','EditPlus 2.11');\nd.add('0203','02','Power Designer 12.5');\nd.add('0204','02','FrontPage 2003');\nd.add('0205','02','CVS');\nd.add('0206','02','Office Word/Excel/ppt 2003');\n\nd.add('0301','03','SqlServer 2000 (Database)');\nd.add('0302','03','jdk 1.6_04');\nd.add('0303','03','Tomcat 6.0');\n\nd.add('0401','04','View');\nd.add('040101','0401','html','');\n\nd.add('040102','0401','css','');\nd.add('040103','0401','javascript(js)','');\nd.add('040104','0401','jsp','');\nd.add('040105','0401','validator','');\nd.add('040106','0401','jstl(tiglib)','');\n\nd.add('0402','04','Control');\nd.add('040201','0402','log4j','');\nd.add('040202','0402','class','');\nd.add('040203','0402','action(struts)');\nd.add('040204','0402','javabean');\nd.add('040205','0402','tool class');\n\nd.add('0403','04','Model');\nd.add('040301','0403','hibernate','');\nd.add('040302','0403','spring','');\nd.add('040303','0403','jdbc','');\nd.add('040304','0403','sql','');\nd.add('040305','0403','hql','');\n\nd.add('0501','05','coding');\nd.add('0502','05','ISO doc');\n\ndocument.write(d);\n\n</script>\n \n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/easing.js",
    "content": "/*\n * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php\n *\n * Uses the built In easIng capabilities added In jQuery 1.1\n * to offer multiple easIng options\n *\n * Copyright (c) 2007 George Smith\n * Licensed under the MIT License:\n *   http://www.opensource.org/licenses/mit-license.php\n */\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\n\njQuery.extend( jQuery.easing,\n{\n\teaseInQuad: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t + b;\n\t},\n\teaseOutQuad: function (x, t, b, c, d) {\n\t\treturn -c *(t/=d)*(t-2) + b;\n\t},\n\teaseInOutQuad: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t + b;\n\t\treturn -c/2 * ((--t)*(t-2) - 1) + b;\n\t},\n\teaseInCubic: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t + b;\n\t},\n\teaseOutCubic: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t + 1) + b;\n\t},\n\teaseInOutCubic: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t + 2) + b;\n\t},\n\teaseInQuart: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t + b;\n\t},\n\teaseOutQuart: function (x, t, b, c, d) {\n\t\treturn -c * ((t=t/d-1)*t*t*t - 1) + b;\n\t},\n\teaseInOutQuart: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n\t\treturn -c/2 * ((t-=2)*t*t*t - 2) + b;\n\t},\n\teaseInQuint: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t*t + b;\n\t},\n\teaseOutQuint: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t*t*t + 1) + b;\n\t},\n\teaseInOutQuint: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t*t*t + 2) + b;\n\t},\n\teaseInSine: function (x, t, b, c, d) {\n\t\treturn -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n\t},\n\teaseOutSine: function (x, t, b, c, d) {\n\t\treturn c * Math.sin(t/d * (Math.PI/2)) + b;\n\t},\n\teaseInOutSine: function (x, t, b, c, d) {\n\t\treturn -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n\t},\n\teaseInExpo: function (x, t, b, c, d) {\n\t\treturn (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n\t},\n\teaseOutExpo: function (x, t, b, c, d) {\n\t\treturn (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n\t},\n\teaseInOutExpo: function (x, t, b, c, d) {\n\t\tif (t==0) return b;\n\t\tif (t==d) return b+c;\n\t\tif ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n\t\treturn c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n\t},\n\teaseInCirc: function (x, t, b, c, d) {\n\t\treturn -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n\t},\n\teaseOutCirc: function (x, t, b, c, d) {\n\t\treturn c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n\t},\n\teaseInOutCirc: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n\t\treturn c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n\t},\n\teaseInElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t},\n\teaseOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n\t},\n\teaseInOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\tif (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t\treturn a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n\t},\n\teaseInBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*(t/=d)*t*((s+1)*t - s) + b;\n\t},\n\teaseOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n\t},\n\teaseInOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158; \n\t\tif ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n\t\treturn c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n\t},\n\teaseInBounce: function (x, t, b, c, d) {\n\t\treturn c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n\t},\n\teaseOutBounce: function (x, t, b, c, d) {\n\t\tif ((t/=d) < (1/2.75)) {\n\t\t\treturn c*(7.5625*t*t) + b;\n\t\t} else if (t < (2/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n\t\t} else if (t < (2.5/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n\t\t} else {\n\t\t\treturn c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n\t\t}\n\t},\n\teaseInOutBounce: function (x, t, b, c, d) {\n\t\tif (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n\t\treturn jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n\t}\n});\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/index.js",
    "content": "$(\".nav\").on(\"click\",\"li\",function(){\n\t$(this).siblings().removeClass(\"current\");\n\tvar hasChild = !!$(this).find(\".subnav\").size();\n\tif(hasChild){\n\t\t$(this).toggleClass(\"hasChild\");\n\t}\n\t$(this).addClass(\"current\");\n});\n\n\n$(window).resize(function(e) {\n    $(\"#bd\").height($(window).height() - $(\"#hd\").height() - $(\"#ft\").height()-6);\n\t$(\".wrap\").height($(\"#bd\").height()-6);\n\t$(\".nav\").css(\"minHeight\", $(\".sidebar\").height() - $(\".sidebar-header\").height()-1);\n\t$(\"#iframe\").height($(window).height() - $(\"#hd\").height() - $(\"#ft\").height()-12);\n}).resize();\n\n$(\".nav>li\").css({\"borderColor\":\"#dbe9f1\"});\n$(\".nav>.current\").prev().css({\"borderColor\":\"#7ac47f\"});\n$(\".nav\").on(\"click\",\"li\",function(e){\n\tvar aurl = $(this).find(\"a\").attr(\"date-src\");\n\t$(\"#iframe\").attr(\"src\",aurl);\n\t$(\".nav>li\").css({\"borderColor\":\"#dbe9f1\"});\n\t$(\".nav>.current\").prev().css({\"borderColor\":\"#7ac47f\"});\n\treturn false;\n});\n\n$('.exitDialog').Dialog({\n\ttitle:'提示信息',\n\tautoOpen: false,\n\twidth:400,\n\theight:200\n\t\n});\n\n$('.exit').click(function(){\n\t$('.exitDialog').Dialog('open');\n});\n\n\n\n$('.exitDialog input[type=button]').click(function(e) {\n    $('.exitDialog').Dialog('close');\n\t\n\tif($(this).hasClass('ok')){\n\t\twindow.location.href = \"exitSys.action\"\t;\n\t}\n});"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/jquery-1.10.1.js",
    "content": "/*!\n * jQuery JavaScript Library v1.10.1\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-05-30T21:49Z\n */\n(function( window, undefined ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\"use strict\";\nvar\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// Support: IE<10\n\t// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`\n\tcore_strundefined = typeof undefined,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tlocation = window.location,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {},\n\n\t// List of deleted data cache ids, so we can reuse them\n\tcore_deletedIds = [],\n\n\tcore_version = \"1.10.1\",\n\n\t// Save a reference to some core methods\n\tcore_concat = core_deletedIds.concat,\n\tcore_push = core_deletedIds.push,\n\tcore_slice = core_deletedIds.slice,\n\tcore_indexOf = core_deletedIds.indexOf,\n\tcore_toString = class2type.toString,\n\tcore_hasOwn = class2type.hasOwnProperty,\n\tcore_trim = core_version.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n\n\t// Used for splitting on whitespace\n\tcore_rnotwhite = /\\S+/g,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t},\n\n\t// The ready event handler\n\tcompleted = function( event ) {\n\n\t\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\t\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\t\tdetach();\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\t// Clean-up method for dom ready events\n\tdetach = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t\t} else {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\t\twindow.detachEvent( \"onload\", completed );\n\t\t}\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: core_version,\n\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( core_version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn String( obj );\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( jQuery.support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn core_hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, keepScripts ) {\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tkeepScripts = context;\n\t\t\tcontext = false;\n\t\t}\n\t\tcontext = context || document;\n\n\t\tvar parsed = rsingleTag.exec( data ),\n\t\t\tscripts = !keepScripts && [];\n\n\t\t// Single tag\n\t\tif ( parsed ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\t\tif ( scripts ) {\n\t\t\tjQuery( scripts ).remove();\n\t\t}\n\t\treturn jQuery.merge( [], parsed.childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\tif ( data === null ) {\n\t\t\treturn data;\n\t\t}\n\n\t\tif ( typeof data === \"string\" ) {\n\n\t\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\t\tdata = jQuery.trim( data );\n\n\t\t\tif ( data ) {\n\t\t\t\t// Make sure the incoming data is actual JSON\n\t\t\t\t// Logic borrowed from http://json.org/json2.js\n\t\t\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\t\t\treturn ( new Function( \"return \" + data ) )();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn core_concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\t\tvar i = 0,\n\t\t\tlength = elems.length,\n\t\t\tbulk = key == null;\n\n\t\t// Sets many values\n\t\tif ( jQuery.type( key ) === \"object\" ) {\n\t\t\tchainable = true;\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t\t}\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\tchainable = true;\n\n\t\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\t\traw = true;\n\t\t\t}\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations run against the entire set\n\t\t\t\tif ( raw ) {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\n\t\t\t\t// ...except when executing function values\n\t\t\t\t} else {\n\t\t\t\t\tbulk = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations.\n\t// Note: this method belongs to the css module but it's needed here for the support module.\n\t// If support gets modularized, this method should be moved back to the css module.\n\tswap: function( elem, options, callback, args ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.apply( elem, args || [] );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || type !== \"function\" &&\n\t\t( length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj );\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n/*!\n * Sizzle CSS Selector Engine v1.9.4-pre\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-05-27\n */\n(function( window, undefined ) {\n\nvar i,\n\tsupport,\n\tcachedruns,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcompile,\n\toutermostContext,\n\tsortInput,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\thasDuplicate = false,\n\tsortOrder = function() { return 0; },\n\n\t// General-purpose constants\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf if we can't use a native one\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:([*^$|!~]?=)\" + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments quoted,\n\t//   then not containing pseudos/brackets,\n\t//   then attribute selectors/non-parenthetical expressions,\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes.replace( 3, 8 ) + \")*)|.*)\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trsibling = new RegExp( whitespace + \"*[+~]\" ),\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\t// BMP codepoint\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\t// Shortcuts\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * For feature detection\n * @param {Function} fn The function to test for native support\n */\nfunction isNative( fn ) {\n\treturn rnative.test( fn + \"\" );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key += \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied if the test fails\n * @param {Boolean} test The result of a test. If true, null will be set as the handler in leiu of the specified handler\n */\nfunction addHandle( attrs, handler, test ) {\n\tattrs = attrs.split(\"|\");\n\tvar current,\n\t\ti = attrs.length,\n\t\tsetHandle = test ? null : handler;\n\n\twhile ( i-- ) {\n\t\t// Don't override a user's handler\n\t\tif ( !(current = Expr.attrHandle[ attrs[i] ]) || current === handler ) {\n\t\t\tExpr.attrHandle[ attrs[i] ] = setHandle;\n\t\t}\n\t}\n}\n\n/**\n * Fetches boolean attributes by node\n * @param {Element} elem\n * @param {String} name\n */\nfunction boolHandler( elem, name ) {\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\tvar val = elem.getAttributeNode( name );\n\treturn val && val.specified ?\n\t\tval.value :\n\t\telem[ name ] === true ? name.toLowerCase() : null;\n}\n\n/**\n * Fetches attributes without interpolation\n * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n * @param {Element} elem\n * @param {String} name\n */\nfunction interpolationHandler( elem, name ) {\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n}\n\n/**\n * Uses defaultValue to retrieve value in IE6/7\n * @param {Element} elem\n * @param {String} name\n */\nfunction valueHandler( elem ) {\n\t// Ignore the value *property* on inputs by using defaultValue\n\t// Fallback to Sizzle.attr by returning undefined where appropriate\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\tif ( elem.nodeName.toLowerCase() === \"input\" ) {\n\t\treturn elem.defaultValue;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns Returns -1 if a precedes b, 1 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect xml\n * @param {Element|Object} elem An element or a document\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar doc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.parentWindow;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\t// Support tests\n\tdocumentIsHTML = !isXML( doc );\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\tif ( parent && parent.frameElement ) {\n\t\tparent.attachEvent( \"onbeforeunload\", function() {\n\t\t\tsetDocument();\n\t\t});\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\n\t\t// Support: IE<8\n\t\t// Prevent attribute/property \"interpolation\"\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\taddHandle( \"type|href|height|width\", interpolationHandler, div.firstChild.getAttribute(\"href\") === \"#\" );\n\n\t\t// Support: IE<9\n\t\t// Use getAttributeNode to fetch booleans when getAttribute lies\n\t\taddHandle( booleans, boolHandler, div.getAttribute(\"disabled\") == null );\n\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t// Support: IE<9\n\t// Retrieving value should defer to defaultValue\n\tsupport.input = assert(function( div ) {\n\t\tdiv.innerHTML = \"<input>\";\n\t\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\t\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n\t});\n\n\t// IE6/7 still return empty string for value,\n\t// but are actually retrieving the property\n\taddHandle( \"value\", valueHandler, support.attributes && support.input );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Check if getElementsByClassName can be trusted\n\tsupport.getElementsByClassName = assert(function( div ) {\n\t\tdiv.innerHTML = \"<div class='a'></div><div class='a i'></div>\";\n\n\t\t// Support: Safari<4\n\t\t// Catch class over-caching\n\t\tdiv.firstChild.className = \"i\";\n\t\t// Support: Opera<10\n\t\t// Catch gEBCN failure to find non-leading classes\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = isNative(doc.querySelectorAll)) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Support: Opera 10-12/IE8\n\t\t\t// ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type attribute is restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"t\", \"\" );\n\n\t\t\tif ( div.querySelectorAll(\"[t^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = isNative( (matches = docElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = isNative(docElem.contains) || docElem.compareDocumentPosition ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n\t// Detached nodes confoundingly follow *each other*\n\tsupport.sortDetached = assert(function( div1 ) {\n\t\t// Should return 1, but returns 4 (following)\n\t\treturn div1.compareDocumentPosition( doc.createElement(\"div\") ) & 1;\n\t});\n\n\t// Document order sorting\n\tsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );\n\n\t\tif ( compare ) {\n\t\t\t// Disconnected nodes\n\t\t\tif ( compare & 1 ||\n\t\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t\tif ( a === doc || contains(preferredDoc, a) ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( b === doc || contains(preferredDoc, b) ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\t// Maintain original order\n\t\t\t\treturn sortInput ?\n\t\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t\t0;\n\t\t\t}\n\n\t\t\treturn compare & 4 ? -1 : 1;\n\t\t}\n\n\t\t// Not directly comparable, sort on existence of method\n\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\t} else if ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch(e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [elem] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = ( fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined );\n\n\treturn val === undefined ?\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull :\n\t\tval;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[5] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] && match[4] !== undefined ) {\n\t\t\t\tmatch[2] = match[4];\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === elem.type );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar data, cache, outerCache,\n\t\t\t\tdirkey = dirruns + \" \" + doneName;\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {\n\t\t\t\t\t\t\tif ( (data = cache[1]) === true || data === cachedruns ) {\n\t\t\t\t\t\t\t\treturn data === true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcache = outerCache[ dir ] = [ dirkey ];\n\t\t\t\t\t\t\tcache[1] = matcher( elem, context, xml ) || cachedruns;\n\t\t\t\t\t\t\tif ( cache[1] === true ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\t// A counter to specify which element is currently being matched\n\tvar matcherCachedRuns = 0,\n\t\tbySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = matcherCachedRuns;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++matcherCachedRuns;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector );\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Chrome<<14\n// Always assume duplicates if they aren't passed to the comparison function\n[0, 0].sort( sortOrder );\nsupport.detectDuplicates = hasDuplicate;\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function( support ) {\n\n\tvar all, a, input, select, fragment, opt, eventName, isSupported, i,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Finish early in limited (non-browser) environments\n\tall = div.getElementsByTagName(\"*\") || [];\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !a || !a.style || !all.length ) {\n\t\treturn support;\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName(\"tbody\").length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName(\"link\").length;\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Make sure that element opacity exists\n\t// (IE uses filter instead)\n\t// Use a regex to work around a WebKit issue. See #5145\n\tsupport.opacity = /^0.5/.test( a.style.opacity );\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!a.style.cssFloat;\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone = document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Will be defined later\n\tsupport.inlineBlockNeedsLayout = false;\n\tsupport.shrinkWrapBlocks = false;\n\tsupport.pixelPosition = false;\n\tsupport.deleteExpando = true;\n\tsupport.noCloneEvent = true;\n\tsupport.reliableMarginRight = true;\n\tsupport.boxSizingReliable = true;\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<9\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement(\"input\");\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"checked\", \"t\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( input );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)\n\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\tdiv.setAttribute( eventName = \"on\" + i, \"t\" );\n\n\t\tsupport[ i + \"Bubbles\" ] = eventName in window || div.attributes[ eventName ].expando === false;\n\t}\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: IE<9\n\t// Iteration over object's inherited properties before its own.\n\tfor ( i in jQuery( support ) ) {\n\t\tbreak;\n\t}\n\tsupport.ownLast = i !== \"0\";\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, marginDiv, tds,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\";\n\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Support: IE8\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior.\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.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%;\";\n\n\t\t// Workaround failing boxSizing test due to offsetWidth returning wrong value\n\t\t// with some non-1 values of body zoom, ticket #13543\n\t\tjQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {\n\t\t\tsupport.boxSizing = div.offsetWidth === 4;\n\t\t});\n\n\t\t// Use window.getComputedStyle because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = div.appendChild( document.createElement(\"div\") );\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== core_strundefined ) {\n\t\t\t// Support: IE<8\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Support: IE6\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tif ( support.inlineBlockNeedsLayout ) {\n\t\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t\t// Support: IE<8\n\t\t\t\tbody.style.zoom = 1;\n\t\t\t}\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\t// Null elements to avoid leaks in IE\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tall = select = fragment = opt = a = input = null;\n\n\treturn support;\n})({});\n\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ){\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"applet\": true,\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\t// Do not set data on non-element because it will not be cleared (#8335).\n\t\tif ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar attrs, name,\n\t\t\tdata = null,\n\t\t\ti = 0,\n\t\t\telem = this[0];\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattrs = elem.attributes;\n\t\t\t\t\tfor ( ; i < attrs.length; i++ ) {\n\t\t\t\t\t\tname = attrs[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf(\"data-\") === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook,\n\trclass = /[\\t\\r\\n\\f]/g,\n\trreturn = /\\r/g,\n\trfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tgetSetInput = jQuery.support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = jQuery.trim( cur );\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.match( core_rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === core_strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed \"false\",\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar ret, hooks, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Use proper attribute retrieval(#6932, #12072)\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\telem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === core_strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( core_rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;\n\n\tjQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar fn = jQuery.expr.attrHandle[ name ],\n\t\t\t\tret = isXML ?\n\t\t\t\t\tundefined :\n\t\t\t\t\t/* jshint eqeqeq: false */\n\t\t\t\t\t(jQuery.expr.attrHandle[ name ] = undefined) !=\n\t\t\t\t\t\tgetter( elem, name, isXML ) ?\n\n\t\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\t\tnull;\n\t\t\tjQuery.expr.attrHandle[ name ] = fn;\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\treturn name === \"value\" || value === elem.getAttribute( name ) ?\n\t\t\t\tvalue :\n\t\t\t\tundefined;\n\t\t}\n\t};\n\tjQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =\n\t\t// Some attributes are constructed with empty-string values when not defined\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\t(ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t};\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\treturn ret && ret.specified ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !jQuery.support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !jQuery.support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = core_hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = core_hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = core_slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Even when returnValue equals to undefined Firefox will still show alert\n\t\t\t\tif ( event.result !== undefined ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === core_strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\nvar isSimple = /^.[^:#\\[\\.,]*$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tcur = ret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( jQuery.unique(all) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tvar elem = elems[ 0 ];\n\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}));\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\tmanipulation_rcheckableType = /^(?:checkbox|radio)$/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: jQuery.support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\"  ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar\n\t\t\t// Snapshot the DOM in case .domManip sweeps something relevant into its fragment\n\t\t\targs = jQuery.map( this, function( elem ) {\n\t\t\t\treturn [ elem.nextSibling, elem.parentNode ];\n\t\t\t}),\n\t\t\ti = 0;\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\tvar next = args[ i++ ],\n\t\t\t\tparent = args[ i++ ];\n\n\t\t\tif ( parent ) {\n\t\t\t\t// Don't use the snapshot next if it has moved (#13810)\n\t\t\t\tif ( next && next.parentNode !== parent ) {\n\t\t\t\t\tnext = this.nextSibling;\n\t\t\t\t}\n\t\t\t\tjQuery( this ).remove();\n\t\t\t\tparent.insertBefore( elem, next );\n\t\t\t}\n\t\t// Allow new content to include elements from the context set\n\t\t}, true );\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn i ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback, allowIntersection ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = core_concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction || !( l <= 1 || typeof value !== \"string\" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback, allowIntersection );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Hope ajax is available...\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && manipulation_rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tcore_push.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( manipulation_rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== core_strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcore_deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evalUrl: function( url ) {\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"script\",\n\t\t\tasync: false,\n\t\t\tglobal: false,\n\t\t\t\"throws\": true\n\t\t});\n\t}\n});\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\nvar iframe, getStyles, curCSS,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\t// isHidden might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\n\t\t\tif ( !values[ index ] ) {\n\t\t\t\thidden = isHidden( elem );\n\n\t\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\tvar len, styles,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !jQuery.support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\n// NOTE: we've included the \"window\" in window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar width, minWidth, maxWidth,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar left, rs, rsLeft,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\t\t\tret = computed ? computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe ||\n\t\t\t\tjQuery(\"<iframe frameborder='0' width='0' height='0'/>\")\n\t\t\t\t.css( \"cssText\", \"display:block !important\" )\n\t\t\t).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;\n\t\t\tdoc.write(\"<!doctype html><html><body>\");\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n// Called ONLY from within css_defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\t\tdisplay = jQuery.css( elem[0], \"display\" );\n\telem.remove();\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, \"display\" ) ) ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\t\t\tcomputed;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\t// Support: Opera <= 12.12\n\t\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t\t(!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\tvar type = this.type;\n\t\t\t// Use .is(\":disabled\") so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !manipulation_rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\tajax_nonce = jQuery.now(),\n\n\tajax_rquery = /\\?/,\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat(\"*\");\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[0] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar deep, key,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ){\n\tjQuery.fn[ type ] = function( fn ){\n\t\treturn this.on( type, fn );\n\t};\n});\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( core_rnotwhite ) || [\"\"];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + ajax_nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ajax_nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\tvar firstDataType, ct, finalDataType, type,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( ajax_nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( ajax_rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\nvar xhrCallbacks, xhrSupported,\n\txhrId = 0,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject && function() {\n\t\t// Abort all pending requests\n\t\tvar key;\n\t\tfor ( key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t};\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\nxhrSupported = jQuery.ajaxSettings.xhr();\njQuery.support.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = jQuery.support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( err ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, responseHeaders, statusText, responses;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// we're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9\n// Panic based approach to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || jQuery._data( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = jQuery._data( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) ) {\n\t\tjQuery.fx.start();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, win,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== core_strundefined ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\treturn {\n\t\ttop: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),\n\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t};\n};\n\njQuery.offset = {\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true)\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\") === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Limit scope pollution from any deprecated API\n// (function() {\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// })();\nif ( typeof module === \"object\" && module && typeof module.exports === \"object\" ) {\n\t// Expose jQuery as module.exports in loaders that implement the Node\n\t// module pattern (including browserify). Do not create the global, since\n\t// the user will be storing it themselves locally, and globals are frowned\n\t// upon in the Node module world.\n\tmodule.exports = jQuery;\n} else {\n\t// Otherwise expose jQuery to the global object as usual\n\twindow.jQuery = window.$ = jQuery;\n\n\t// Register as a named AMD module, since jQuery can be concatenated with other\n\t// files that may use define, but not via a proper concatenation script that\n\t// understands anonymous AMD modules. A named AMD is safest and most robust\n\t// way to register. Lowercase jquery is used because AMD module names are\n\t// derived from file names, and jQuery is normally delivered in a lowercase\n\t// file name. Do this after creating the global so that if an AMD module wants\n\t// to call noConflict to hide this version of jQuery, it will work.\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( \"jquery\", [], function () { return jQuery; } );\n\t}\n}\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/jquery.dialog.js",
    "content": "﻿\n(function($) {\n    /**\n     * @name Dialog\n     * @class 弹出框,可拖拽，设置宽和高，有无遮罩，\n     */\n    $.uedWidget('ued.Dialog', {\n        options : /**@lends Dialog# */\n        {\n            /**\n             *传入的标题\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({ title :\"string\"}})\n             */\n            title : null,\n            /**\n             *下端按钮，如果有数值，则添加，默认没有按钮\n             * @type object\n             * @default null\n             * @example\n             *  $(\"#dialog\").uedDialog({buttons:[\"false\":function(){\n             *     alert(2)\n             * },\"true\":function(){\n             *     alert(3)\n             * }]})\n             */\n            buttons : null,\n            /**\n             *是否有遮罩，添加在body下,默认有\n             * @type boolean\n             * @default true\n             * @example\n             *  $(\"#dialog\").uedDialog({modal:false})\n             */\n            modal : false,\n            /**\n             *定位,如果没有传入默认居中,以百分比为单位\n             * @type object\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({position:[50,10]})\n             */\n            position : null,\n            /**\n             *dialog的宽度\n             * @type int\n             * @default 300\n             * @example\n             *  $(\"#dialog\").uedDialog({width:500})\n             */\n            width : 300,\n            /**\n             *dialog的高度\n             * @type int\n             * @default 200\n             * @example\n             * $(\"#dialog\").uedDialog({height:500})\n             */\n            height : 200,\n            /**\n             *是否可以拖拽\n             * @type boolean\n             * @default true\n             * @example\n             *  $(\"#dialog\").uedDialog({isDrag:false})\n             */\n            isDrag : true,\n            /**\n             *默认打开\n             * @type boolean\n             * @default false\n             * @example\n             *  $(\"#dialog\").uedDialog({autoOpen:false})\n             */\n            autoOpen : false,\n            /**\n             *提示类型\"success\",\"error\",\"confirm\",\"warning\"\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({type:\"success\"})\n             */\n            type : null,\n            /**\n             *提示信息\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({message:\"tishixingxing\"})\n             */\n            message : null,\n\t\t\t/*\n\t\t\t * 弹窗关闭后的回调,默认为null\n\t\t\t */\n\t\t\tcloseCallback : null,\n            /*\n             * 弹窗的定位方式，默认为true  \n             */\n            fixed:true\n        },\n       \n        _create : function() {\n            var $el = this.element, options = this.options, self = this;\n            var _define = this._define = {};\n\t\t\t//创建弹窗节点\n\t\t\tthis._createDialogDom($el, options, _define);\n\t\t\t//设置弹窗属性\n\t\t\tthis._calDialogAttr($el, options, _define);\n\t\t\t//绑定弹窗事件\n\t\t\tthis._bindEvent($el, options, _define);\n        },\n       \n\t    _createDialogDom : function($el, options, _define){\n\t\t\tvar $farther = _define.$farther = $el.parent(), buttons = options.buttons;\n\t\t\tvar $dialog = _define.$dialog = $('<div class=\"ui-dialog-panel\"><div class=\"ui-dialog\"></div><div class=\"ui-dialog-leftYY\"></div><div class=\"ui-dialog-rightYY\"></div><div class=\"ui-dialog-bottomLeft\"></div><div class=\"ui-dialog-bottomRight\"></div><div class=\"ui-dialog-bottomCenter\"></div></div>');\n\t\t\t//创建弹窗头部区域\n\t\t\tvar $dialogHd = _define.$dialogHd = $('<div class=\"ui-dialog-hd\"><h6></h6><a href=\"javascript:;\" class=\"ui-dialog-close ue-state-default\"><i></i></a></div>');\n\t\t\t//创建弹窗内容区域\n\t\t\tvar $dialogContent = _define.$dialogContent = $el.addClass('ui-dialog-content');\n\t\t\tif(options.type){\n\t\t\t\t//创建提示型弹窗提示区域\n\t\t\t\tthis._createMessageDom($el, $dialogContent, options);\n\t\t\t}else{\n\t\t\t\t//普通型弹窗内为iframe时，拖动卡顿\n\t\t\t\tif($el.children().is('iframe')){\n\t\t\t\t\tvar $contentMask = _define.$contentMask = $('<div style=\"position:absolute;top:45px;left:0;right:0;bottom:0;display:none\"></div>');\n\t\t\t\t\t$dialogContent.append($contentMask);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$el.css('display','block');//显示$el内容\n\t\t\t\n\t\t\t$dialog.children('.ui-dialog').append($dialogHd).append($dialogContent);\n\t\t\t//创建弹窗底部区域\n\t\t\tvar $dialogFt = _define.$dialogFt = $('<div class=\"ui-dialog-ft\"></div>');\n\t\t\tif(buttons){\n\t\t\t\tvar buttonArray = [];\n\t\t\t\tfor(var i = 0, len = buttons.length; i < len; i++){\n\t\t\t\t\tvar button = buttons[i], length = this._returnLetterLength(button.label);\n\t\t\t\t\tlength = length < 3 ? 3 : length;\n\t\t\t\t\tif(button.recommend){\n\t\t\t\t\t\tbuttonArray.push('<button type=\"button\" class=\"ue-button-recommend ue-state-default long' + length + '\">'+ button.label +'</button>');\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbuttonArray.push('<button type=\"button\" class=\"ue-button ue-state-default long' + length + '\">'+ button.label +'</button>');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$dialogFt.append(buttonArray.join(''));\n\t\t\t\t$dialog.children().append($dialogFt);\n\t\t\t}\n\t\t\t\n\t\t\t//判断是否需要生成遮罩\n\t\t\tif(!options.modal){\n\t\t\t\tvar $dragMask = _define.$dragMask = $('<div style=\"position: fixed;z-index:9999;top:0;left:0;right:0;bottom:0;display:none\"></div>');\n           \t\t $('body').append($dragMask);\n\t\t\t}\n\t\t\t\n\t\t\t//插入到$farther中去\n\t\t\t$farther.append($dialog.hide());\n\t\t},\n\t\t/*\n\t\t * 创建提示型弹窗提示区域\n\t\t */\n\t\t_createMessageDom : function($el, $dialogContent, options){\n\t\t\tvar type = options.type, _define = this._define;\n\t\t\t\n\t\t\t_define.$dialog.addClass('ui-dialog-'+type);\n\t\t\t//创建节点\n\t\t\t$dialogContent.empty().append('<div class=\"ui-dialog-icon\"></div><div class=\"ui-dialog-text\"><span class=\"patch\"></span><span class=\"dialog-text\"></span></div>');\n\t\t\tvar $dialogMessage = _define.$dialogMessage = $dialogContent.find('.dialog-text');\n\t\t},\n\t\t\n\t\t_calDialogAttr : function($el, options, _define){\n\t\t\t\n\t\t\tthis.setTitle(options.title);\n\t\t\tif(!options.type){\n\t\t\t\t//普通弹窗\n\t\t\t\tthis.setWidth(options.width);\n\t\t\t\tthis.setHeight(options.height);\n\t\t\t}else{\n\t\t\t\t//提示型弹窗\n\t\t\t\tthis.setWidth(355);\n\t\t\t\tthis.setHeight(145);\n\t\t\t\tthis.setMessage(options.message);\n\t\t\t}\n\t\t\t//设置弹窗的位置\n\t\t\tthis.setPosition(options.position);\n\t\t\t\n\t\t\tif(options.autoOpen){\n\t\t\t\tthis.open();\n\t\t\t}\n\t\t},\n\t\t\n\t\t_calLeft : function(_left, _define){\n\t\t\tif(_left == 'left'){\n\t\t\t\t_define.left = 0;\n\t\t\t}else{\n\t\t\t\t_define.left = ($(window).width() - _define.width) / 2;\n\t\t\t\t_define.left = _define.left < 0 ? 0 : _define.left;\n\t\t\t}\n\t\t},\n\t\t\n\t\t_calTop : function(_top, _define){\n\t\t\tif(_top == 'top'){\n\t\t\t\t_define.top = 0;\n\t\t\t}else{\n\t\t\t\t_define.top = ($(window).height() - _define.height) / 2;\n\t\t\t\t_define.top = _define.top < 0 ? 0 : _define.top;\n\t\t\t}\n\t\t},\n\t\t\n\t\t_bindEvent : function($el, options, _define){\n\t\t\tvar self = this;\n\t\t\t//绑定关闭按钮事件\n\t\t\t_define.$dialogHd.children('.ui-dialog-close').click(function(){\n\t\t\t\tself.close();\n\t\t\t});\n\t\t\t\n\t\t\t//绑定弹窗拖拽事件\n\t\t\tif(options.isDrag){\n\t\t\t\tself._dialogDrag(self, _define);\n\t\t\t}\n\t\t\t//绑定按钮点击事件\n\t\t\tvar buttons = options.buttons;\n\t\t\tif(buttons){\n\t\t\t\t_define.$dialogFt.bind('click',function(e){\n\t\t\t\t\tvar $target = $(e.target), button = buttons[$target.index()];\n\t\t\t\t\tif($target.is('button')){\n\t\t\t\t\t\tif(!button.setFunc){\n\t\t\t\t\t\t\tbutton.callBack && button.callBack(self.element, $('#__mask',$('body')));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbutton.callBack && button.callBack(button.param);\n\t\t\t\t\t\t\tself.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t/*\n\t\t * 弹窗拖动函数\n\t\t * @param {Object} self 弹窗对象\n\t\t * @param {Object} _define组件内部自定义对象。用来存放临时值 \n\t\t */\n\t\t_dialogDrag : function(self, _define){\n\t\t\tvar $dragMask = _define.$dragMask, $contentMask = _define.$contentMask;\n\t\t\tvar $dialogHd = _define.$dialogHd, $dialog = _define.$dialog, winWidth, winHeight;\n\t\t\tvar left,top,dialogWidth = _define.width, dialogHeight = _define.height;\n\t\t\tvar tempX, tempY;\n\t\t\t$dialogHd.css('cursor','move');\n\t\t\t$dialogHd.bind('mousedown',function(e){\n\t\t\t\t//e.preventDefault();\n\t\t\t\t//获取最新值\n\t\t\t\tleft = _define.left, top = _define.top, tempX = e.clientX, tempY = e.clientY, winWidth = $(window).width(), winHeight = $(window).height();\n\n\t\t\t\tif(!self.options.fixed){//定位为absolute\n\t\t\t\t\twinHeight = $(document).outerHeight();\n\t\t\t\t}\n\t\t\t\t$contentMask && $contentMask.show();\n\t\t\t\t$dragMask && $dragMask.show();\n\t\t\t\tthis.setCapture && this.setCapture();\n\t\t\t\t$(document).bind('mousemove',mouseMove).bind('mouseup',mouseUp);\n\t\t\t});\t\n\t\t\t\n\t\t\tvar mouseMove = function(e){\n\t\t\t\t_define.left = e.clientX - tempX + left;\n\t\t\t\t_define.top = e.clientY - tempY + top;\n\t\t\t\t_define.left = _define.left < 0 ? 0 : _define.left > (winWidth - dialogWidth) ? (winWidth - dialogWidth) : _define.left;\n\t\t\t\t_define.top = _define.top < 0 ? 0 : _define.top > (winHeight - dialogHeight) ? (winHeight - dialogHeight) : _define.top;\n\t\t\t\t$dialog.css({'left':_define.left,'top':_define.top});\n\t\t\t}\n\t\t\tvar mouseUp = function(e){\n\t\t\t\tthis.releaseCapture && this.releaseCapture();\n\t\t\t\t$contentMask && $contentMask.hide();\n\t\t\t\t$dragMask && $dragMask.hide();\n\t\t\t\t$(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置标题。\n\t\t * @param {String or Object} _title 弹窗标题\n\t\t */\n\t\tsetTitle : function(_title){\n\t\t\tvar _define = this._define, $dialogHd = _define.$dialogHd;\n\t\t\tif(_title){\n\t\t\t\t$dialogHd.find('h6').empty().append('<span class=\"dialog-hd-lc\"></span>' + _title + '<span class=\"dialog-hd-rc\"></span>');\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置宽度\n\t\t * @param {int} _width 弹窗宽度\n\t\t */\n\t\tsetWidth : function(_width){\n\t\t\tvar _define = this._define, $dialogContent = _define.$dialogContent;\n\t\t\t$dialogContent.width(_width);\n\t\t\t//存储弹窗宽度，以便后期计算位置\n\t\t\t_define.width = $dialogContent.outerWidth() + 10;\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置高度\n\t\t * @param {int} _height 弹窗高度\n\t\t */\n\t\tsetHeight : function(_height){\n\t\t\tvar _define = this._define, $dialogContent = _define.$dialogContent;\n\t\t\t$dialogContent.height(_height);\n\t\t\t//存储弹窗高度，以便后期计算位置\n\t\t\t_define.height = $dialogContent.outerHeight() + 50;\n\t\t},\n\t\t/*\n\t\t * 给提示型弹窗设置提示信息\n\t\t * @param {String or Object} _message 提示弹窗的提示信息\n\t\t */\n\t\tsetMessage : function(_message){\n\t\t\tif(!_message) return;\n\t\t\tvar _define = this._define, $dialogMessage = _define.$dialogMessage;\n\t\t\t$dialogMessage.empty().append(_message);\n\t\t}, \n\t\t/*\n\t\t * 设置弹窗的位置\n\t\t */\n\t\tsetPosition : function(_position){\n\t\t\tif(!_position){\n\t\t\t\t_position = ['center','center'];\n\t\t\t}\n\t\t\tvar _define = this._define ,left = _position[0], top = _position[1], options = this.options;\n\t\t\t_define.left = left, _define.top = top;\n\t\t\tif(typeof left != 'number'){\n\t\t\t\t//计算弹窗的left值\n\t\t\t\tthis._calLeft(left, _define);\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof top != 'number'){\n\t\t\t\t//计算弹窗的left值\n\t\t\t\tthis._calTop(top, _define);\n\t\t\t}\n\t\t\t\n\t\t\t//赋值给弹窗\n\t\t\tif(options.fixed){\n\t\t\t\t_define.$dialog.css({'position':'fixed','left':_define.left,'top':_define.top});\n\t\t\t}else{\n\t\t\t\t_define.$dialog.css({'position':'absolute','left':_define.left,'top':_define.top});\t\n\t\t\t}\n\t\t},\n\t\t\n\t\topen : function(){\n\t\t\tvar _define = this._define, $dialog = _define.$dialog , options = this.options, isMask = options.modal;\t\n\t\t\tisMask &&　$.mask.open('ued-dialog');\n\t\t\tif(!options.fixed && options.position[1]=='center'){\n\t\t\t\t//如果弹窗不是fiexd定位，且top为center时，打开前需要+scrollTop\n\t\t\t\t_define.top += $(window).scrollTop();\n\t\t\t\t$dialog.css('top',_define.top);\n\t\t\t}\n\t\t\t$dialog.show();\n\t\t},\n\t\t\n\t\tclose : function(){\n\t\t\tvar  _define = this._define, $dialog = _define.$dialog, closeCallback = this.options.closeCallback, isMask = this.options.modal;\t\n\t\t\tisMask &&　$.mask.close('ued-dialog');\n\t\t\t$dialog.hide();\n\t\t\tcloseCallback &&　closeCallback.call(this.element,this.element,$('#__mask',$('body')));\n\t\t},\n        _init : function() {\n           // var self = this, options = this.options, $el = this.element;\n        },\n\t\t_returnLetterLength : function(_str){\n\t\t\treturn _str.replace(/[a-z0-9]{2}/ig,'a').length;\t\n\t\t},\n\t\tremove : function(){\n\t\t\tthis._define.$dialog.remove();\t\n\t\t\t$.mask.close('ued-dialog');\n\t\t\tthis._define = null;\n\t\t},\n\t\t/*\n         * 用于修改第一个button的默认函数 addBy xzjiang,update rbai\n         * @param {Object} _func 函数体\n         * @param {string} _param\n\t\t */\n        setFunc : function(_func, _param) {\n\n            var self = this, options = this.options, firstButton = options.buttons[0];\n\t\t\tfirstButton.callBack = _func;\n\t\t\tfirstButton.param = _param;\n\t\t\tfirstButton.setFunc = true;\n        }\n    });\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\tvar onclicktmp = null; \n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", onclicktmp = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t\tdiv.detachEvent( \"onclick\", onclicktmp);  // adamki added\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/jquery.pagination.js",
    "content": "jQuery.fn.pagination = function(maxentries, opts) {\n\topts = jQuery.extend({\n\t\t\t\titems_per_page : 5, // 每页显示多少条记录\n\t\t\t\tcurrent_page : 0,      //当前页码\n\t\t\t\tnum_display_entries : 4, // 中间显示页码的个数\n\t\t\t\tnum_edge_entries : 2, // 末尾显示页码的个数\n\t\t\t\tlink_to : \"javascript:;\",         //页码点击后的链接\n\t\t\t\tprev_text : \"&lt;&nbsp;上一页\",   //上一页的文字\n\t\t\t\tnext_text : \"下一页&nbsp;&gt;\",\t   //下一页的文字\n\t\t\t\tellipse_text : \"...\",  //页码之间的省略号\n\t\t\t\tdisplay_msg : true, // 是否显示记录信息\n\t\t\t\tprev_show_always : true, //是否总是显示最前页\n\t\t\t\tnext_show_always : true,//是否总是显示最后页\n\t\t\t\tsetPageNo:false,//是否显示跳转第几页\n\t\t\t\tcallback : function() {\n\t\t\t\t\treturn false;\n\t\t\t\t} // 回调函数\n\t\t\t}, opts || {});\n\n\treturn this.each(function() {\n\t\t// 总页数\n\t\tfunction numPages() {\n\t\t\treturn Math.ceil(maxentries / opts.items_per_page);\n\t\t}\n\t\t/**\n\t\t * 计算页码\n\t\t */\n\t\tfunction getInterval() {\n\t\t\tvar ne_half = Math.ceil(opts.num_display_entries / 2);\n\t\t\tvar np = numPages();\n\t\t\tvar upper_limit = np - opts.num_display_entries;\n\t\t\tvar start = current_page > ne_half ? Math.max(Math.min(current_page\n\t\t\t\t\t\t\t\t\t- ne_half, upper_limit), 0) : 0;\n\t\t\tvar end = current_page > ne_half ? Math.min(current_page + ne_half,\n\t\t\t\t\tnp) : Math.min(opts.num_display_entries, np);\n\t\t\treturn [start, end];\n\t\t}\n\n\t\t/**\n\t\t * 点击事件\n\t\t */\n\t\tfunction pageSelected(page_id, evt) {\n\t\t\tvar page_id = parseInt(page_id);\n\t\t\tcurrent_page = page_id;\n\t\t\tdrawLinks();\n\t\t\tvar continuePropagation = opts.callback(page_id, panel);\n\t\t\tif (!continuePropagation) {\n\t\t\t\tif (evt.stopPropagation) {\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t} else {\n\t\t\t\t\tevt.cancelBubble = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn continuePropagation;\n\t\t}\n\n\t\t/**\n\t\t * 链接\n\t\t */\n\t\tfunction drawLinks() {\n\t\t\tpanel.empty();\n\t\t\t$pagin.empty();\n\t\t\tpanel.append($pagin);\n\t\t\tvar interval = getInterval();\n\t\t\tvar np = numPages();\n\t\t\tvar getClickHandler = function(page_id) {\n\t\t\t\treturn function(evt) {\n\t\t\t\t\treturn pageSelected(page_id, evt);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar appendItem = function(page_id, appendopts) {\n\t\t\t\tpage_id = page_id < 0 ? 0 : (page_id < np ? page_id : np-1);\n\t\t\t\tappendopts = jQuery.extend({\n\t\t\t\t\t\t\ttext : page_id+1,\n\t\t\t\t\t\t\tclasses : \"\"\n\t\t\t\t\t\t}, appendopts || {});\n\t\t\t\tif (page_id == current_page) {\n\t\t\t\t\tvar lnk = $(\"<span class='current'>\" + (appendopts.text)\n\t\t\t\t\t\t\t+ \"</span>\");\n\t\t\t\t} else {\n\t\t\t\t\tvar lnk = $(\"<a>\" + (appendopts.text) + \"</a>\").bind(\n\t\t\t\t\t\t\t\"click\", getClickHandler(page_id)).attr('href',\n\t\t\t\t\t\t\topts.link_to.replace(/__id__/, page_id));\n\n\t\t\t\t}\n\t\t\t\tif (appendopts.classes) {\n\t\t\t\t\tlnk.addClass(appendopts.classes);\n\t\t\t\t}\n\t\t\t\t$pagin.append(lnk);\n\t\t\t}\n\t\t\t// 上一页\n\t\t\tif (opts.prev_text && (current_page > 0 || opts.prev_show_always)) {\n\t\t\t\tappendItem(current_page - 1, {\n\t\t\t\t\t\t\ttext : opts.prev_text,\n\t\t\t\t\t\t\tclasses : \"prev\"\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\t// 点点点\n\t\t\tif (interval[0] > 0 && opts.num_edge_entries > 0) {\n\t\t\t\tvar end = Math.min(opts.num_edge_entries, interval[0]);\n\t\t\t\tfor (var i = 0; i < end; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\t\t\t\tif (opts.num_edge_entries < interval[0] && opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($pagin);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 中间的页码\n\t\t\tfor (var i = interval[0]; i < interval[1]; i++) {\n\t\t\t\tappendItem(i);\n\t\t\t}\n\t\t\t// 最后的页码\n\t\t\tif (interval[1] < np && opts.num_edge_entries > 0) {\n\t\t\t\tif (np - opts.num_edge_entries > interval[1]\n\t\t\t\t\t\t&& opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($pagin);\n\t\t\t\t}\n\t\t\t\tvar begin = Math.max(np - opts.num_edge_entries, interval[1]);\n\t\t\t\tfor (var i = begin; i < np; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// 下一页\n\t\t\tif (opts.next_text\n\t\t\t\t\t&& (current_page < np - 1 || opts.next_show_always)) {\n\t\t\t\tappendItem(current_page + 1, {\n\t\t\t\t\t\t\ttext : opts.next_text,\n\t\t\t\t\t\t\tclasses : \"next\"\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\t// 记录显示\n\t\t\tif (opts.display_msg) {\n\t\t\t\tif(!maxentries){\n\t\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t\t\t}else{\n\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">显示第&nbsp;'\n\t\t\t\t\t\t\t\t+ ((current_page * opts.items_per_page) + 1)\n\t\t\t\t\t\t\t\t+ '&nbsp;条到&nbsp;'\n\t\t\t\t\t\t\t\t+ (((current_page + 1) * opts.items_per_page) > maxentries\n\t\t\t\t\t\t\t\t\t\t? maxentries\n\t\t\t\t\t\t\t\t\t\t: ((current_page + 1) * opts.items_per_page))\n\t\t\t\t\t\t\t\t+ '&nbsp;条记录，总共&nbsp;' + maxentries + '&nbsp;条</div>');\n\t\t\t\t}\n\t\t\t}\n\t\t\t//设置跳到第几页\n\t\t\tif(opts.setPageNo){\n\t\t\t\t  $(\"<div class='goto'><span class='text'>转到第</span><input type='text'/><span class='page'>页</span><a href='javascript:;'>转</a></div>\").insertBefore($pagin);\t\n\t\t\t}\n\t\t}\n\n\t\t// 当前页\n\t\tvar current_page = opts.current_page;\n\t\tmaxentries = ( maxentries < 0) ? 0 : maxentries;\n\t\topts.items_per_page = (!opts.items_per_page || opts.items_per_page < 0)\n\t\t\t\t? 1\n\t\t\t\t: opts.items_per_page;\n\t\tvar panel = jQuery(this),\n\t\t\t$pagin = $('<div class=\"pagin-list\"></div>');\n\t\t\t\n\t\t\n\t\tthis.selectPage = function(page_id) {\n\t\t\tpageSelected(page_id);\n\t\t}\n\t\tthis.prevPage = function() {\n\t\t\tif (current_page > 0) {\n\t\t\t\tpageSelected(current_page - 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tthis.nextPage = function() {\n\t\t\tif (current_page < numPages() - 1) {\n\t\t\t\tpageSelected(current_page + 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(maxentries==0){\n\t\t\tpanel.append('<span class=\"current prev\">'+opts.prev_text+'</span><span class=\"current next\">'+opts.next_text+'</span><div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t}else{\n\t\t\tdrawLinks();\n\t\t}\n\t\t$(this).find(\".goto a\").on(\"click\",function(evt){\n\t\t\tvar setPageNo = $(this).parent().find(\"input\").val();\n\t\t\tif(setPageNo!=null && setPageNo!=\"\"&&setPageNo>0&&setPageNo<=numPages()){\n\t\t\t\tpageSelected(setPageNo-1, evt);\n\t\t\t}\n\t\t});\t\t\n\t});\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/jquery.searchableSelect.js",
    "content": "// Author: David Qin\n// E-mail: david@hereapp.cn\n// Date: 2014-11-05\n\n(function($){\n\n  // a case insensitive jQuery :contains selector\n  $.expr[\":\"].searchableSelectContains = $.expr.createPseudo(function(arg) {\n    return function( elem ) {\n      return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n    };\n  });\n\n  $.searchableSelect = function(element, options) {\n    this.element = element;\n    this.options = options || {};\n    this.init();\n\n    var _this = this;\n\n    this.searchableElement.click(function(event){\n      // event.stopPropagation();\n      _this.show();\n    }).on('keydown', function(event){\n      if (event.which === 13 || event.which === 40 || event.which == 38){\n        event.preventDefault();\n        _this.show();\n      }\n    });\n\n    $(document).on('click', null, function(event){\n      if(_this.searchableElement.has($(event.target)).length === 0)\n        _this.hide();\n    });\n\n    this.input.on('keydown', function(event){\n      event.stopPropagation();\n      if(event.which === 13){         //enter\n        event.preventDefault();\n        _this.selectCurrentHoverItem();\n        _this.hide();\n      } else if (event.which == 27) { //ese\n        _this.hide();\n      } else if (event.which == 40) { //down\n        _this.hoverNextItem();\n      } else if (event.which == 38) { //up\n        _this.hoverPreviousItem();\n      }\n    }).on('keyup', function(event){\n      if(event.which != 13 && event.which != 27 && event.which != 38 && event.which != 40)\n        _this.filter();\n    })\n  }\n\n  var $sS = $.searchableSelect;\n\n  $sS.fn = $sS.prototype = {\n    version: '0.0.1'\n  };\n\n  $sS.fn.extend = $sS.extend = $.extend;\n\n  $sS.fn.extend({\n    init: function(){\n      var _this = this;\n      this.element.hide();\n\n      this.searchableElement = $('<div tabindex=\"0\" class=\"searchable-select\"></div>');\n      this.holder = $('<div class=\"searchable-select-holder\"></div>');\n      this.dropdown = $('<div class=\"searchable-select-dropdown searchable-select-hide\"></div>');\n      this.input = $('<input type=\"text\" class=\"searchable-select-input\" />');\n      this.items = $('<div class=\"searchable-select-items\"></div>');\n      this.caret = $('<span class=\"searchable-select-caret\"></span>');\n\n      this.scrollPart = $('<div class=\"searchable-scroll\"></div>');\n      this.hasPrivious = $('<div class=\"searchable-has-privious\">...</div>');\n      this.hasNext = $('<div class=\"searchable-has-next\">...</div>');\n\n      this.hasNext.on('mouseenter', function(){\n        _this.hasNextTimer = null;\n\n        var f = function(){\n          var scrollTop = _this.items.scrollTop();\n          _this.items.scrollTop(scrollTop + 20);\n          _this.hasNextTimer = setTimeout(f, 50);\n        }\n\n        f();\n      }).on('mouseleave', function(event) {\n        clearTimeout(_this.hasNextTimer);\n      });\n\n      this.hasPrivious.on('mouseenter', function(){\n        _this.hasPriviousTimer = null;\n\n        var f = function(){\n          var scrollTop = _this.items.scrollTop();\n          _this.items.scrollTop(scrollTop - 20);\n          _this.hasPriviousTimer = setTimeout(f, 50);\n        }\n\n        f();\n      }).on('mouseleave', function(event) {\n        clearTimeout(_this.hasPriviousTimer);\n      });\n\n      this.dropdown.append(this.input);\n      this.dropdown.append(this.scrollPart);\n\n      this.scrollPart.append(this.hasPrivious);\n      this.scrollPart.append(this.items);\n      this.scrollPart.append(this.hasNext);\n\n      this.searchableElement.append(this.caret);\n      this.searchableElement.append(this.holder);\n      this.searchableElement.append(this.dropdown);\n      this.element.after(this.searchableElement);\n\n      this.buildItems();\n      this.setPriviousAndNextVisibility();\n    },\n\n    filter: function(){\n      var text = this.input.val();\n      this.items.find('.searchable-select-item').addClass('searchable-select-hide');\n      this.items.find('.searchable-select-item:searchableSelectContains('+text+')').removeClass('searchable-select-hide');\n      if(this.currentSelectedItem.hasClass('searchable-select-hide') && this.items.find('.searchable-select-item:not(.searchable-select-hide)').length > 0){\n        this.hoverFirstNotHideItem();\n      }\n\n      this.setPriviousAndNextVisibility();\n    },\n\n    hoverFirstNotHideItem: function(){\n      this.hoverItem(this.items.find('.searchable-select-item:not(.searchable-select-hide)').first());\n    },\n\n    selectCurrentHoverItem: function(){\n      if(!this.currentHoverItem.hasClass('searchable-select-hide'))\n        this.selectItem(this.currentHoverItem);\n    },\n\n    hoverPreviousItem: function(){\n      if(!this.hasCurrentHoverItem())\n        this.hoverFirstNotHideItem();\n      else{\n        var prevItem = this.currentHoverItem.prevAll('.searchable-select-item:not(.searchable-select-hide):first')\n        if(prevItem.length > 0)\n          this.hoverItem(prevItem);\n      }\n    },\n\n    hoverNextItem: function(){\n      if(!this.hasCurrentHoverItem())\n        this.hoverFirstNotHideItem();\n      else{\n        var nextItem = this.currentHoverItem.nextAll('.searchable-select-item:not(.searchable-select-hide):first')\n        if(nextItem.length > 0)\n          this.hoverItem(nextItem);\n      }\n    },\n\n    buildItems: function(){\n      var _this = this;\n      this.element.find('option').each(function(){\n        var item = $('<div class=\"searchable-select-item\" data-value=\"'+$(this).attr('value')+'\">'+$(this).text()+'</div>');\n\n        if(this.selected){\n          _this.selectItem(item);\n          _this.hoverItem(item);\n        }\n\n        item.on('mouseenter', function(){\n          $(this).addClass('hover');\n        }).on('mouseleave', function(){\n          $(this).removeClass('hover');\n        }).click(function(event){\n          event.stopPropagation();\n          _this.selectItem($(this));\n          _this.hide();\n        });\n\n        _this.items.append(item);\n      });\n\n      this.items.on('scroll', function(){\n        _this.setPriviousAndNextVisibility();\n      })\n    },\n    show: function(){\n      this.dropdown.removeClass('searchable-select-hide');\n      this.input.focus();\n      this.status = 'show';\n      this.setPriviousAndNextVisibility();\n    },\n\n    hide: function(){\n      if(!(this.status === 'show'))\n        return;\n\n      if(this.items.find(':not(.searchable-select-hide)').length === 0)\n          this.input.val('');\n      this.dropdown.addClass('searchable-select-hide');\n      this.searchableElement.trigger('focus');\n      this.status = 'hide';\n    },\n\n    hasCurrentSelectedItem: function(){\n      return this.currentSelectedItem && this.currentSelectedItem.length > 0;\n    },\n\n    selectItem: function(item){\n      if(this.hasCurrentSelectedItem())\n        this.currentSelectedItem.removeClass('selected');\n\n      this.currentSelectedItem = item;\n      item.addClass('selected');\n\n      this.hoverItem(item);\n\n      this.holder.text(item.text());\n      var value = item.data('value');\n      this.holder.data('value', value);\n      this.element.val(value);\n\n      if(this.options.afterSelectItem){\n        this.options.afterSelectItem.apply(this);\n      }\n    },\n\n    hasCurrentHoverItem: function(){\n      return this.currentHoverItem && this.currentHoverItem.length > 0;\n    },\n\n    hoverItem: function(item){\n      if(this.hasCurrentHoverItem())\n        this.currentHoverItem.removeClass('hover');\n\n      if(item.outerHeight() + item.position().top > this.items.height())\n        this.items.scrollTop(this.items.scrollTop() + item.outerHeight() + item.position().top - this.items.height());\n      else if(item.position().top < 0)\n        this.items.scrollTop(this.items.scrollTop() + item.position().top);\n\n      this.currentHoverItem = item;\n      item.addClass('hover');\n    },\n\n    setPriviousAndNextVisibility: function(){\n      if(this.items.scrollTop() === 0){\n        this.hasPrivious.addClass('searchable-select-hide');\n        this.scrollPart.removeClass('has-privious');\n      } else {\n        this.hasPrivious.removeClass('searchable-select-hide');\n        this.scrollPart.addClass('has-privious');\n      }\n\n      if(this.items.scrollTop() + this.items.innerHeight() >= this.items[0].scrollHeight){\n        this.hasNext.addClass('searchable-select-hide');\n        this.scrollPart.removeClass('has-next');\n      } else {\n        this.hasNext.removeClass('searchable-select-hide');\n        this.scrollPart.addClass('has-next');\n      }\n    }\n  });\n\n  $.fn.searchableSelect = function(options){\n    this.each(function(){\n      var sS = new $sS($(this), options);\n    });\n\n    return this;\n  };\n\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naLongWeekStr:[\"wk\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\naLongMonStr: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u8303\\u56F4,\\u9700\\u8981\\u64A4\\u9500\\u5417?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u786E\\u5B9A\",\nupdateStr: \"\\u786E\\u5B9A\",\ntimeStr: \"\\u65F6\\u95F4\",\nquickStr: \"\\u5FEB\\u901F\\u9009\\u62E9\", \nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u4E8E\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u7BC4\\u570D,\\u9700\\u8981\\u64A4\\u92B7\\u55CE?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u78BA\\u5B9A\",\nupdateStr: \"\\u78BA\\u5B9A\",\ntimeStr: \"\\u6642\\u9593\",\nquickStr: \"\\u5FEB\\u901F\\u9078\\u64C7\",\nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u65BC\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/modernizr.custom.js",
    "content": "/* Modernizr 2.6.2 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes-load\n */\n;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+\";\")+(b||\"\"))}function B(a,b){return typeof a===b}function C(a,b){return!!~(\"\"+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,\"-\")&&j[e]!==c)return b==\"pfx\"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,\"function\")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+o.join(d+\" \")+d).split(\" \");return B(b,\"string\")||B(b,\"undefined\")?D(e,b):(e=(a+\" \"+p.join(d+\" \")+d).split(\" \"),E(e,b,c))}var d=\"2.6.2\",e={},f=!0,g=b.documentElement,h=\"modernizr\",i=b.createElement(h),j=i.style,k,l={}.toString,m=\" -webkit- -moz- -o- -ms- \".split(\" \"),n=\"Webkit Moz O ms\",o=n.split(\" \"),p=n.toLowerCase().split(\" \"),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement(\"div\"),m=b.body,n=m||b.createElement(\"body\");if(parseInt(d,10))while(d--)j=b.createElement(\"div\"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=[\"&#173;\",'<style id=\"s',h,'\">',a,\"</style>\"].join(\"\"),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background=\"\",n.style.overflow=\"hidden\",k=g.style.overflow,g.style.overflow=\"hidden\",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,\"undefined\")&&!B(x.call,\"undefined\")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],\"undefined\")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!=\"function\")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms=function(){return!!F(\"transform\")},q.csstransforms3d=function(){var a=!!F(\"perspective\");return a&&\"webkitPerspective\"in g.style&&w(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F(\"transition\")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?\"\":\"no-\")+v));return e.addTest=function(a,b){if(typeof a==\"object\")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b==\"function\"?b():b,typeof f!=\"undefined\"&&f&&(g.className+=\" \"+(b?\"\":\"no-\")+a),e[a]=b}return e},z(\"\"),i=k=null,function(a,b){function k(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a==\"string\"?a.split(\" \"):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+l().join().replace(/\\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,\"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}\")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g=\"_html5shiv\",h=0,i={},j;(function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",f=\"hidden\"in a,j=a.childNodes.length==1||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return typeof a.cloneNode==\"undefined\"||typeof a.createDocumentFragment==\"undefined\"||typeof a.createElement==\"undefined\"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||\"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video\",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:\"default\",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,\"pfx\")},g.className=g.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(f?\" js \"+t.join(\" \"):\"\"),e}(this,this.document),function(a,b,c){function d(a){return\"[object Function]\"==o.call(a)}function e(a){return\"string\"==typeof a}function f(){}function g(a){return!a||\"loaded\"==a||\"complete\"==a||\"uninitialized\"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){(\"c\"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){\"img\"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),\"object\"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height=\"0\",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),\"img\"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||\"j\",e(a)?i(\"c\"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName(\"script\")[0],o={}.toString,p=[],q=0,r=\"MozAppearance\"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&\"[object Opera]\"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?\"object\":l?\"script\":\"img\",v=l?\"script\":u,w=Array.isArray||function(a){return\"[object Array]\"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split(\"!\"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(\"=\"),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(\".\").pop().split(\"?\").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(\"/\").pop().split(\"?\")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&\"css\"==i.url.split(\".\").pop().split(\"?\").shift()?\"c\":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState=\"loading\",b.addEventListener(\"DOMContentLoaded\",A=function(){b.removeEventListener(\"DOMContentLoaded\",A,0),b.readyState=\"complete\"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement(\"script\"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement(\"link\"),j,c=i?h:c||f;e.href=a,e.rel=\"stylesheet\",e.type=\"text/css\";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/move-top.js",
    "content": "/* UItoTop jQuery Plugin 1.2 | Matt Varone | http://www.mattvarone.com/web-design/uitotop-jquery-plugin */\n(function($){$.fn.UItoTop=function(options){var defaults={text:'To Top',min:200,inDelay:600,outDelay:400,containerID:'toTop',containerHoverID:'toTopHover',scrollSpeed:1000,easingType:'linear'},settings=$.extend(defaults,options),containerIDhash='#'+settings.containerID,containerHoverIDHash='#'+settings.containerHoverID;$('body').append('<a href=\"#\" id=\"'+settings.containerID+'\">'+settings.text+'</a>');$(containerIDhash).hide().on('click.UItoTop',function(){$('html, body').animate({scrollTop:0},settings.scrollSpeed,settings.easingType);$('#'+settings.containerHoverID,this).stop().animate({'opacity':0},settings.inDelay,settings.easingType);return false;}).prepend('<span id=\"'+settings.containerHoverID+'\"></span>').hover(function(){$(containerHoverIDHash,this).stop().animate({'opacity':1},600,'linear');},function(){$(containerHoverIDHash,this).stop().animate({'opacity':0},700,'linear');});$(window).scroll(function(){var sd=$(window).scrollTop();if(typeof document.body.style.maxHeight===\"undefined\"){$(containerIDhash).css({'position':'absolute','top':sd+$(window).height()-50});}\nif(sd>settings.min)\n$(containerIDhash).fadeIn(settings.inDelay);else\n$(containerIDhash).fadeOut(settings.Outdelay);});};})(jQuery);"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/scripts.js",
    "content": "\njQuery(document).ready(function() {\n\n    $('.page-container form').submit(function(){\n        var username = $(this).find('.username').val();\n        var password = $(this).find('.password').val();\n        if(username == '') {\n            $(this).find('.error').fadeOut('fast', function(){\n                $(this).css('top', '27px');\n            });\n            $(this).find('.error').fadeIn('fast', function(){\n                $(this).parent().find('.username').focus();\n            });\n            return false;\n        }\n        if(password == '') {\n            $(this).find('.error').fadeOut('fast', function(){\n                $(this).css('top', '96px');\n            });\n            $(this).find('.error').fadeIn('fast', function(){\n                $(this).parent().find('.password').focus();\n            });\n            return false;\n        }\n    });\n\n    $('.page-container form .username, .page-container form .password').keyup(function(){\n        $(this).parent().find('.error').fadeOut('fast');\n    });\n\n});\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n.Wdate::-ms-clear{display:none;}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/skin/default/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.8\n */\n\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#FFFFFF;\n\tborder:#bbb 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tdisplay:block;\n\tcursor:pointer;\n\theight:16px;\n\twidth:16px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll 0 0;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll -16px 0;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -32px 0;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -48px 0;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tpadding:1px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\theight:20px;\n\tborder:0px;\n\twidth:50px;\n\tcursor:pointer;\t\t\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\theight:20px;\n\tcolor:blue;\n\tborder:#ccc 1px solid;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\t\n\tborder:#ccc 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n\t\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tbackground-color:#BDEBEE;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#FF2F2F;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#000;\n\tbackground-color:#C0EBEF;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A9E4E9;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#6A6AFF;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n}\n\n.WdateDiv #dpTime input{\n\twidth:18px;\n\theight:20px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n    background:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\t\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tmargin-top:2px;\n\tmargin-right:1px;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.8 Skin:whyGreen\n */ \n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tcursor:pointer;\n\tdisplay:block;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat -16px 0px;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -32px 0px;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -48px 0px;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:20px;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tmargin-top:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/supersized-init.js",
    "content": "jQuery(function($){\n\n    $.supersized({\n\n        // Functionality\n        slide_interval     : 4000,    // Length between transitions\n        transition         : 1,    // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left\n        transition_speed   : 1000,    // Speed of transition\n        performance        : 1,    // 0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)\n\n        // Size & Position\n        min_width          : 0,    // Min width allowed (in pixels)\n        min_height         : 0,    // Min height allowed (in pixels)\n        vertical_center    : 1,    // Vertically center background\n        horizontal_center  : 1,    // Horizontally center background\n        fit_always         : 0,    // Image will never exceed browser width or height (Ignores min. dimensions)\n        fit_portrait       : 1,    // Portrait images will not exceed browser height\n        fit_landscape      : 0,    // Landscape images will not exceed browser width\n\n        // Components\n        slide_links        : 'blank',    // Individual links for each slide (Options: false, 'num', 'name', 'blank')\n        slides             : [    // Slideshow Images\n                                 {image : 'images/backgrounds/1.jpg'},\n                                 {image : 'images/backgrounds/2.jpg'},\n                                 {image : 'images/backgrounds/3.jpg'}\n                             ]\n\n    });\n\n});\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/tabledo.js",
    "content": "/* created by tony 20081215\n   updated by tony 20100311\n   option: 实现表格的动态新增、删除、行位置交换、行可上下拖动 \n    固定内容：第二列为排序列,删除ID记录框 delIds\n*/\n\n/* 单元格内容不够长时,方便看单元格的内容 */\nfunction showTheWrite(str){\n   \tdocument.getElementById(\"div_write\").innerText = str;\n}  \n   \t    \t\n/* 实现表格序号列自动调整 created by tony 20081219 */\nfunction sortnoTR(){\n\tsortno('resultTable', 2, 1);\n}\n\n/* 清除表格行的高亮 filterName 表格含有这个名称的,才进行处理 */\nfunction clearTRstyle( filterName ){\n\tvar tableobjs = document.getElementsByTagName(\"TR\");\n\tfor(var i=0;i<tableobjs.length;i++){\n\t\tif((tableobjs[i].parentNode.parentNode.id).toString().indexOf(filterName)!=-1){\n\t\t\ttableobjs[i].style.background = '';\t\t//清空背景\n\t\t}\n\t}\n}\n\n/* 设置单元格的文字 by tony 20091110 \n\tparas: obj colNo:要填写值的列号; value:设定的值;\n*/\t    \nfunction setTDText( obj, colNo, value ){\n\tvar currTr = obj.parentElement.parentElement;\n\t//alert(currTr.getElementsByTagName(\"TD\")[colNo].innerText);\n\tcurrTr.getElementsByTagName(\"TD\")[colNo].innerText = value;\n}\n\n/* 设置下拉框的值 by tony 20100110\n\tparas: obj curValue:当前的值;\n*/\t    \nfunction setSelectOption(obj, curValue ){\n\tfor (i=0;i<obj.length;i++){\n\t\tif(obj.options[i].value == curValue){\n\t\t\tobj.options[i].selected=true;\n\t\t\tbreak; \n\t\t}\n\t} \n}\n\n/* 设置此行是否更新 by tony 20091110 \n*/\t    \nfunction setTRUpdateFlag( obj ){\n\t//alert(obj.type);\n\t//alert(obj.defaultValue);\n\tvar currTr = obj.parentElement.parentElement;\n\tif(currTr.innerHTML.toLowerCase().indexOf(\"<span\")==0){\n\t\tcurrTr = obj.parentElement.parentElement.parentElement;\n\t}\n\t//alert(currTr.innerHTML);\n\tif(obj.value!=obj.defaultValue){\t//当填写的框内容发生变化时,设置本行记录发生变化标识\n\t\tcurrTr.cells[1].all.mr_changed.value = \"1\";\n\t}\n\t//currTr.cells[1].document.getElementsByTagName(\"INPUT\")[4].value = \"1\";\n\t//alert(currTr.cells[1].all.mr_changed.value);\n\t//alert(currTr.cells[1].document.getElementsByTagName(\"INPUT\")[4].value);\n\t//alert(currTr.cells[2].document.getElementsByTagName(\"INPUT\").value);\n\t//currTr.getElementsByTagName(\"TD\").all.mr_changed = \"1\";.document.getElementsByTagName(\"INPUT\")\n}\n\n\n/* 设置此行是否更新 by tony 20120125 reason:按上面判断，有时无法触发，所以直接至标志；例如日期框\n*/\t    \nfunction setTRUpdateFlagTrue( obj ){\n\tvar currTr = obj.parentElement.parentElement;\n\tif(currTr.innerHTML.toLowerCase().indexOf(\"<span\")==0){\n\t\tcurrTr = obj.parentElement.parentElement.parentElement;\n\t}\n\tcurrTr.cells[1].all.mr_changed.value = \"1\";\t//当填写的框内容发生变化时,设置本行记录发生变化标识\n}\n\n/* 新增一行 */\nfunction newTRRecord(objId, isClear) {\n\tvar _stemp = \"\";\n\tvar i = 1;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n\tif(rowLength<=1){\t\t//只有标题则不新增, 默认会有一个空行\n\t\tshowError(\"空行不能建立新行!\");\n\t\treturn rowLength;\n\t}\n\tvar lastTr = tableObj.rows[rowLength-1];\n\t//alert(lastTr.rowIndex);\t\n    var newTR = lastTr.cloneNode(true);\n    newTR.id=\"a\" + (++i);\n    lastTr.parentNode.insertAdjacentElement(\"beforeEnd\", newTR);\t//最后一行增加新行\n    \n    /* 判断表格行中含有input框和textarea框 3层嵌套 */\n    if (isClear) {\n    \tfor (j=0; j<newTR.cells.length; j++) {\n    \t\n    \t\t/* 第一行加属性 */\n    \t\tnewTR.cells[0].style.whiteSpace=\"nowrap\";\n\t\t\tnewTR.cells[0].ondragover = function(){this.className=\"drag_over\" };\t//动态加事件, 改变样式类\n\t\t\tnewTR.cells[0].ondragleave = function(){this.className=\"drag_leave\" };\n\t\t\tnewTR.cells[0].onmousedown = function(){ clearTRstyle(\"result\"); this.parentNode.style.background = '#0099cc';};\t\n\t\t\n    \t\tvar inputArray = newTR.cells[j].getElementsByTagName('input');\n    \t\tif (inputArray.length > 0) {\n\t   \t\t\tfor (m=0; m<inputArray.length; m++) {\n\t   \t\t\t\t// add by tony 20100315 reason:由于radio框名称相同,IE会解析为同一组；所以只能对其单独处理。通过动态替换radio的框的名字，使其随表各行新增行的行号发生变化。同时又由于radio的框的名称不同，提交后台处理时，又和其他文本框等处理不同，所以在radio后加了一个隐藏域，进行独特的处理。这样就和其他input框处理方式相同。\n\t\t\t\t\tif(inputArray[m].type==\"radio\"){\n\t\t\t\t\t\t_stemp = inputArray[m].parentNode.innerHTML;\n\t\t\t\t\t\t_stemp = _stemp.replaceAll(inputArray[m].name,inputArray[m].name.substring(0,inputArray[m].name.length-1)+(rowLength-1));\n\t\t\t\t\t\tinputArray[m].parentNode.innerHTML=_stemp;\n\t\t\t\t\t\t//alert(_stemp);\n\t\t\t\t\t}else{\n\t\t   \t\t\t\tinputArray[m].value = \"\";\t\t\t//clear value\n\t\t\t\t\t}\n\t   \t\t\t}\n   \t\t\t} else {\n\t    \t\tvar textareaArray = newTR.cells[j].getElementsByTagName('textarea');\n\t    \t\tif (textareaArray.length > 0) {\n\t\t   \t\t\tfor (m=0; m<textareaArray.length; m++) {\n\t\t   \t\t\t\ttextareaArray[m].value = \"\";\n\t\t   \t\t\t}\n\t   \t\t\t} else {\n\t   \t\t\t\tvar selectArray = newTR.cells[j].getElementsByTagName('select');\n\t\t    \t\tif (selectArray.length > 0) {\n\t\t\t   \t\t\tfor (m=0; m<selectArray.length; m++) {\n\t\t\t   \t\t\t\tselectArray[m].selected = 0;\n\t\t\t   \t\t\t}\n\t\t   \t\t\t} else {\n\t\t   \t\t\t\tnewTR.cells[j].innerHTML = \"\";\n\t\t   \t\t\t}\n\t   \t\t\t}\n   \t\t\t}\n    \t}\n    }\n//    alert(tableObj.rows.length);\n    try {\n\t    document.getElementsByName('number')[i-1].value = i;\n\t} catch (e){\n\t}\n\t\n\treturn tableObj.rows.length;\n}\n\n/* 记录删除的记录 creaded by tony 20091110 */\nfunction delIdsRecord(ckName) {  \n\tvar delIds = \"\";delIds = \"\";\n\t\n\tvar delCheckboxs = document.getElementsByName(ckName);\n\tfor(var i=0;i<delCheckboxs.length;i++){\n\t\tif(delCheckboxs[i].checked){\n\t\t\tif(delCheckboxs[i].value!=\"\"){\n\t\t\t\tdelIds += delCheckboxs[i].value + \",\";\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\n\t\t}\n\t}\n\tdocument.getElementById(\"delIds\").value = delIds;\n}\n   \n/* 清除删除框 */\nfunction clearDelId(){\n   \tdocument.getElementById(\"delIds\").value = \"\";\n}\n   \n/* 删除空行 add by tony 20100318 */\nfunction delSpaceTRRecord(objId, topRow){\n\tvar bEmpty = false;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n    for(i=rowLength-1; i>=topRow; i--){\t\t//必须倒序，否则当前的删除，obj就少了一条，到最后一条时就会报错\n   \t\tbEmpty = false;\n\t\tvar curTr = tableObj.rows[i];\n\t   \tfor (j=3; j<curTr.cells.length; j++) {\t\t\t\t\t\t\t\t//j=3跳过控件列，从业务列开始处理\n\t   \t\tvar inputArray = curTr.cells[j].getElementsByTagName('input');\t//只需判断是否所有input框都未填写，都未填写就认为此行无用，废弃\n\t   \t\tif (inputArray.length > 0) {\n\t   \t\t\tfor (n=0; n<inputArray.length; n++) {\n\t   \t\t\t\tif(inputArray[n].value==\"\"){\n\t   \t\t\t\t \tbEmpty = true;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n\t   \t\t\t\t}else{\n\t   \t\t\t\t\tbEmpty = false;\n\t   \t\t\t\t}\n\t   \t\t\t}\n\t   \t\t\tif(!bEmpty){\n\t   \t\t\t\tbreak;\n\t   \t\t\t}\n\t   \t\t}\n\t   \t\tvar textareaArray = curTr.cells[j].getElementsByTagName('textarea');\t//只需判断是否所有textarea框都未填写，都未填写就认为此行无用，废弃\n\t   \t\tif (textareaArray.length > 0) {\n\t   \t\t\tfor (n=0; n<textareaArray.length; n++) {\n\t   \t\t\t\tif(textareaArray[n].value==\"\"){\n\t   \t\t\t\t \tbEmpty = true;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n\t   \t\t\t\t}else{\n\t   \t\t\t\t\tbEmpty = false;\n\t   \t\t\t\t}\n\t   \t\t\t}\n\t   \t\t\tif(!bEmpty){\n\t   \t\t\t\tbreak;\n\t   \t\t\t}\n\t   \t\t}\n\t   \t}\n\t    if (bEmpty) {\n\t    \ttableObj.deleteRow(i);\n\t    }\n\t}\n}\n\n/* 删除一行 */\nfunction delTRRecord(ckName, tableId, topRow, clearValueObjName ,isDeleteAll) {  \n\tvar clearValuesObjs = document.getElementsByName(clearValueObjName);\n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\t\n\tvar mr_changeds = document.getElementsByName(\"mr_changed\");\t\t\n\tvar is_change = false;\t//是否发生变化，如果单独增加了几个空行，就删除，可以根据此标识，不进行删除提示\n\t\n\tvar delCheckboxs = document.getElementsByName(ckName);\n\tvar delNumber = new Array(); \n\tif(delCheckboxs.length > 0){\n\t\n\t\n\t\tvar rowLength = delCheckboxs.length;\n\t\tfor(var i=0;i<rowLength;i++){\n\t\t\tif(delCheckboxs[i].checked){\n\t\t\t\tif (clearValuesObjs[i]) {\n\t\t\t\t\tclearValuesObjs[i].name=\"_disabledOrderId_\";\n\t\t\t\t\tclearValuesObjs[i].value=\"\";\n\t\t\t\t}\n\t\t\t\tdelNumber.push(i+topRow);\t\t\t\t\t\t\t\t\t\t\n\t\t\t}\n\t\t\tif(mr_changeds[i].value==\"1\"){\n\t\t\t\tis_change = true;\n\t\t\t}\n\t\t}\n\t}else{\n\t\talert(\"对不起,请至少选择一条需要移除的数据\");\n\t\treturn false;\n\t}\n\t\n\tif(delNumber.length <= 0){\n\t\talert(\"对不起,请至少选择一条需要移除的数据\");\n\t\treturn false;\n\t}\n\t\n\tif(is_change){\n\t\tif(!confirm(\"确实要移除指定内容吗?单击【确定】将移除指定内容！单击【取消】将终止移除操作!\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tif(trTotal==delNumber.length){\t\t\t//如果是全部删除,则先新增一个空行,否则newTRRecord就成了增加表头。\n\t\tnewTRRecord('resultTable', true);\t//删除前，新增一个空行。\n\t}\n\t\n\tfor(var i=0;i<delNumber.length;i++){\n\t\tif(isDeleteAll == false){\n\t\t\tif (i + 1 >= trTotal) {\n\t\t\t\tbreak;\n\t\t\t}\t\t\n\t\t}\n\t\ttableObj.deleteRow(delNumber[i] - i);\n\t}\n}\n\n/* 清空:删除所有 by tony 20091112 */\nfunction clearTRRecord(ckName, tableId, topRow) {  \n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar delNumber = tableObj.rows.length - topRow;\n\t\tfor(var i=delNumber;i>topRow-1;i--){\n\t\t\ttableObj.deleteRow(i);\n\t\t}\n}\n\n/* by tony 20100212 最后一行为空，则删除。reason:如果最后一行为空在删除,这样就不会因_CheckAll监测最后一行为空而提示未填写了 */\nfunction doLastTR(objId) {\n\tvar bEmpty = true;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n\tvar lastTr = tableObj.rows[rowLength-1];\n    \n   \tfor (j=3; j<lastTr.cells.length; j++) {\t\t\t\t\t\t\t\t//j=3跳过控件列，从业务列开始处理\n   \t\tvar inputArray = lastTr.cells[j].getElementsByTagName('input');\t//只需判断是否所有input框都未填写，都未填写就认为此行无用，废弃\n   \t\tif (inputArray.length > 0) {\n   \t\t\tfor (n=0; n<inputArray.length; n++) {\n   \t\t\t\tif(inputArray[n].value!=\"\"){\n   \t\t\t\t \tbEmpty = false;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n   \t\t\t\t \tbreak;\n   \t\t\t\t}\n   \t\t\t}\n   \t\t}\n   \t}\n    if (bEmpty) {\n    \ttableObj.deleteRow(rowLength-1);\t//删除最后一行\n    }\n}\n\n\n/* 移到 */\nfunction swapTRRecord(ckName, tableId, topRow, Flag) {  \n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\t\n\tvar selCheckboxs = document.getElementsByName(ckName);\n\tvar selNumber = -1;\t//选中的checkbox的个数\n\tvar curRow = -1; \t//选中第几个checkbox\n\tif(selCheckboxs.length > 0){\n\t\tselNumber = 0;\n\t\tvar rowLength = selCheckboxs.length;\n\t\tfor(var i=0;i<rowLength;i++){\n\t\t\tif(selCheckboxs[i].checked){\n\t\t\t\tselNumber++;\n\t\t\t\tcurRow = i+1;\t//选中的记录\n\t\t\t\tbreak;\t\t\t//只要选择的第一条\t\n\t\t\t}\n\t\t}\n\t}\n\tif(selNumber==-1){\n\t\t//忽略,没有选择要移动的记录\n\t}else if(selNumber==0){\n\t\talert(\"请至少选择一条需要移动的记录!\");\n\t\treturn false;\n\t}else if(selNumber==0){\n\t\talert(\"请至少选择一条需要移动的记录!\");\n\t\treturn false;\n\t}else if(selNumber==1){\n\t\ttry{\n\t\t\tif(Flag==\"up\"){\n\t\t\t\tif(topRow!=curRow){\n\t\t\t  \t\ttrSwap_Up(tableId, curRow);\t//上移\n\t\t\t  \t\tdocument.getElementsByName(ckName)[curRow-2].checked = true;\n\t\t\t  \t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-2];\n\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t  \t\t\tmcobj.value=\"1\";\t\t//移动,记录排序号发生变化\n\t\t\t  \t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-1];\n\t\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t\t  \t\t\tmcobj.value=\"1\";\t//移动,记录排序号发生变化\n\t\t\t\t  \t\t}\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t}else if(Flag==\"dn\"){\n\t\t\t\ttrSwap_Down(tableId, curRow);\t//下移\n\t\t\t\tdocument.getElementsByName(ckName)[curRow].checked = true;\n\t\t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow];\n\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t  \t\t\tmcobj.value=\"1\";\t\t//移动,记录排序号发生变化\n\t\t\t  \t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-1];\n\t\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t\t  \t\t\tmcobj.value=\"1\";\t//移动,记录排序号发生变化\n\t\t\t\t  \t\t}\n\t\t\t  \t\t}\n\t\t\t}\n\t\t}catch(err){\n\t\t\t//忽略错误\n\t\t}\n\t}\n\treturn true;\n}\n\n/* 重新排列序号列值 */\nfunction sortno(objId, whichCol, topRow){\n\tvar tableObj = document.getElementById(objId);\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\tfor (m=topRow; m<=trTotal; m++) {\n\t\tvar curTr = tableObj.rows[m];\n\t\tvar inputArray = curTr.cells[whichCol].getElementsByTagName('input');\n   \t\tif (inputArray.length > 0) {\n   \t\t\tfor (n=0; n<inputArray.length; n++) {\n   \t\t\t\tinputArray[n].value = m;\n   \t\t\t}\n   \t\t}\n\t}\n}\n\n/* 交换表格行 */\nfunction trSwap(tableId, tr1Index, tr2Index){\n\ttry{\n\t\tvar tableObj = document.getElementById(tableId);\n\t\ttableObj.rows[tr1Index].swapNode(tableObj.rows[tr2Index]);\n\t}catch(err){\n\t\t//alert('trSwap出错!');\n\t}\n}\n/* 交换表格行.上移 */\nfunction trSwap_Up(tableId, trIndex){\n\ttrSwap(tableId,trIndex,trIndex-1);\n}\n/* 交换表格行.下移 */\nfunction trSwap_Down(tableId, trIndex){\n\ttrSwap(tableId,trIndex,trIndex+1);\n}\n\n\n\n/* 实现拖动 start */\n\nvar obj;\nvar xx=0,yy=0;\nvar tagobj;\nvar dragobj;\nfunction dragtableinit(){\n\tvar tableobjs = document.getElementsByTagName(\"TR\");\n\tfor(var i=0;i<tableobjs.length;i++){\n\t\tif((tableobjs[i].parentNode.parentNode.id).toString().indexOf(\"result\")!=-1){\n\t\t\ttableobjs[i].onmousedown=mousedown;\n\t\t\ttableobjs[i].ondragover=dragover;\n\t\t\ttableobjs[i].ondragend=dragend;\n\t\t\ttableobjs[i].ondrag=dragmove;\n\t\t\t//tableobjs[i].style.position=\"relative\";\t//有这个则拖动时显示拖动的行,但与textarea的展现相冲突,所以屏蔽\n\t\t\t//tableobjs[i].style.zIndex=1;\n\t\t}\n\t}\n}\nfunction mousedown(){\n\tobj = event.srcElement;\n\tif(obj.tagName==\"TD\") obj=obj.parentNode;\n\tif(obj.tagName!=\"TR\") return false;\n\tif(obj.rowIndex==0) return false;\n\tyy=event.clientY;\n\txx=event.clientX;\n\tobj.style.zIndex=0;\n\ttry{\n\t\tobj.dragDrop(); \n\t}catch(e){\n\t}\n}\nfunction dragmove(){\n\tobj.style.top = event.clientY-yy;\n\tobj.style.left = event.clientX-xx;\n\tobj.style.cursor = 'move';\n}\nfunction dragover(){\n\ttagobj=event.srcElement;\n\tif(tagobj.tagName==\"TD\"){tagobj=tagobj.parentNode;}\n\tif(tagobj.tagName!=\"TR\")return false;\n\n}\nfunction dragend( ){\n\tvar iTargetPosition = 0;\n\tobj.style.cursor = 'move';\n\tobj.style.top=0;\n\tobj.style.left=0;\n\tobj.style.zIndex=1;\n\tif(tagobj!=null && tagobj.rowIndex!=0){\n\t\tvar t1 = resultTable.rows[obj.rowIndex];\n\t\tiTargetPosition = tagobj.rowIndex;\n\t\tvar t2 = resultTable.rows[iTargetPosition];\n\t\ttry{\n\t\t\tresultTable.getElementsByTagName('tbody')[0].insertBefore(t1,t2);\n\t\t} catch (e){\n\t\t}\n\t\ttagobj.style.zIndex=1;\n\t}\n\tobj.style.cursor = '';\n\ttagobj=null;\n\t\n\tsortnoTR();\t//拖动完重新排序\n}\n\n/* 实现拖动 end   */\n\n/* 实现加亮 start */\n    function ShowFloatDiv2(obj,num,length){\n\t    for(var id = 1; id<=length; id++){\n\t\t    objMain = obj + id;\n\t\t    objss = obj + '_own' + id;\n\t\t    objother = obj + '_visibility' + id;\n\t\t\tif(id == num && objMain){\n\t    \ttry{document.getElementById(objMain).style.display = \"none\";}catch(e){};\n\t    \ttry{document.getElementById(objss).style.display = \"none\";}catch(e){};\n\t    \ttry{document.getElementById(objother).style.display = \"block\";}catch(e){};\n\t    \t}\n\t    }\n\t}\n\n    function HideFloatDiv2(obj,num,length){\n\t    for(var id = 1; id<=length; id++){\n\t\t    objMain = obj + id;\n\t\t    objss = obj + '_own' + id;\n\t\t    objother = obj + '_visibility' + id;\n\t\t\tif(id == num){\n\t    \ttry{document.getElementById(objMain).style.display = \"block\";}catch(e){};\n\t    \ttry{document.getElementById(objss).style.display = \"block\";}catch(e){};\n\t    \ttry{document.getElementById(objother).style.display = \"none\";}catch(e){};\n\t    \t}\n\t    }\n\t}\n\n\tfunction HightLightRows(obj){\n\t\t//alert(obj.parentNode.parentNode.tagName);\n\t\tvar Rows = obj.parentNode.parentNode;\n\t\tif(Rows.className == 'rowList_main'){\n\t\t\tRows.className = 'rowList_main_bg';\n\t\t}\n\t}\n/* 实现加亮 end   */\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/js/uisearch.js",
    "content": "/**\n * uisearch.js v1.0.0\n * http://www.codrops.com\n *\n * Licensed under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n * \n * Copyright 2013, Codrops\n * http://www.codrops.com\n */\n;( function( window ) {\n\t\n\t'use strict';\n\t\n\t// EventListener | @jon_neal | //github.com/jonathantneal/EventListener\n\t!window.addEventListener && window.Element && (function () {\n\t   function addToPrototype(name, method) {\n\t\t  Window.prototype[name] = HTMLDocument.prototype[name] = Element.prototype[name] = method;\n\t   }\n\t \n\t   var registry = [];\n\t \n\t   addToPrototype(\"addEventListener\", function (type, listener) {\n\t\t  var target = this;\n\t \n\t\t  registry.unshift({\n\t\t\t __listener: function (event) {\n\t\t\t\tevent.currentTarget = target;\n\t\t\t\tevent.pageX = event.clientX + document.documentElement.scrollLeft;\n\t\t\t\tevent.pageY = event.clientY + document.documentElement.scrollTop;\n\t\t\t\tevent.preventDefault = function () { event.returnValue = false };\n\t\t\t\tevent.relatedTarget = event.fromElement || null;\n\t\t\t\tevent.stopPropagation = function () { event.cancelBubble = true };\n\t\t\t\tevent.relatedTarget = event.fromElement || null;\n\t\t\t\tevent.target = event.srcElement || target;\n\t\t\t\tevent.timeStamp = +new Date;\n\t \n\t\t\t\tlistener.call(target, event);\n\t\t\t },\n\t\t\t listener: listener,\n\t\t\t target: target,\n\t\t\t type: type\n\t\t  });\n\t \n\t\t  this.attachEvent(\"on\" + type, registry[0].__listener);\n\t   });\n\t \n\t   addToPrototype(\"removeEventListener\", function (type, listener) {\n\t\t  for (var index = 0, length = registry.length; index < length; ++index) {\n\t\t\t if (registry[index].target == this && registry[index].type == type && registry[index].listener == listener) {\n\t\t\t\treturn this.detachEvent(\"on\" + type, registry.splice(index, 1)[0].__listener);\n\t\t\t }\n\t\t  }\n\t   });\n\t \n\t   addToPrototype(\"dispatchEvent\", function (eventObject) {\n\t\t  try {\n\t\t\t return this.fireEvent(\"on\" + eventObject.type, eventObject);\n\t\t  } catch (error) {\n\t\t\t for (var index = 0, length = registry.length; index < length; ++index) {\n\t\t\t\tif (registry[index].target == this && registry[index].type == eventObject.type) {\n\t\t\t\t   registry[index].call(this, eventObject);\n\t\t\t\t}\n\t\t\t }\n\t\t  }\n\t   });\n\t})();\n\n\t// http://stackoverflow.com/a/11381730/989439\n\tfunction mobilecheck() {\n\t\tvar check = false;\n\t\t(function(a){if(/(android|ipad|playbook|silk|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\n\t\treturn check;\n\t}\n\t\n\t// http://www.jonathantneal.com/blog/polyfills-and-prototypes/\n\t!String.prototype.trim && (String.prototype.trim = function() {\n\t\treturn this.replace(/^\\s+|\\s+$/g, '');\n\t});\n\n\tfunction UISearch( el, options ) {\t\n\t\tthis.el = el;\n\t\tthis.inputEl = el.querySelector( 'form > input.sb-search-input' );\n\t\tthis._initEvents();\n\t}\n\n\tUISearch.prototype = {\n\t\t_initEvents : function() {\n\t\t\tvar self = this,\n\t\t\t\tinitSearchFn = function( ev ) {\n\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t// trim its value\n\t\t\t\t\tself.inputEl.value = self.inputEl.value.trim();\n\t\t\t\t\t\n\t\t\t\t\tif( !classie.has( self.el, 'sb-search-open' ) ) { // open it\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\tself.open();\n\t\t\t\t\t}\n\t\t\t\t\telse if( classie.has( self.el, 'sb-search-open' ) && /^\\s*$/.test( self.inputEl.value ) ) { // close it\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tthis.el.addEventListener( 'click', initSearchFn );\n\t\t\tthis.el.addEventListener( 'touchstart', initSearchFn );\n\t\t\tthis.inputEl.addEventListener( 'click', function( ev ) { ev.stopPropagation(); });\n\t\t\tthis.inputEl.addEventListener( 'touchstart', function( ev ) { ev.stopPropagation(); } );\n\t\t},\n\t\topen : function() {\n\t\t\tvar self = this;\n\t\t\tclassie.add( this.el, 'sb-search-open' );\n\t\t\t// focus the input\n\t\t\tif( !mobilecheck() ) {\n\t\t\t\tthis.inputEl.focus();\n\t\t\t}\n\t\t\t// close the search input if body is clicked\n\t\t\tvar bodyFn = function( ev ) {\n\t\t\t\tself.close();\n\t\t\t\tthis.removeEventListener( 'click', bodyFn );\n\t\t\t\tthis.removeEventListener( 'touchstart', bodyFn );\n\t\t\t};\n\t\t\tdocument.addEventListener( 'click', bodyFn );\n\t\t\tdocument.addEventListener( 'touchstart', bodyFn );\n\t\t},\n\t\tclose : function() {\n\t\t\tthis.inputEl.blur();\n\t\t\tclassie.remove( this.el, 'sb-search-open' );\n\t\t}\n\t}\n\n\t// add to global namespace\n\twindow.UISearch = UISearch;\n\n} )( window );"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/css/default.css",
    "content": ".btn { border:1px solid #cad9ea; background:#fff; height:22px ;line-height:1.7em; font-size:12px;color:#16387c;cursor: pointer;}\n.b_button{padding:3px 6px 3px 8px;border:1px solid;border-color:#afafaf #808080 #808080 #afafaf;background:#f2f2f2}\n.blank{width:100%;clear:both;height:5px;}\n\n/* import css files */\n@import url(table.css);\n\nbody {\n\ttext-align:center;\n\tmargin:0 auto;padding:0;\n\tfont-size:9pt;\n\tcolor:#666;\n\tfont-family:\"Lucida Grande\", Verdana, Lucida, Helvetica, Arial, \"微软雅黑\" ,sans-serif;\n\n}\ntextarea, input{ padding:2px; border:1px solid; border-color:#369e92;font-size:12px;height:25px;}\nselect{ padding:2px; border:1px solid; border-color:#369e92;font-size:12px;*height:30px;}\nlabel{ cursor:hand; }\ntd{ font:9pt 宋体; }\nth{ font:9pt 微软雅黑; font-weight:bord; text-align:left; }\n.gzdt_list_date{float:right; font-size:12px; font-weight:normal; margin-top:-22px; padding-right:6px; color:#EA9634;}\n\n.tip{float:left;font-size:12px;color:gray;font-weight:normal;margin:22px;padding-left:20px;text-align:left;background:url(../images/notice.gif) no-repeat;}\n.navPoint {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 15);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_pointer.gif) no-repeat;\n}\n.navPoint_back {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 15);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_pointer_back.gif) no-repeat;\n}\n.navPointTop {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 60);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_Rows_pointer.gif) no-repeat;\n}\n.navPointTop_back {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 60);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_Rows_pointer_back.gif) no-repeat;\n}\n.middleAlign {\n\twidth: 100%;\n\tpadding-left: 10px;\t\n}\n.navDiv {\n\n}\n.PositionFrame_black{\n\tdisplay:none;\n\tposition:absolute;\n\tleft:0;\n\ttop:0;\n\twidth:expression(document.body.offsetWidth);\n\theight:expression(document.body.offsetHeight);\n\tbackground:#042622;\n\tz-index:9990;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);\n}\n.Frame_loading{\n\tdisplay:none;\n\tposition:absolute;\n\tleft:expression(document.body.clientWidth / 2.2);\n\ttop:expression(document.body.clientHeight / 2.5);\n\twidth:16px;\n\theight:16px;\n\tz-index:9998;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);\n}\n.positionFrame{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:50px;\n\tleft:50px;\n\tborder:1px solid #cbcbcb;\n\twidth:expression(document.body.clientWidth / 1.3);\n\theight:expression(document.body.clientHeight / 1.5);\n\tborder:1px solid #2b8f83;\n\tbackground:#ff6600;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);\n\tz-index:9997;\n}\n.Position_notebook{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:10px;\n\tright:expression(document.body.clientWidth / 3.5);\n\tz-index:9999;\n}\n.Position_my_note{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:85px;\n\tright:expression(document.body.clientWidth / 3.4);\n\tz-index:9998;\t\n}\n.Position_visibility{      \n\tdisplay:none;\n\tfloat:right;\n\tmargin-right:-1px;\n}\n/****** General Styles ******/\n\n\n\n\n.hand{cursor:pointer;}\n.hand_date{cursor:pointer;background:url(images/date.gif) no-repeat right}\n.hand_choose{cursor:pointer;background:url(images/view.gif) no-repeat right}\n.leftFrame {\n/*\tpadding-left:15px; */\n\tpadding: 0px;\n\tmargin: 0px;\n\tborder-right:1px solid #80DCCD;\n\tbackground:#f0fcfb;\n}\n.leftFrame_none {\n/*\tpadding-left:15px; */\n\tdisplay:none;\n\tbackground:#000;\n}\n.rightFrame {\n\tpadding:0px;\n\tmargin:0px;;\n}\n.leftFrame2 {\n/*\tborder-left:3px solid #889BAA; */\n\tpadding:0px;\n\tmargin:0px;\n/*\tborder-right:3px solid #889BAA; */\n}\n\n.middleFrame {\n\tborder-right:4px solid #889BAA;\n\tborder-left:3px solid #889BAA;\n}\n#leftBody {\n    padding: 0px;\n}\na:link, a:visited {\n\ttext-decoration: none;\n\tcolor: #01554a;\n}\na:hover {\n\ttext-decoration: underline;\n\tcolor:#01554a;\n}\nimg {\n\tvertical-align: middle;\n\tborder: 0px none;\n}\nhr {\n\theight: 1px;\n\tborder: 0;\n\tborder-top: 1px solid #CCCCCC;\n}\n\n}\n\n/****** Menu *******/\n#subMenu {\n\twidth:100%;\n\theight:21px;\n    background: url(\"images/subMenu_bg.gif\") repeat-x;\n}\n\n/****** Main Layout Styles ******/\n#wrapper {\n    margin: 10px;\n}\n#innerWrapper {}\n.navMenu{\n\tbackground: url(\"../images/title/nav_menu_bg.jpg\") repeat-x left;\n\tmargin-top:96px;\n\theight:29px;\n\tfloat:left;\n\twidth:100%;\n\tfont-size:14px;\n\tfont-weight:bold; \n}\n.navMenu li{cursor:pointer;text-decoration:none;float:left;list-style:none; width:93px; height:29px;color:#fff;letter-spacing:1px;color:#fff;background-image: url(\"../images/title/li_dot.gif\");background-repeat: no-repeat;background-position: right 8px;}\n.navMenu li a{color:#fff}\n.navMenu li a:link{color:#fff;text-decoration:none;}\n.navMenu li a:visited{color:#fff;text-decoration:none;}\n.navMenu li a:hover{color:#fff;text-decoration:none;}\n\n\n#menubar {\n    height: 35px;\n    margin: 5px;\n}\n\n#middleMenubar {\n\n    height: 35px;\n}\n\n#innerMenubar {\n\n    height: 35px;\n\n}\n#navMenubar {\n\tpadding-top: 5px;\n\tpadding-right: 10px;\n\tpadding-bottom: 0px;\n\tpadding-left: 10px;\n}\n#footer {\n\tmargin-top: 18px;\n}\n.welcome2{\n   padding-top:20px;\n   }\n\n/****** Header Elements Styles ******/\n#navMenu {\n    height: 29px;\n    line-height:150%;\n    width: 100%;\n    color: #666;\n    margin-top: 34px;\n    padding-left:300px;\n\tpadding-top:10px;\n    text-align: left;\n\tposition:relative;\n}\n#navMenu a{\n\tpadding:6px 15px 6px 24px; \n\tbackground-image:URL(images/button_bg.jpg); \n\tbackground-repeat:repeat-x;border:1px solid; \n\tborder-color:#b6bccc #b6bccc #adc9d4 #b6bccc;\n\tletter-spacing:1.1px;}\n/*用户信息*/\n#navMenu_infor {\n    height: 12px;\n    width: 100%;\n\tcolor:#fff;\n\tfont-weight:bold;\n    margin-top: 10px;\n\tmargin-bottom:5px;\n    padding-right: 7px;\n    text-align: right;\n}\n\n/*用户信息加粗*/\n#navMenu_infor a{\n\tfont-weight:bold;\n}\n#main_base {\n   margin-top:15px;\n}\n/*模块名称链接提示*/\n.info {\n    position:relative;  \n}\n.info span {display: none;}\n.info:hover span {\n     display:block;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);\n     top:18px;left:-60px;width:auto;\n     border:1px solid #a6caf0; background:#d8e8f8; color:#315982;\n\t \n\t padding-top:3px;\n\t padding-bottom:3px;\n\t padding-left:10px;\n\t padding-right:10px;\n\t text-align:center;\n\t text-decoration:none;\n}\n/*链接提示结束*/\n\n#secondMenu {\t\n    padding: 0px 15px 0px 5px;\n    text-align: center;\n}\n#secondMenu a {\n\theight: 18px;\n\tcolor: #255089;\n    text-decoration: none;\n    dispaly: bolck;\n    padding: 4px 5px 0px 5px;\n}\n#secondMenu a:hover {\n\theight:18px;\n    padding: 4px 5px 0px 5px;\n    background: #91C6FF;\n    border-left: 1px solid;\n    border-right: 1px solid;\n    border-bottom: 1px solid;\n    text-decoration: none;\n    color: #FFF;\n}\n#secondMenu ul {\n    margin: 0px;\n    padding: 0px;\n    width: 100%;\n}\n#secondMenu ul li {\n    display: inline;\n}\n\n/****** Footer Elements Styles ******/\n.footerLinks {\n    padding: 10px;\n    color: #999999;\n}\n.footerLinks a {\n    color: #000066;\n    text-decoration: none;\n}\n.footerLinks a:hover {\n    color: #FF0000;\n    text-decoration: underline;\n}\n.copyright {\n    color: #666666;\n}\n\n\n/****** Main Content Layout ******/\n#mainWrapper {}\n\n/* sidebar */\n.clear_left{clear:both;}\n.sidebar_t{\n\theight:10px;\n}\n\n.sidebar_t_l{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/t_l_bg.jpg) no-repeat left top;\n\tfloat:left;\n}\n\n.sidebar_t_r{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/t_r_bg.jpg) no-repeat right top;\n\tfloat:right;\n}\n.sidebar_t_c{\n\theight:10px;\n\tfloat:left;\t\n\toverflow:hidden;\n}\n.sidebar_b_l{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/b_l_bg.jpg) no-repeat left bottom;\n\tfloat:left;\n\t\n}\n\n.sidebar_b_r{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/b_r_bg.jpg) no-repeat right bottom;\n\tfloat:right;\n\t\n}\n.sidebar {\n    float: left;\n    margin-bottom:10px;\n    border:1px solid #2b927d;\n    background:#e5fffb;\n    overflow:hidden;\n    width:100%;\n     zoom:1;\n   \n}\n.sidebar-hide {\n    display: none;\n    float: right;\n}\n#innerSidebar {\n    padding-top: 4px;\n}\n\n/* Content */\n.content {\n    float: left;\n    width: 100%;\n    margin-right: -200px;\n}\n.content-wide {\n    width: auto;\n    margin: 10px;\n    margin-right: -200px;\n}\n.content-only {\n    width: auto;\n    margin: 10px;\n    margin-right: -200px;\n}\n#innerContent {\n    overflow: visible;\n}\n\n/* a style which makes mainWrapper touch the bottom of sidebar and content */\n.clear {\n    border-top:1px solid transparent !important;\n    margin-top:-1px !important;\n    border-top:0;\n    margin-top:0;\n    clear:both;\n    visibility:hidden;\n}\n\n.floatToolBar {\n\twidth: 150px;\n\theight: 50px;\n\tposition: absolute;\n\ttop:expression(document.body.clientHeight / 2 - 50);\n}\n\n/****** Content Box ******/\n.textbox {\n    background: transparent;\n    margin-bottom: 10px;\n    margin:0;\n    width:97%;\n}\n.boxer{\n    background: transparent;\n    margin-bottom: 10px;\n    margin:0;\n    width:100%;\n \tborder-bottom: 1px solid #e1f1ef;\n\ttext-align: left;\n    padding: 5px;\n    margin: 5px;\n    font-size:14px;\n\tfont-weight:bold;\n\tcolor:#288c80;\n\t}\n.center{\n\ttext-align: center;\n}\n/*\n.textbox-header {\n    background: url(\"images/box_top_left.gif\") no-repeat top left;\n}\n.textbox-inner-header {\n    background: url(\"images/box_top_right.gif\") no-repeat top right;\n}\n*/\n\n.textbox-title {\n\tfont-family: 微软雅黑, Tahoma, Arial;\n \tborder-bottom: 1px solid #e1f1ef;\n\ttext-align: left;\n    padding: 5px;\n    margin: 5px;\n    font-size:16px;\n\tfont-weight:bold;\n\tcolor:#00544a;\n}\n.textbox-title h2 {font-size:16px;margin:0;padding:0}\n.textbox-content {\n    padding: 15px;\n    padding-top: 0px;\n    padding-bottom: 0px;\n}\n.textbox-content {\n    padding: 15px;\n    font-size:10px;;\n}\n.textbox-note {\n    padding: 15px;\n    font-size:12px;;\n}\n/*\n.textbox-bottom {\n    margin-top: 20px;\n    height: 20px;\n    background: url(\"images/box_bottom_left.gif\") no-repeat bottom left;\n}\n.textbox-inner-bottom {\n    height: 20px;\n    background: url(\"images/box_bottom_right.gif\") no-repeat bottom right;\n}\n*/\n.textbox div .textbox-go-top {\n    text-align: right;\n    padding-right: 5px;\n    padding-bottom: 5px;\n    width:93%;\n}\n.textbox-go-top a {\n    color: #999999;\n    font-size: 11px;\n    font-weight: bold;\n    text-decoration: none;\n    padding-right: 16px;\n    background: url(\"images/go_top.gif\") no-repeat top right;\n}\n.textbox-go-top a:visited {\n    color: #999999;\n}\n\n/****** Panel ******/\n.panel {\n    margin-bottom:5px;\n\tposition:relative;\t\n\theight:100%;\n\tclear:both;\n\t\n\t\n}\n\n.panel_icon{\n\twidth:32x;\n\theight:32px;\n\tposition:absolute;\n\tleft:5px;\n\ttop:3px;\n\tz-index:1;\n\toverflow:hidden;\t\n}\n\n\n\n.panel_icon img{\n\twidth:32x;\n\theight:32px;\n\t\n}\n\n.panel-header {\n    height:auto;\n}\n\n.panel-title {\n\tpadding-bottom: 3px;\n\tpadding-bo                                                                                                                                                ttom: 4px !important; \n\ttext-indent:40px;\n\theight:24px;\n\tline-height:24px;\n\tfont-size: 12px;\n    color:#00544a;\n\ttext-align:left;\n\tbackground:url(\"../images/left/left_title.jpg\") no-repeat top left;\n\tmargin-top:5px;\n\tfont-weight:bold;\t\n\tcursor:pointer;\n}\n\n.panel-title img{\n\tpadding-left:5px;\n\t}\n.panel-content {\n\n\ttext-align:left;\n\tpadding:0px 20px;\n\t\n\t\n}\n.panel_content_tree{\n\tmargin-top:5px;\n\tpadding: 10px 5px;\n\ttext-align:left;\n}\n\n.panel-content ul {\n    padding: 0px;\n    margin: 0px;\n\n}\n.panel-content li {\n    overflow:hidden;\n    list-style:none;\n    margin-top:8px;\n}\n.panel-content li a{text-decoration:none; background:url(\"../images/left/left_bar_a.jpg\") no-repeat left;width:135px;height:23px;padding-left:24px; line-height:23px;}\n.panel-content li a:hover{text-decoration:none; background:url(\"../images/left/left_bar_ah.jpg\") no-repeat left;width:135px;height:23px;color:#218c7e;}\n.panel-content a.focus, .panel-content a.focus:hover{text-decoration:none; background:url(\"../images/left/left_bar_ah.jpg\") no-repeat left;width:135px;height:23px;;color:#00544a; font-weight:bold;}\n/***** Other Elements in Page Content *****/\n.caseArticle {\n    padding-left: 10px;\n    padding-right: 10px;\n    margin: 0px;\n    margin-bottom: 25px;\n    font-size: 14.7px;\n}\n.highlight {\n    color: #FF3300;\n}\n.comment {\n    color: #666666;\n}\nh3 {\n    padding: 5px;\n    padding-left: 10px;\n    font-size: 16px;\n    color: #333333;\n    background-color: #F0F0F0;\n    border-left: 4px solid #E0E0E0;\n}\n\n.accesskey {\n    text-decoration: underline;\n}\n.date {\n    margin: 0px 0px 0px 10px;\n    font: 12px \"Tohama\";\n    color: Maroon;\n}\np {\n    //text-indent: 2em;\n}\n\n.errorMessage {\n    width: 100%;\n    text-align: center;\n    color: red;\n    font-weight: bold;\n    font-size: 14.7px;\n}\n.waringMessage {\n\tmargin: 0px 5px 0px 5px;\n    text-align: center;\n    color: red;\n    font-weight: bold;\n    font-size: 14.7px;\n}\n/* Catalog */\n.catalog {\n    width: 92%;\n}\n.catalog li {\n    width: 100%;\n    padding: 5px 0px 2px 0px;\n    border-bottom: 1px #CCC dotted;\n}\n.catalog .part {\n    text-indent: 2em;\n}\n.catalog .rules {\n    text-indent: 4em;\n}\n\n#infoContent {\n    margin: 0px;\n    padding: 0px;\n    text-align: left;\n}\n#childContent {\n    margin: 0px;\n    padding: 0px;\n    float: left;\n    text-align: left;\n}\n#childContent li {\n    width: 100px;\n    padding: 0px;\n    margin: 2px;\n    height: 25px;\n    display: inline;\n    text-align: left;\n    word-break: break-all;\n    vertical-align: top;\n}\n\n/*设备台帐连接部分*/\nmenu{\n\tmargin:0;\n\tpadding:0;\n\tlist-style:none;\n}\n\naa_2\n\nmenu li{\n\theight:20px;\n\twidth:85px;\n\tmargin-right:4px !important;\n\tmargin-right:2px;\n\tfloat:left;\n\t/*解决IE与Gecko浏览器之间的盒模型差异*/\n\tmargin-bottom:4px !important;\t\n\tmargin-bottom:2px;\n}\nmenu a{\n\t/*定义a为块级元素，方便用盒模型属性定义外观*/\n\tdisplay:block;\n\t/*定义尺寸*/\n\twidth:100%;\n\theight:20px;\n\t/*盒模型风格*/\n\tbackground-color:#F6F6F6;\n\tborder:1px solid #DDD;\n\t/*文字样式*/\n\tfont:11px arial;\n\tpadding-top: 3px;\n\ttext-decoration:none;\n\t/*垂直居中*/\n\tline-height:20px;\n\t/*左对齐*/\n\ttext-align:center;\n}\nmenu a:link,menu a:visited{\n\tcolor:#333;\n}\nmenu a:hover,menu a:active{\n\tbackground-color:#E8F3FF;\n\tborder:1px solid rgb(172, 206, 244);\n}\n\n#navMenubar ul {\n\tmargin:0;\n\tpadding:0;\n\tlist-style:none;\n}\n#navMenubar ul li{\n\theight:20px;\n\tmargin-right:4px !important;\n\tmargin-right:2px;\n\twidth: 45px;\n\tfloat:left;\n\tmargin-bottom:4px;\n\tmargin-top: auto;\n\tmargin-left: auto;\n}\n/* 定义ToolBar样式 */\n#navMenubar a {\n\tdisplay:block;\n\tpadding-left:12px;\n\theight: 15px;\n\tline-height: 15px;\n\ttext-align: left;\n\tborder: none;\n\tcolor:#00554a;\n\t\n}\n\n/* 定义周期监督的状态样式 */\n.advanceStatus {\n\tcolor: #ff7e00;\n\tfont-weight: bold;\n}\n.advanceStatus a:link, .advanceStatus a:visited{\n\tcolor: #ff7e00;\n\tfont-weight: bold;\n}\n.overStatus {\n\tcolor: #e21010;\n\tfont-weight: bold;\n}\n\n.overStatus a:link, .overStatus a:visited{\n\tcolor: #e21010;\n\tfont-weight: bold;\n}\n\n/* 图例 */\n.cutline {\n\tfloat:left;\n\tmargin:5px 0px 5px 2.5%;\n}\n\n.advanceChart {\n\tbackground: #ff7e00;\n\tborder: 1px solid #000000;\n}\n\n.overChart {\n\tbackground: #e21010;\n\tborder: 1px solid #000000;\n}\n/* 调令文号 */\n.titleNo {\n\twidth:20px;\n\tborder: none;\n\tbackground: transparent;\n\ttext-align: center;\n}\n\n.popupImage {\n\tvertical-align: bottom;\n\tcursor: hand;\n\tmargin:0px;\n\tpadding:0px;\n\twidth:20px;\n\theight:20px;\n\tbackground: url(\"images/previewButton.gif\") no-repeat;\n}\n/*Xtable 内容样式*/\n.breakwords_content{\n\ttext-align:left;\n\twidth:15%;\n\tword-break:break-all;\n}\n/*Xtable 要求样式*/\n.breakwords_others{\n\ttext-align:left;\n\twidth:15%;\n\tword-break:break-all;\n}\n/*Xtable 日期样式*/\n.breakwords_date{\n\twidth:10%;\n\t}\n/*定义工具栏(增删改等，根据不同宽度设置不同背景图片)*/\n\n#navMenubar #import {width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #doimport { width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #update { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/update.gif\") no-repeat;}\n#navMenubar #edit { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/update.gif\") no-repeat;}\n#navMenubar #new { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/new.gif\") no-repeat;}\n#navMenubar #back {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/back.gif\") no-repeat;}\n#navMenubar #stop {margin:0 3px;width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #save {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save.gif\") no-repeat;}\n#navMenubar #submit {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save.gif\") no-repeat;}\n#navMenubar #view {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/view.gif\") no-repeat;}\n#navMenubar #accept { width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/accept.gif\") no-repeat;}\n#navMenubar #reject { width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/reject.gif\") no-repeat;}\n#navMenubar #query {width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #search {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/search.gif\") no-repeat;}\n#navMenubar #enable {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/accept.gif\") no-repeat;}\n#navMenubar #disable {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/disable.gif\") no-repeat;}\n#navMenubar #clear {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/clear.gif\") no-repeat;}\n#navMenubar #startup {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/startup.gif\") no-repeat;}\n#navMenubar #publish {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/startup.gif\") no-repeat;}\n#navMenubar #report {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/report.gif\") no-repeat;}\n#navMenubar #assess {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/assess.gif\") no-repeat;}\n#navMenubar #print {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/print.gif\") no-repeat;}\n#navMenubar #stat {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/stat.gif\") no-repeat;}\n#navMenubar #people {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/people.png\") no-repeat;}\n#navMenubar #print_view {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:28px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/print_view.gif\") no-repeat;}\n#navMenubar #work_assign {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/work_assign.gif\") no-repeat;}\n#navMenubar #save_assign {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/work_assign.gif\") no-repeat;}\n#navMenubar #confirm_back {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/confirm_back.gif\") no-repeat;}\n#navMenubar #deploy {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/deploy.gif\") no-repeat;}\n#navMenubar #dosearch {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/dosearch.gif\") no-repeat;}\n#navMenubar #save_edit {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save_edit.gif\") no-repeat;}\n#navMenubar #delete { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/del.gif\") no-repeat;}\n\n/*定义工具栏结束*/\n.input{border:0;}\n.input_nobox{border:0;}\n.textarea{width:100%;padding:2px; border:1px solid; border-color:#369e92;font-size:12px;height:70px;overflow:hidden;word-break:break-all;}\n.textarea_normal{width:100%;padding:2px; border:1px solid; border-color:#369e92;font-size:12px;overflow:hidden;word-break:break-all;}\n.textarea_count{width:100%;height:25px;border:1px solid #369e92;border-bottom:1px solid #7ed1c7;border-top:none;margin-top:-1px;background:#f0fcfa;text-align:right;padding:5px 5px 0 0;}\n.user_select {border-top:2px solid #e1f1ef;width:100%;background:#fff;}\n.user_select input{border-style:none;}\n\n#plan_list_panel{position:relative;width:97%;}\n.emptableinfo{position:absolute;left:70px;top:-28px;}\n\t.emptableinfo_l{float:left;margin-right:5px;}\n\t.emptableinfo_r{float:left;}\n\t\n.FastMenu{width:100%;float:left;margin-top:15px}\n.DelFastMenu{width:100%;float:left;margin-top:5px;display:block;clear:both;border-top:1px dotted #cee1df;padding-top:5px;}\n#btn_toolbar {\n\tborder:1px solid red;\n\tPOSITION: fixed; TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 0px; DISPLAY: block; COLOR: #990000; _position: fixed\n}\n\n/* 收缩箭头 */\n#plat_arrow{ white-space:nowrap;cursor:pointer; }\n#title_arrow{ float:left;padding-right:6px; }\n#text_arrow{ float:left;padding:4px; }\n.show_arrow{\n\tbackground:url(\"../images/icon/show_arrow.png\") no-repeat;width:23px;height:20px;clear:right;\n}\n.hide_arrow{\n\tbackground:url(\"../images/icon/hide_arrow.png\") no-repeat;width:23px;height:20px;clear:right;\n}\n\n/* 框架  */\n#left_frame{padding:5px 8px 8px 6px; background:#2B927D; border-left:1px solid #7ECFC0; border-right:1px solid #7ECFC0;}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/css/login.css",
    "content": "body{background:#00716B url(../images/login/bg.png) no-repeat 50% -190; margin:0px; padding:0px; font-size:12px; color:#FFFFFF; text-align:center; }\n#warpbox{height:500px;  width:630px; margin:0 auto; position:relative;}\n\na:link,a:visited, a:active{ color:#bee7e5; text-decoration:none;}\na:hover {color:#FED03F; text-decoration:underline;} \n\n.main{ height:200px;  text-align:left; padding-top:300px; padding-left:140px;}\n\n.logo {height:80px; background:url(../images/login/logo.gif) no-repeat;}\n\n.zck{width:480px; height:90px; font-size:14px;}\n.zc{width:240px; float:left;}\n.zc input{background:url(../images/login/input_bg.jpg) repeat-x; padding:5px; width:160px; height:26px; border:1px solid #00897F; vertical-align:middle;}\n.zc_line{height:30px; margin-top:8px;}\n\n.dl{width:235px; float:right; padding-top:18px;}\n.dl input{ width:width:96px; height:45px;}\n\n.loginImgOut {width:96px; height:45px; padding-top:18px; background:url(../images/login/loginImgOut.jpg) no-repeat; border:0px; cursor:pointer;}\n.loginImgOver{width:96px; height:45px; padding-top:18px; background:url(../images/login/loginImgOver.jpg) no-repeat; border:0px; cursor:pointer;}\n\n.resetImgOut {width:96px; height:45px; padding-top:18px; background:url(../images/login/resetImgOut.jpg) no-repeat; border:0px; cursor:pointer;} \n.resetImgOver{width:96px; height:45px; padding-top:18px; background:url(../images/login/resetImgOver.jpg) no-repeat; border:0px; cursor:pointer;} \n\n.bqxx{height:90px; text-align:center; margin-top:50px; color:#bee7e5; line-height:22px; margin-left:-40px; }\n\n\n#ts{\n    position:absolute;\n\tdisplay:none;\n\ttop:335px;\n\tleft:204px;\n\twidth:450px;\n\tbackground:#dbfbf9;\n\tborder:1px solid #cae9e7;\n\ttext-align:left;\n\tcolor:#000000;\n\tpadding:10px;\n}\n#ts a{\n\tdisplay:block;\n\theight:25px;\n\tline-height:25px;\n\tcursor:pointer;\n}\n#ts a:hover, #ts a.selected{\n\tdisplay:block;\t\n\tbackground:#dbfbf9;\n\theight:25px;\n\tline-height:25px;\n\tcolor:#000000;\n}\n\t\n\t"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/css/main.css",
    "content": ".modelDiv {\n\ttext-align: center;\n}\n.welcome {\n    height:100px;\n\ttext-align: center;\n\tbackground: URL(\"images/welcome.gif\") no-repeat top;\n\t\n}\n.modelTable {\n    width: 97%;\n}\n.modelTitle {\n\tBACKGROUND: url(\"../images/title/title_bg.gif\");\n\tbackground-repeat:repeat-x;\n\tFONT: bold 10.5pt 微软雅黑, 宋体;\n\tCOLOR: #00554a;\n\tborder-bottom:1px solid #45b4a7;\n\tHEIGHT: 25px;\n\tTEXT-ALIGN: left;\n\tpadding-top:5px;\n}\n.subModelTitle {\n \tPADDING-LEFT: 10pt;\n\tBACKGROUND: #f0fcfa; \n\tFONT: bold 9pt 微软雅黑, 宋体;\n\tCOLOR: #369e92; \n\tHEIGHT: 20pt; \n\tTEXT-ALIGN: left;\t\n}\n.model_intro_left {\n\twhite-space: nowrap;\n\ttext-align: left;\n    background: #fff;\n\tborder-bottom:1px solid #e1f1ef;\n\twidth: 130px;\n\theight:20pt;\n}\n.model_intro_right {\n\tbackground: #fff;\n\tborder-bottom:1px solid #e1f1ef;\n\tline-height:22px;\n}\n.modelTable td {\n\tpadding: 5px;\n}\n.tableFooter{\n\tBACKGROUND: #c1e1dd;\n}\n\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/css/table.css",
    "content": "table {\n    border-collapse: collapse;\n}\n\ntbody, tfoot {\n    /*background: #FFF;*/\n    COLOR: #333333;\n}\n\ncaption {\n\tfont: 14.7px \"宋体\";\n\tcolor: #476CA4;\t\n}\n\n/* 默认下拉列表框 */\nselect {\n    font: 12px \"宋体\";\n    background: #FFF;\n    border: 1px solid #637DDE;\n}\n\n/*默认数据文本框控制*/\ntextarea {\n    width:98%;\n    font: 12px \"宋体\";\n    border: 1px solid #7F9DB9;\n    /*\n    word-wrap:break-word;\n    word-break:break-all;\n    */\n}\n.commonText {\n    width: 260px;\n}\n\n/* 通用表格 */\n.commonTable {\n\twidth:98%;\n}\n.commonTable_main{\n\twidth:100%;\n\tborder:1px solid #daf2ef;\n}\n.commonTable_special{\n\twidth:100%;\n\tborder:1px solid #daf2ef;\n\tborder-top:1px solid #7ccac1;\n\t\n}\n\n/* 表格栏目 */\n.columnTitle {\n\twidth:120px;\n\twhite-space:nowrap;\n\tpadding: 15px;\n\tmargin-right:-50px;\n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tline-height:150%;\n}\n/* 表格内容 */\n.normalTD {\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContent {\n    width:300px;\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContentAuto {\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContent input{\n     padding-top:3px;\n\t padding-left:2px;\n\t width:100%;\n}\n\n.columnTitle_mustbe {\n\twidth: 90px;\n\tPADDING: 5px 5px 5px 18px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat left 18px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n.td_title {\n    PADDING: 5px 5px 5px 6px;\n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n\n/*\n部门模块修改页面使用\n*/\n.td_mustbe {\n    PADDING: 5px 5px 5px 6px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat  -9px 14px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n\n.columnTitle_mustbe_custom {\n\twidth: 80px;\n\tPADDING: 5px 5px 5px 22px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat left 32px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n.columnTitle_mustbe_custom2 {\n\tbackground:#f0fcfa url(/skin/default/images/must.gif) no-repeat 25px 6px; \n}\n.tableContent_c td{\n    width:auto;\n\tPADDING:5px;    \n\tword-break:break-all;\n\tborder-top:1px solid #c1e1dd;\n\tpadding-top:10px;\n}\n.tc_others{width:auto;margin-left:15px;position:absolute;}\n.tc_others_input{float:left;}\n.tc_others_word{float:left;margin-top:5px;margin-left:3px;color:#009900;}\n\n\n/* 通用表格行定义 */\n.commonTable tr {\n    font-size: 12px;\n}\n\n\n/* 通用表格内容 */\n\n.tableFooter {\n\theight:3px;\n\tbackground: #f5f9fd;\n}\n\n/* 通用表格标题栏 */\n.listTablew{\n\tmargin-top:5px;\n\tpadding:1px;\n\twidth:98%;\n\tborder:1px solid #45b4a7;\t\n}\n.rowTitle {\n    font-weight: bold;\n    text-align: center;\n    HEIGHT:30px;\n}\n.rowTitle td{\n    font-weight: bold;\n    text-align: center;\n    HEIGHT:28px;\n    border-bottom:1px solid #75bdb5;\n    background:#f0fcfa;\n}\n\n.CTM_title{\n\tbackground:#f0fcfa;\n    text-align: center;\n    HEIGHT:30px;\n    border-bottom:1px solid #e1f1ef;\n}\n.CTM_title_main{\n\tbackground:url(images/Now_job_bg.gif) repeat-x;\n    text-align: center;\n    HEIGHT:30px;\n    color:#fff;\n    border-bottom:1px solid #badcd8;\t\n\t}\n.CTM_title_main td{\n\tfont-weight: bold;\n\tborder-bottom:1px solid #52ada2;\n\t}\n.CTM_title td{\n    font-weight: bold;\n    color:#00554a;\n    word-break:break-all;\n}\n.CTM_row td{\n\theight:35px;\n\tpadding:3px 8px;\n\tborder-top:1px solid #badcd8;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\t}\n.CTM_rower td{\n\theight:35px;\n\tpadding:3px 8px;\n\tborder-top:1px solid #daf2ef;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n    word-break:break-all;\n\t}\n.CTM_rower2 td{\n\theight:35px;\n\tpadding:3px;\n\tborder-top:1px solid #daf2ef;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n    word-break:break-all;\n\t}\n.CTM_rower input, .CTM_rower select{\n\twidth:95%;\n}\n.CTM_rower2 input, .CTM_rower2 select{\n\twidth:95%;\n}\n.CTM_row_light{\n\theight:35px;\n\tpadding:0 5px;\n\tborder-top:1px solid #badcd8;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\tbackground:#f0fcfa;\n\t}\n.CTM_row_light td{\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_light_focus_left{\n\tbackground:#f0fcfa url(images/CMT_row_title_bg.gif) no-repeat 15px 0px;\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_light_focus_left_last{\n\tbackground:#f0fcfa url(images/CMT_row_title_bg_last.gif) no-repeat 15px 0px;\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_dark_focus{\n\tbackground:#eef4f3 url(images/document.gif) no-repeat 3px 4px;\n\tpadding:5px 0px 3px 35px;\n\theight:32px;\n\t}\n.CTM_row_light_focus{\n\tbackground:#f0fcfa url(images/document_out.gif) no-repeat 3px 4px;\n\tpadding:5px 0px 3px 35px;\n\theight:32px;\t\n\t}\n .CTM_row_dark td{\n \tborder-top:1px solid #d3d9d8;\n\tborder-bottom:1px solid #c0c5c4;\n\tpadding:5px 5px;\n\theight:38px;\n\t}\n.CTM_row_dark{\n\theight:35px;\n\tpadding:0 5px;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\tbackground:#eef4f3;\n\t}"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/css/title.css",
    "content": "#userInfo {\n\theight:35px;\n\tposition: absolute;\n\tright:20px;\n\ttop: -1px;\n\tpadding:8px 8px 0px 15px;\n\tcolor: #fff;\n\ttext-align: right;\t\t\n\tcursor:pointer;\n}\n\n.memo{\n\tbackground:url(../images/title/memo.gif) no-repeat;\n\tposition:absolute;\n\tright:129px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n.small_login{\n\tbackground:url(../images/title/small_login.gif) no-repeat;\n\tposition:absolute;\n\tright:69px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n.small_login_out{\n\tbackground:url(../images/title/login_out.gif) no-repeat;\n\tposition:absolute;\n\tright:10px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n\n.top_logo {\n\tbackground:url(\"../images/login/logo.png\") no-repeat -2px 2px;\n    height:91px;\n    white-space:nowrap;\n    overflow:hiddle;\n}\n.headerBg {\n\tbackground:url(../images/title/title_bgs.jpg) no-repeat right top;\n    height:106px;\n    margin: 0px;\n}\n.titleDate{float:left;height:29px;width:200px;text-align:left;color:#fff; line-height:29px; font-size:12px;font-weight:normal;padding-left:30px;}\n#menuContent{ height:29px;left:0px;padding:0px 5px 0px 5px; font-size:12px;}\n#topmenu{ margin-top:1px;padding:6px 11px 5px 13px;color:white;height:29px;cursor:pointer; overflow:hiddle; }\n#tm_separator{ height:28px;width:2px;background:url(../images/title/tm_separator.jpg) no-repeat;}\n#prompt_div{\n\twidth:150px;\n\theight:50px;\n\tposition:absolute;\n\tright:18%;\n\ttop:35px;\n\tz-index:9999;\n}\n#leftKey{\n\tfloat:left;\n\twidth:16px;\n\tcursor: hand;\n\tpadding:2px 0px 0px 0px;\n}\n#mask{\n\theight: 100%;\n\toverflow: hidden; \t\n}\n#rightKey{\n\tpadding-top:5px;\n\twidth:16px;\n\tcursor: hand;\n\tz-index: 99999;\n\tfloat:left;\n\tpadding:2px 5px 0px 5px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/skin/default/js/toggle.js",
    "content": "$(document).ready(function(){\n   $(\".panel-title\").toggle(function(){\n     $(this).next(\".panel-content\").animate({height: 'toggle', opacity: 'toggle'}, \"slow\");\n   },function(){\n$(this).next(\".panel-content\").animate({height: 'toggle', opacity: 'toggle'}, \"slow\");\n   });\n});"
  },
  {
    "path": "Check Maven Webapp/src/main/webapp/sql/onlinetest.sql",
    "content": "/*\nNavicat MySQL Data Transfer\n\nSource Server         : 测试\nSource Server Version : 50162\nSource Host           : localhost:3306\nSource Database       : onlinetest\n\nTarget Server Type    : MYSQL\nTarget Server Version : 50162\nFile Encoding         : 65001\n\nDate: 2018-04-13 13:28:59\n*/\n\nSET FOREIGN_KEY_CHECKS=0;\n-- ----------------------------\n-- Table structure for `t_course`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_course`;\nCREATE TABLE `t_course` (\n  `courseid` int(5) NOT NULL AUTO_INCREMENT,\n  `coursename` varchar(20) NOT NULL,\n  `coursestate` varchar(2) NOT NULL,\n  PRIMARY KEY (`courseid`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_course\n-- ----------------------------\nINSERT INTO `t_course` VALUES ('1', '语文', '0');\nINSERT INTO `t_course` VALUES ('2', '数学', '0');\nINSERT INTO `t_course` VALUES ('3', '英语', '0');\n\n-- ----------------------------\n-- Table structure for `t_errorbook`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_errorbook`;\nCREATE TABLE `t_errorbook` (\n  `bookid` int(10) NOT NULL AUTO_INCREMENT,\n  `userid` varchar(40) NOT NULL,\n  `courseid` varchar(40) NOT NULL,\n  `gradeid` varchar(40) NOT NULL,\n  `uanswer` varchar(400) NOT NULL,\n  `questionid` varchar(40) NOT NULL,\n  `typeid` varchar(40) DEFAULT NULL,\n  PRIMARY KEY (`bookid`)\n) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_errorbook\n-- ----------------------------\nINSERT INTO `t_errorbook` VALUES ('1', 'zhangsan', '1', '3', 'A', '1', '1');\nINSERT INTO `t_errorbook` VALUES ('2', 'zhangsan', '1', '3', 'A', '29', '1');\nINSERT INTO `t_errorbook` VALUES ('3', 'zhangsan', '1', '3', 'A', '30', '1');\nINSERT INTO `t_errorbook` VALUES ('4', 'zhangsan', '1', '3', 'A', '34', '1');\nINSERT INTO `t_errorbook` VALUES ('5', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('6', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('7', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('8', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('9', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('10', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('11', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('12', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('13', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('14', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('15', 'zhangsan', '1', '3', 'A', '24', '1');\nINSERT INTO `t_errorbook` VALUES ('16', 'zhangsan', '1', '3', 'A', '21', '1');\nINSERT INTO `t_errorbook` VALUES ('17', 'zhaowen', '1', '3', 'A', '1', '1');\n\n-- ----------------------------\n-- Table structure for `t_grade`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_grade`;\nCREATE TABLE `t_grade` (\n  `gradeid` int(5) NOT NULL AUTO_INCREMENT,\n  `gradename` varchar(20) NOT NULL,\n  `courseid` varchar(40) NOT NULL,\n  PRIMARY KEY (`gradeid`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_grade\n-- ----------------------------\nINSERT INTO `t_grade` VALUES ('1', '高一', '1,2,3');\nINSERT INTO `t_grade` VALUES ('2', '高二', '1,2,3');\nINSERT INTO `t_grade` VALUES ('3', '高三', '1,2,3');\n\n-- ----------------------------\n-- Table structure for `t_paper`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_paper`;\nCREATE TABLE `t_paper` (\n  `paperid` varchar(20) NOT NULL,\n  `papername` varchar(40) NOT NULL,\n  `courseid` varchar(40) NOT NULL,\n  `gradeid` varchar(40) NOT NULL,\n  `userid` varchar(40) DEFAULT NULL,\n  `questionid` varchar(200) NOT NULL,\n  `begintime` varchar(20) DEFAULT NULL,\n  `endtime` varchar(20) DEFAULT NULL,\n  `allowtime` varchar(20) NOT NULL,\n  `score` varchar(5) DEFAULT NULL,\n  `paperstate` varchar(10) DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_paper\n-- ----------------------------\nINSERT INTO `t_paper` VALUES ('sj001', '高三语文期末考试试题', '1', '3', null, '2,3,1', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj001', '高三语文期末考试试题', '1', '3', 'zhangsan', '2,3,1', '2017-03-26 23:22:36', '2017-03-26 23:22:36', '120', '5', '2');\nINSERT INTO `t_paper` VALUES ('sj002', '高三语文期末考试（0324）', '1', '3', null, '29,28,30,22,34,9,10,17,18,14', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj002', '高三语文期末考试（0324）', '1', '3', 'zhangsan', '29,28,30,22,34,9,10,17,18,14', '2017-03-27 21:45:23', '2017-03-27 21:45:30', '120', '10', '2');\nINSERT INTO `t_paper` VALUES ('sj003', '高三语文高考仿真训练（一）', '1', '3', null, '2,24,32,21,22,7,4,19,17,15', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj004', '高三语文高考仿真训练（二）', '1', '3', null, '1,23,3,26,27,11,5,13,9,8', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj003', '高三语文高考仿真训练（一）', '1', '3', 'zhangsan', '2,24,32,21,22,7,4,19,17,15', '2017-03-28 09:09:26', '2017-03-28 09:09:33', '120', '15', '2');\nINSERT INTO `t_paper` VALUES ('sj004', '高三语文高考仿真训练（二）', '1', '3', 'zhangsan', '1,23,3,26,27,11,5,13,9,8', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj005', '高三语文高考仿真训练（三）', '1', '3', null, '3,33,27,26,32,12,9,19,10,18', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj005', '高三语文高考仿真训练（三）', '1', '3', 'zhangsan', '3,33,27,26,32,12,9,19,10,18', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj001', '高三语文期末考试试题', '1', '3', 'zhaowen', '2,3,1', '2017-03-28 09:18:23', '2017-03-28 09:18:24', '120', '10', '2');\nINSERT INTO `t_paper` VALUES ('sj002', '高三语文期末考试（0324）', '1', '3', 'zhaowen', '29,28,30,22,34,9,10,17,18,14', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj003', '高三语文高考仿真训练（一）', '1', '3', 'zhaowen', '2,24,32,21,22,7,4,19,17,15', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj004', '高三语文高考仿真训练（二）', '1', '3', 'zhaowen', '1,23,3,26,27,11,5,13,9,8', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj005', '高三语文高考仿真训练（三）', '1', '3', 'zhaowen', '3,33,27,26,32,12,9,19,10,18', null, null, '120', null, '1');\nINSERT INTO `t_paper` VALUES ('sj006', '高三语文测试', '1', '3', null, '32,27,22,20,29,17,12,13,9,15', null, null, '120', null, '0');\nINSERT INTO `t_paper` VALUES ('sj006', '高三语文测试', '1', '3', 'zhangsan', '32,27,22,20,29,17,12,13,9,15', null, null, '120', null, '1');\n\n-- ----------------------------\n-- Table structure for `t_question`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_question`;\nCREATE TABLE `t_question` (\n  `questionid` int(10) NOT NULL AUTO_INCREMENT,\n  `quesname` varchar(500) NOT NULL,\n  `optiona` varchar(100) DEFAULT NULL,\n  `optionb` varchar(100) DEFAULT NULL,\n  `optionc` varchar(100) DEFAULT NULL,\n  `optiond` varchar(100) DEFAULT NULL,\n  `answer` varchar(500) NOT NULL,\n  `answerdetail` varchar(200) DEFAULT NULL,\n  `useranswer` varchar(500) DEFAULT NULL,\n  `courseid` varchar(20) NOT NULL,\n  `typeid` varchar(20) NOT NULL,\n  `difficulty` int(2) NOT NULL,\n  `remark` varchar(200) DEFAULT NULL,\n  `gradeid` varchar(20) NOT NULL,\n  PRIMARY KEY (`questionid`)\n) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_question\n-- ----------------------------\nINSERT INTO `t_question` VALUES ('1', '下列词语中加点字的读音，全部正确的一项是（）', 'A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng', 'B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì', 'C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu', 'D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè', 'D', 'A．埋 mán， B．跄 qiàng C.梗gěng', null, '1', '1', '0', '本题考察的都是基础字音，没有出现偏难怪的字音', '3');\nINSERT INTO `t_question` VALUES ('2', '下列词语中，没有错别字的一项是（）', 'A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑', 'B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰', 'C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵', 'D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼', 'A', 'B.文武之道，一张一弛；C.寻章摘句；D.斐然', null, '1', '1', '0', '本题考察的都是高考高频字形。', '3');\nINSERT INTO `t_question` VALUES ('3', '下列各句中加点词语的使用，不恰当的一项是（）', 'A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。', 'B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。 ', 'C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。', 'D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。', 'A', '届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。', null, '1', '1', '0', '本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。', '3');\nINSERT INTO `t_question` VALUES ('4', '吾视其辙乱，_________________，故逐之。（《曹刿论战》）', null, null, null, null, '望其旗靡', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('5', '明明如月，_________________?（曹操《短歌行》）', null, null, null, null, '何时可掇', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('6', '闾阎扑地，_________________，舸舰弥津，青雀黄龙之舳。（王勃《滕王阁序》）', null, null, null, null, '钟鸣鼎食之家', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('7', '万里悲秋常作客，_________________。（杜甫《登高》）', null, null, null, null, '百年多病独登台', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('8', '_________________ ，铁骑突出刀枪鸣。（白居易《琵琶行》）', null, null, null, null, '银瓶乍破水浆迸', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('9', '予谓菊，_________________；牡丹，花之富贵者也。（周敦颐《爱莲说》）', null, null, null, null, '花之隐逸者也', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('10', '持节云中，_________________？（苏轼《江城子·密州出猎》）', null, null, null, null, '何日遣冯唐', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('11', '_________________，瑞脑销金兽。（李清照《醉花阴》）', null, null, null, null, '薄雾浓云愁永昼', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('12', '人不知而不愠，              ？（《论语》）', null, null, null, null, '不亦君子乎', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('13', '君子博学而日参省乎己,_________________。（《荀子·劝学》）', null, null, null, null, '则知明而行无过矣', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('14', '涉江采芙蓉，_________________。（《古诗十九首》）', null, null, null, null, '兰泽多芳草', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('15', '母、孙二人，更相为命，_________________。（李密《陈情表》）', null, null, null, null, '是以区区不能废远', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('16', '三径就荒，_________________。（陶渊明《归去来兮辞》）', null, null, null, null, '松菊犹存', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('17', '岩扉松径长寂寥，_________________。（孟浩然《夜归鹿门歌》）', null, null, null, null, '惟有幽人自来去', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('18', '群山万壑赴荆门，_________________。（杜甫《咏怀古迹》）', null, null, null, null, '生长明妃尚有村', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('19', '遥岑远目，献愁供恨，_________________。（辛弃疾《水龙吟·登建康赏心亭》）', null, null, null, null, '玉簪螺髻', null, null, '1', '4', '0', null, '3');\nINSERT INTO `t_question` VALUES ('20', '下列词语中加点的字，读音全都正确的一组是（ ）', 'A. 场(chǎng)所    逮(dài)捕    疾风劲(jìng)草', 'B. 应(yìng)届     贿赂(lù)     飒(sà)爽英姿', 'C. 功绩(jì)       星宿(sù)     揆情度(duó)理', 'D. 谈吐(tù)       麇(qún)集    短小精悍(hàn)', 'A', 'B项“应”C项“宿”D项“吐”', null, '1', '1', '0', null, '3');\nINSERT INTO `t_question` VALUES ('21', '下列词语书写没有错别字的一项是（ ）', 'A．首屈一指    毛骨耸然    义愤填膺    劳动锻练', 'B．励行节约    一枕黄梁    妄费心机    通宵达旦', 'C．堰苗助长    结局园满    不可思议    一劳永逸', 'D.   记忆犹新    乔装打扮    顷刻之间    罄竹难书', 'D', 'A项“耸”应为“悚”，“练”应为“炼”B项“励”应为“厉”“梁”应为“粱”“妄”为“枉”；C项“堰”应为“揠”“园”应为“圆”', null, '1', '1', '0', null, '3');\nINSERT INTO `t_question` VALUES ('22', '下列各句中没有语病的一句是（ ）', 'A．上海文艺出版社出版的《生存》，出自一位蛰居海外二十多年的加拿大籍华裔之手。', 'B．孔繁森的名字已家喻户晓，对大家都不陌生。', 'C.   日子长了，老王一家对他们的感情越来越深厚，就像自己家里人一样。', 'D．无论老师和学生，毫无例外，都必须遵守学校的规章制度。', 'A', 'B“对大家”后加“来说”；C句不明确，“就像”前加“待他们”；D“无论”与“和”不搭配，“和”应为“或”。', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('23', '下列词语中加点的字，读音全都正确的一组是（ ）', 'A. 扼(é)要     游弋(yì)     风驰电掣(chè)', 'B. 娱(yú)乐    伺(cì)候     强(qiáng)人所难', 'C. 蓓蕾(lěi)   犒(kào)赏    锲(qiè)而不舍', 'D. 讹(é)诈     口供(gōng)   行若狗彘(zhì)', 'C', 'A项“扼”B项“强”D项“供”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('24', '下列词语没有错别字的一项是（ ）', 'A. 真知灼见    高瞻远瞩    怨天忧人    鼓噪而进', 'B. 雅俗共赏    招摇撞骗    喧宾夺主    杀一敬百', 'C. 到处传诵    梳装打扮    心劳日拙    计划缜密', 'D. 改弦更张    当仁不让    恶意诅咒    墨守成规', 'D', 'A项“忧”应为“尤”B项“敬”应为“儆”或“警”C项“装”应为“妆”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('25', '下列词语中加点的字，读音全都正确的一组是（ ）', 'A. 哺(pǔ)育      对峙(zhì)     面面相觑(qù)', 'B. 模(mú)样      歼(qiān)灭    广袤(mào)无垠', 'C．场(cháng)院   拓(tuò)片     一暴(pù)十寒', 'D. 答(dā)应      症(zhēng)结   惝(tǎng)恍迷离', 'D', 'A项“哺”B项“歼”C项“拓”1', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('26', '下列词语没有错别字的一项是（ ）', 'A．毕躬毕敬    按部就班    防患未然    雷霆万钧', 'B．不记其数    发奋图强    和盘托出    恍然大悟', 'C．荒谬绝伦    琅琅上口    滥竽充数    死心塌地', 'D. 故弄悬虚    东拼西凑    哄堂大笑    破釜沉舟', 'C', 'A项“躬”应为“恭”B项“记”应为“计”D项“悬”应为“玄”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('27', '下列各句，没有语病、句意明确的一句是（ ）', 'A. 中国人民自从接受了马克思主义之后，中国的革命就在毛泽东同志的领导下从胜利走向胜利。', 'B．我们要改革和完善符合科学技术发展客观规律的、与社会主义市场经济相适应的、科技同经济有机结合相互促进的科技新体制。', 'C. 乍得总统哈布雷十四日说，乍得政府希望与利比亚谈判，以寻求解决两国间的矛盾。', 'D. 我们历来主张向外国先进的科学文化学习和借鉴，而且已经这样做了；但我们也历来反对盲目照搬外国，全盘西化，事实证明，那样做是极端错误的。', 'D', 'A“自从”应放在“中国人民”前面；B去掉“改革和”；C“寻求”缺少宾语，应改为“以寻求解决两国间矛盾的办法”。', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('28', '下列各组词语中加点的字的读音，与所给注音全都相同的一组是（ ）', 'A．号háo      号叫    号丧    号哭    号淘大哭', 'B．强qiáng    强制    强迫    强化    强词夺理', 'C．贴tiè      字贴    碑贴    面贴    俯首贴耳', 'D．累lěi      累计    连累    累赘    危若累卵', 'A', 'B项“强词夺理”的“强”C项“俯首贴耳”的“贴”D项“累赘”的“累”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('29', '下列词语没有错别字的一项是（ ）', 'A．名不副实    礼上往来    呕心沥血    如愿以偿', 'B．淋漓尽致    麻木不仁    络绎不绝    明察秋毫', 'C.  流离迁徙    奴颜婢膝    气息奄奄    迫不急待', 'D.  轻歌曼舞    凭白无故    前仆后继    盛气凌人', 'B', 'A项“上”应为“尚”C项“急”应为“及”D项“凭”应为“平”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('30', '下列各句，没有语病，句意明确的一句是（ ）', 'A．现在，许多青年男女不再以财产多寡和门第高低为条件，而以能劳动，有科学文化知识为标准去选择自己的伴侣。', 'B．这个村今年水稻获得了大丰收，不但向国家交售了六万斤谷子，而且不吃国家的供应粮了。', 'C.   厂长采纳了两个工人的合理化建议，这大大激发了全厂职工出谋献策的积极性。', 'D．鉴于动物有上述特点，我们可以预测，随着信息时代的到来，科学技术的不断发展，在未来的战争舞台上，将有越来越多的“动物兵”出现。', 'D', 'A“能劳动”“有科学文化知识”前分别加“是否”；B应改为“不但不吃国家的供应粮了，而且向国家交售了六万斤谷子”；C“两个”有歧义，可改为“两名工人的合理化建议”或“工人的两个合理化建议”。', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('31', '下列各组词语中加点的字的读音，与所给注音全都相同的一组是（ ）', 'A．角jiǎo    号角    角落    头角    群雄角逐', 'B．笼lóng    笼子    牢笼    笼屉    烟笼雾锁', 'C．量liáng   思量    打量    测量    量体裁衣', 'D．削xuē     剥削    削减    瘦削    日削月割', 'D', 'A项“群雄角逐”的“角”B项“烟笼雾锁”的“笼”C项“量体裁衣”的“量”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('32', '下列词语没有错别字的一项是（ ）', 'A．和蔼可亲    并行不悖    举一反三    唉声叹气', 'B．撤消处分    柳暗花明    中西合璧    称心如意', 'C．黯然销魂    原型毕露    惨无人道    计日程功', 'D．原物必还    为虎作伥    扬常而去    一张一驰', 'A', 'B项“消”应为“销”C项“型”应为“形”D项“必”应为“毕”', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('33', '下列句子中，成语使用正确的一句是（ ）', 'A．听到我校运动队在全市中学生运动会上夺得团体总分第一名的消息，一向不苟言笑的刘校长也显得非常兴奋，在操场上手舞足蹈地同老师们谈着、笑着。', 'B．洪水冲垮了李老汉的房子，全村人都很难过，村前村后，哀鸿遍野。', 'C.   突然，一个影子如白驹过隙一般一闪而过，快捷异常。', 'D．第一次试验失败了，王工程师抱恨终天，直到深夜心里还很难过。', 'A', 'B项比喻流离失所的灾民；C项形容时间过得快，与句意不符；D项是指恨一辈子，与句意不符。', null, '1', '1', '1', null, '3');\nINSERT INTO `t_question` VALUES ('34', '下列各句没有语病，语意明确的一句是（ ）', 'A．加强对全民环保意识的教育，是当前非常至关重要的问题。', 'B．张义和王强上课说话，被老师叫到办公室去了。', 'C．选修课的开设，使同学们的志趣和特长得到了充分的发挥。', 'D．教育优先发展的战略地位，在《教育法》颁布后，得到了进一步落实。', 'D', 'A“非常”与“至关”重复；B项有歧义；C项“志趣”与“发挥”不搭配。', null, '1', '1', '1', null, '3');\n\n-- ----------------------------\n-- Table structure for `t_resources`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_resources`;\nCREATE TABLE `t_resources` (\n  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键（自增）',\n  `name` varchar(20) NOT NULL COMMENT '物品名称',\n  `price` double(7,2) DEFAULT NULL COMMENT '物品单价',\n  `number` int(5) DEFAULT '0' COMMENT '物品数量',\n  `description` varchar(100) DEFAULT '' COMMENT '物品的详细描述',\n  `state` int(1) DEFAULT NULL,\n  `kind` int(11) DEFAULT NULL COMMENT '所属类别编号',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='物品表';\n\n-- ----------------------------\n-- Records of t_resources\n-- ----------------------------\nINSERT INTO `t_resources` VALUES ('1', '桌子', '200.00', '4', '呵呵呵呵呵呵呵', null, '1');\nINSERT INTO `t_resources` VALUES ('4', 'ipad', '1000.00', '1', 'jisidsaidiadia', null, '2');\nINSERT INTO `t_resources` VALUES ('6', '椅子', '300.00', '3', 'jisidsaidiadia', null, '1');\nINSERT INTO `t_resources` VALUES ('7', 'cdcdc', '123.00', '11', '1111', null, '1');\nINSERT INTO `t_resources` VALUES ('8', 'dedede', '123.00', '121', '1212121', null, '1');\n\n-- ----------------------------\n-- Table structure for `t_type`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_type`;\nCREATE TABLE `t_type` (\n  `typeid` int(5) NOT NULL AUTO_INCREMENT,\n  `typename` varchar(20) NOT NULL,\n  `score` int(5) NOT NULL,\n  `remark` varchar(100) DEFAULT NULL,\n  PRIMARY KEY (`typeid`)\n) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_type\n-- ----------------------------\nINSERT INTO `t_type` VALUES ('1', '单选题', '5', '只能选择一个');\nINSERT INTO `t_type` VALUES ('2', '多选题', '5', '下列选项中，至少有两个是正确的');\nINSERT INTO `t_type` VALUES ('3', '判断题', '5', '请判断对错');\nINSERT INTO `t_type` VALUES ('4', '填空题', '5', 'cs');\nINSERT INTO `t_type` VALUES ('5', '简答题', '5', '');\nINSERT INTO `t_type` VALUES ('6', '操作题', '5', '功能暂未实现');\n\n-- ----------------------------\n-- Table structure for `t_user`\n-- ----------------------------\nDROP TABLE IF EXISTS `t_user`;\nCREATE TABLE `t_user` (\n  `userid` varchar(40) NOT NULL,\n  `username` varchar(20) NOT NULL,\n  `userpwd` varchar(40) NOT NULL,\n  `grade` varchar(10) DEFAULT NULL,\n  `usertype` int(2) NOT NULL,\n  `userstate` int(2) NOT NULL,\n  `email` varchar(40) NOT NULL,\n  `telephone` varchar(20) DEFAULT NULL,\n  `address` varchar(20) DEFAULT NULL,\n  `remark` varchar(200) DEFAULT NULL,\n  PRIMARY KEY (`userid`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\n-- ----------------------------\n-- Records of t_user\n-- ----------------------------\nINSERT INTO `t_user` VALUES ('admin', '系统管理员', 'e10adc3949ba59abbe56e057f20f883e', null, '2', '0', 'admin@163.com', '123456', '师大教师公寓', '');\nINSERT INTO `t_user` VALUES ('ceyi', '侧翼', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '0', 'ceyi@163.com', '123456', '123456', 'cs');\nINSERT INTO `t_user` VALUES ('hy', '弘毅', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '0', 'hy@163.com', '123456', '123456', '123456');\nINSERT INTO `t_user` VALUES ('jj', '娟娟', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '0', 'jj@163.com', '123456', '123456', '测试');\nINSERT INTO `t_user` VALUES ('jl', '杰龙', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '0', 'jl@163.com', '123456', '123456', '123456');\nINSERT INTO `t_user` VALUES ('kk', '可可', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '1', 'kk@163.com', '123456', '123456', '123456');\nINSERT INTO `t_user` VALUES ('zhangsan', '张三', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '1', 'zhangsan@163.com', '123456', '师大教师公寓', null);\nINSERT INTO `t_user` VALUES ('zhaosi', '赵四', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '2', 'zhaosi@163.com', '123456', '111', '11');\nINSERT INTO `t_user` VALUES ('zhaowen', '赵雯', 'e10adc3949ba59abbe56e057f20f883e', '3', '0', '1', 'zhaowen@163.com', '123456', '12', '111');\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/beans.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\t\t\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/mvc \n\t\t\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/context \n\t\t\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/aop \n\t\t\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/tx \n\t\t\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\t\t\n\t<!-- 管理service和dao -->\n\t<context:component-scan base-package=\"edu.fjnu.online.service,edu.fjnu.online.dao\"/>\n\t<context:property-placeholder location=\"classpath:jdbc.properties\"/>\n\t\t\t\t\n\t<!-- 数据库链接信息 -->\t\t\n\t<bean id=\"dataSource\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n\t\t<property name=\"driverClass\" value=\"${jdbc.driverClassName}\"/>\n\t\t<property name=\"jdbcUrl\" value=\"${jdbc.url}\"/>\n\t\t<property name=\"user\" value=\"${jdbc.username}\"/>\n\t\t<property name=\"password\" value=\"${jdbc.password}\"/>\n\n\t\t<property name=\"maxPoolSize\" value=\"${c3p0.pool.size.max}\"/>\n\t\t<property name=\"minPoolSize\" value=\"${c3p0.pool.size.min}\" />\n\t\t<property name=\"initialPoolSize\" value=\"${c3p0.pool.size.ini}\"/>\n\t\t<property name=\"acquireIncrement\" value=\"${c3p0.pool.size.increment}\"/>\n\t</bean>\n\t\t\n\t<!-- sqlSessionFactory spring和myBatis整合 -->\n\t<bean id=\"sqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t\t<property name=\"configLocation\" value=\"classpath:sqlMapConfig.xml\"/>\n\t\t<property name=\"mapperLocations\" value=\"classpath:edu/fjnu/online/mapper/*.xml\"/>\n\t</bean>\n\t\n\t<!-- 事务管理 -->\t\n\t<bean id=\"txManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t</bean>\n\n\t<!-- 通知 -->\t\n\t<tx:advice id=\"txAdvice\" transaction-manager=\"txManager\">\n\t\t<tx:attributes>\n\t\t\t<tx:method name=\"find*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"get*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"view*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"insert*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"update*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"delete*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"*\" propagation=\"REQUIRED\" /><!-- 防止漏网之鱼 -->\n\t\t</tx:attributes>\n\t</tx:advice>\n\n\t<aop:config>\n\t\t<!-- 切点 管理所有Service的方法 -->\n\t\t<aop:pointcut expression=\"execution(* edu.fjnu.online.service.*.*(..))\" id=\"transactionPointCut\"/>\n\t\t<!-- 增强，进行事务控制 Advisor -->\n\t\t<aop:advisor advice-ref=\"txAdvice\" pointcut-ref=\"transactionPointCut\"/>\n\t</aop:config>\n</beans>\t\t\t"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Course.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.CourseMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"courseRM\" type=\"edu.fjnu.online.domain.Course\">\n\t\t<id property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"courseName\" column=\"coursename\"/>\n\t\t<result property=\"courseState\" column=\"coursestate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tinsert into t_course\n\t\t(coursename,coursestate)\n\t\tvalues\n\t\t(#{courseName},#{courseState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tupdate t_course\n\t\t<set>\n\t\t\t<if test=\"courseName!=null\">\n\t\t\t\tcoursename=#{courseName},\n\t\t\t</if>\n\t\t\t<if test=\"courseState!=null\">\n\t\t\t\tcoursestate=#{courseState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere courseid=#{courseId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Course\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere courseid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_course\n\t\twhere courseid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/ErrorBook.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.ErrorBookMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"errorRM\" type=\"edu.fjnu.online.domain.ErrorBook\">\n\t\t<id property=\"bookId\" column=\"bookid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"userAnswer\" column=\"uanswer\"/>\n\t\t<association property=\"question\" javaType=\"edu.fjnu.online.domain.Question\">\n\t\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t\t</association>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tinsert into t_errorbook\n\t\t(userid,courseid,gradeid,uanswer,questionid,typeid)\n\t\tvalues\n\t\t(#{userId},#{courseId},#{gradeId},#{userAnswer},#{question.questionId},#{question.typeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tupdate t_errorbook\n\t\t<set>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuanswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere bookid=#{bookId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.ErrorBook\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere bookid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_errorbook\n\t\twhere bookid=#{id}\n\t</delete>\n\t\n\t<!-- \n\t\tquesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid\n\t -->\n\t<select id=\"getBookInfo\"  resultMap=\"errorRM\" parameterType=\"map\">\n\t\tselect * from t_question a,t_errorbook b\n\t\twhere a.questionid = b.questionid\n\t\tand b.userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Factory.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.FactoryMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"factoryRM\" type=\"edu.fjnu.online.domain.Factory\">\n\t\t<id property=\"id\" column=\"FACTORY_ID\"/>\n\t\t<result property=\"fullName\" column=\"FULL_NAME\"/>\n\t\t<result property=\"factoryName\" column=\"FACTORY_NAME\"/>\n\t\t<result property=\"contractor\" column=\"CONTRACTOR\"/>\n\t\t<result property=\"phone\" column=\"PHONE\"/>\n\t\t<result property=\"mobile\" column=\"MOBILE\"/>\n\t\t<result property=\"fax\" column=\"FAX\"/>\n\t\t<result property=\"cnote\" column=\"CNOTE\"/>\n\t\t<result property=\"orderNo\" column=\"ORDER_NO\"/>\n\t\t<result property=\"state\" column=\"STATE\"/>\n\t</resultMap>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"edu.fjnu.online.domain.Factory\" resultMap=\"factoryRM\">\n\t\tselect * from factory_c\n\t\twhere 1=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Grade.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.GradeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"gradeRM\" type=\"edu.fjnu.online.domain.Grade\">\n\t\t<id property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"gradeName\" column=\"gradename\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tinsert into t_grade\n\t\t(gradename,courseid)\n\t\tvalues\n\t\t(#{gradeName},#{courseId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tupdate t_grade\n\t\t<set>\n\t\t\t<if test=\"gradeName!=null\">\n\t\t\t\tgradename=#{gradeName},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere gradeid=#{gradeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Grade\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere gradeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_grade\n\t\twhere gradeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Paper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.PaperMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"paperRM\" type=\"edu.fjnu.online.domain.Paper\">\n\t\t<id property=\"paperId\" column=\"paperid\"/>\n\t\t<result property=\"paperName\" column=\"papername\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"beginTime\" column=\"begintime\"/>\n\t\t<result property=\"endTime\" column=\"endtime\"/>\n\t\t<result property=\"allowTime\" column=\"allowtime\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"paperState\" column=\"paperstate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tinsert into t_paper\n\t\t(paperid,papername,courseid,gradeid,userid,questionid,begintime,endtime,allowtime,score,paperstate)\n\t\tvalues\n\t\t(#{paperId},#{paperName},#{courseId},#{gradeId},#{userId},#{questionId},#{beginTime},#{endTime},#{allowTime},#{score},#{paperState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"userId!=null\">\n\t\t\t\tuserid=#{userId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperstate!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperstate='0'\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperid=#{id} \n\t\tand paperstate='0'\n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_paper\n\t\twhere paperid=#{id}\n\t</delete>\n\t\n\t<!-- 查询学生已经考试过的试卷 -->\n\t<select id=\"getUserPaperById\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{id} \n\t\tand paperstate = '2'\n\t</select>\n\t<select id=\"getPaperDetail\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{userId}\n\t\tand paperid=#{paperId}\n\t</select>\n\t\n\t<update id=\"updateUserPaper\" parameterType=\"map\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperState!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t\t\tand userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"getUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate='0' \n\t\t\tand paperid not in(select paperid from t_paper where userid=#{userId})\n\t</select>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"qryUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate = '1' and userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Question.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.QuestionMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"questionRM\" type=\"edu.fjnu.online.domain.Question\">\n\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tinsert into t_question\n\t\t(quesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid)\n\t\tvalues\n\t\t(#{quesName},#{optionA},#{optionB},#{optionC},#{optionD},#{answer},#{userAnswer},#{courseId},#{typeId},#{difficulty},#{remark},#{answerDetail},#{gradeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tupdate t_question\n\t\t<set>\n\t\t\t<if test=\"quesName!=null\">\n\t\t\t\tquesname=#{quesName},\n\t\t\t</if>\n\t\t\t<if test=\"optionA!=null\">\n\t\t\t\toptiona=#{optionA},\n\t\t\t</if>\n\t\t\t<if test=\"optionB!=null\">\n\t\t\t\toptionb=#{optionB},\n\t\t\t</if>\n\t\t\t<if test=\"optionC!=null\">\n\t\t\t\toptionc=#{optionC},\n\t\t\t</if>\n\t\t\t<if test=\"optionD!=null\">\n\t\t\t\toptiond=#{optionD},\n\t\t\t</if>\n\t\t\t<if test=\"answer!=null\">\n\t\t\t\tanswer=#{answer},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuseranswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"typeId!=null\">\n\t\t\t\ttypeid=#{typeId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"difficulty!=null\">\n\t\t\t\tdifficulty=#{difficulty},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t\t<if test=\"answerDetail!=null\">\n\t\t\t\tanswerdetail=#{answerDetail},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere questionid=#{questionId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Question\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere questionid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_question\n\t\twhere questionid=#{id}\n\t</delete>\n\t\n\t<!-- 随机生成相应数量的题目 -->\n\t<select id=\"createPaper\" parameterType=\"map\" resultMap=\"questionRM\">\n\t\tselect * from t_question \n\t\t\twhere gradeid=#{gradeId}\n\t\t\tand typeid=#{typeId}\n\t\t\tand courseid=#{courseId}\n\t\t\tORDER BY RAND() LIMIT #{num} \n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/Type.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.TypeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"typeRM\" type=\"edu.fjnu.online.domain.Type\">\n\t\t<id property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"typeName\" column=\"typename\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tinsert into t_type\n\t\t(typename,score,remark)\n\t\tvalues\n\t\t(#{typeName},#{score},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tupdate t_type\n\t\t<set>\n\t\t\t<if test=\"typeName!=null\">\n\t\t\t\ttypename=#{typeName},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere typeid=#{typeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Type\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere typeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_type\n\t\twhere typeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/edu/fjnu/online/mapper/User.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.UserMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"userRM\" type=\"edu.fjnu.online.domain.User\">\n\t\t<id property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"userName\" column=\"username\"/>\n\t\t<result property=\"userPwd\" column=\"userpwd\"/>\n\t\t<result property=\"grade\" column=\"grade\"/>\n\t\t<result property=\"userType\" column=\"usertype\"/>\n\t\t<result property=\"userState\" column=\"userstate\"/>\n\t\t<result property=\"email\" column=\"email\"/>\n\t\t<result property=\"telephone\" column=\"telephone\"/>\n\t\t<result property=\"address\" column=\"address\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tinsert into t_user\n\t\t(userid,username,userpwd,grade,usertype,userstate,email,telephone,address,remark)\n\t\tvalues\n\t\t(#{userId},#{userName},#{userPwd},#{grade},#{userType},'0',#{email},#{telephone},#{address},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tupdate t_user\n\t\t<set>\n\t\t\t<if test=\"userName!=null\">\n\t\t\t\tusername=#{userName},\n\t\t\t</if>\n\t\t\t<if test=\"userPwd!=null\">\n\t\t\t\tuserpwd=#{userPwd},\n\t\t\t</if>\n\t\t\t<if test=\"userType!=null\">\n\t\t\t\tusertype=#{userType},\n\t\t\t</if>\n\t\t\t<if test=\"userState!=null\">\n\t\t\t\tuserstate=#{userState},\n\t\t\t</if>\n\t\t\t<if test=\"email!=null\">\n\t\t\t\temail=#{email},\n\t\t\t</if>\n\t\t\t<if test=\"telephone!=null\">\n\t\t\t\ttelephone=#{telephone},\n\t\t\t</if>\n\t\t\t<if test=\"address!=null\">\n\t\t\t\taddress=#{address},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询所有待审核记录 -->\n\t<select id=\"findPending\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userstate=0\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_user\n\t\twhere userid=#{id}\n\t</delete>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"getStu\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{userId}\n\t\tand userstate=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/jdbc.properties",
    "content": "jdbc.driverClassName=com.mysql.jdbc.Driver\njdbc.url=jdbc:mysql://localhost:3306/onlinetest?characterEncoding=utf-8\njdbc.username=root\njdbc.password=123456\n\nc3p0.pool.size.max=20\nc3p0.pool.size.min=5\nc3p0.pool.size.ini=3\nc3p0.pool.size.increment=2\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/springmvc-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\"\n\txmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\thttp://www.springframework.org/schema/mvc \n\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\thttp://www.springframework.org/schema/context \n\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\thttp://www.springframework.org/schema/aop \n\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\thttp://www.springframework.org/schema/tx \n\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\n\t<mvc:annotation-driven/>\n\t\n\t<!-- 扫描controller -->\n\t<context:component-scan base-package=\"edu.fjnu.online.controller\"/>\n\t<!-- 内部资源视图解析器 -->\n\t<bean id=\"jspInternalResourceViewResolver\" class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n\t\t<property name=\"prefix\" value=\"/WEB-INF/pages/\"/>\n\t\t<property name=\"suffix\" value=\"\"/>\n\t</bean>\n</beans>\t"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/classes/sqlMapConfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE configuration\n\tPUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n\t\"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n<configuration>\n\t<plugins>\n\t\t<!-- com.github.pagehelper为PageHelper类所在包名 -->\n\t\t<plugin interceptor=\"com.github.pagehelper.PageHelper\">\n\t\t\t<property name=\"dialect\" value=\"mysql\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，会将RowBounds第一个参数offset当成pageNum页码使用 -->\n\t\t\t<!-- 和startPage中的pageNum效果一样 -->\n\t\t\t<property name=\"offsetAsPageNum\" value=\"true\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，使用RowBounds分页会进行count查询 -->\n\t\t\t<property name=\"rowBoundsWithCount\" value=\"true\" />\n\t\t\t<!-- 设置为true时，如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->\n\t\t\t<!-- （相当于没有执行分页查询，但是返回结果仍然是Page类型） -->\n\t\t\t<property name=\"pageSizeZero\" value=\"true\" />\n\t\t\t<!-- 3.3.0版本可用 - 分页参数合理化，默认false禁用 -->\n\t\t\t<!-- 启用合理化时，如果pageNum<1会查询第一页，如果pageNum>pages会查询最后一页 -->\n\t\t\t<!-- 禁用合理化时，如果pageNum<1或pageNum>pages会返回空数据 -->\n\t\t\t<property name=\"reasonable\" value=\"false\" />\n\t\t\t<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->\n\t\t\t<!-- 增加了一个`params`参数来配置参数映射，用于从Map或ServletRequest中取值 -->\n\t\t\t<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->\n\t\t\t<!-- 不理解该含义的前提下，不要随便复制该配置 -->\n\t\t\t<property name=\"params\" value=\"pageNum=start;pageSize=limit;\" />\n\t\t\t<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->\n\t\t\t<property name=\"returnPageInfo\" value=\"check\" />\n\t\t</plugin>\n\t</plugins>\n\n</configuration>\t"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/course-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>课程管理</h2></div>\n<form action=\"${ctx}/deleteCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addType()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">课程编号</th>\n                <th class=\"name\">课程名称</th>\n                <th class=\"process\">课程状态</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"courseId\" value=\"${o.courseId}\"/></td>\n\t\t\t\t\t<td>${o.courseId}</td>\n\t\t\t\t\t<td>${o.courseName}</td>\n\t\t\t\t\t<td>${o.courseState}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/delCourse.action?courseId=${o.courseId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdCourse.action?courseId=${o.courseId}\" class=\"edit\">编辑</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='courseId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddCourse.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/course-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增课程</h2></div>\n<form action=\"${ctx}/addCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"courseName\" id=\"courseName\" maxlength=\"10\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addCourse()\">确定</a>\n    <a href=\"${ctx}/toCoursePage.action\" class=\"clear\"\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addCourse(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addCourse.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/course-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>更新课程</h2></div>\n<form action=\"${ctx}/updCourse.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程编号：</label>\n        <input type=\"text\" name=\"courseId\" id=\"courseId\" maxlength=\"10\" value=\"${course.courseId }\" readonly=\"readonly\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程名称：</label>\n        <input type=\"text\" name=\"courseName\" id=\"courseName\" maxlength=\"10\" value=\"${course.courseName }\"/>\n    </p>\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>课程状态：</label>\n        <input type=\"text\" name=\"courseState\" id=\"courseState\" maxlength=\"10\" value=\"${course.courseState }\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toCoursePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updCourse.action\"; \n\t$(\"form\").submit();\n}\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/grade-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>年级管理</h2></div>\n<form action=\"${ctx}/deleteGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addGrade()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteGrade()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">年级编号</th>\n                <th class=\"name\">年级名称</th>\n                <th class=\"process\">包含课程</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"gradeId\" value=\"${o.gradeId}\"/></td>\n\t\t\t\t\t<td>${o.gradeId}</td>\n\t\t\t\t\t<td>${o.gradeName}</td>\n\t\t\t\t\t<td>${o.courseId}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deleteGrade.action?gradeId=${o.gradeId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdGrade.action?gradeId=${o.gradeId}\" class=\"edit\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteGrade(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='gradeId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddGrade.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/grade-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增年级</h2></div>\n<form action=\"${ctx}/addGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级名称：</label>\n        <input type=\"text\" name=\"gradeName\" id=\"gradeName\" maxlength=\"10\"/>\n    </p>\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>包含课程：</label>\n    </p>\n   \t<c:forEach items=\"${dataList}\" var=\"o\">\n    \t<p class=\"short-input ue-clear\">\n    \t\t<label><span style= \"width:100px \"> &nbsp; </span></label>\n    \t\t<input type=\"checkbox\" name=\"courseId\" id=\"courseId\" value=\"${o.courseId}\"/>${o.courseName}\n    \t</p>\n\t</c:forEach>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addGrade()\">确定</a>\n    <a href=\"${ctx}/toGradePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addGrade.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/grade-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看年级信息</h2></div>\n<form action=\"${ctx}/addGrade.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级名称：</label>\n        <input type=\"text\" name=\"gradeName\" id=\"gradeName\" maxlength=\"10\" value=\"${grade.gradeName}\" readonly=\"readonly\"/>\n    </p>\n    \n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>包含课程：</label>\n    \t<input type=\"text\" name=\"courseId\" id=\"courseId\" readonly=\"readonly\" value=\"${grade.courseId}\"/>\n    </p>\n    \n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"${ctx}/toGradePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addGrade(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addGrade.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/index.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/jquery.dialog.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/index.css\" />\n\n<title>在线考试后台管理系统</title>\n</head>\n\n<body>\n<form name=\"icform\" method=\"post\"></form>\n<div id=\"container\">\n\t<div id=\"hd\">\n    \t<div class=\"hd-wrap ue-clear\">\n        \t<div class=\"top-light\"></div>\n             <h1 class=\"logo\"></h1> \n            <div class=\"login-info ue-clear\">\n                <div class=\"welcome ue-clear\"><span>欢迎您,</span><a href=\"javascript:;\" class=\"user-name\">${userName }</a></div>\n                <div class=\"login-msg ue-clear\">\n                    <a href=\"javascript:;\" class=\"msg-txt\">消息</a>\n                    <a href=\"javascript:;\" class=\"msg-num\">10</a>\n                </div>\n            </div>\n            <div class=\"toolbar ue-clear\">\n                <a href=\"javascript:;\" class=\"home-btn\">首页</a>\n                <a href=\"javascript:;\" class=\"quit-btn exit\"></a>\n            </div>\n        </div>\n    </div>\n    <div id=\"bd\">\n    \t<div class=\"wrap ue-clear\">\n        \t<div class=\"sidebar\">\n            \t<h2 class=\"sidebar-header\"><p>功能导航</p></h2>\n                <ul class=\"nav\">\n                    <li class=\"nav-info\">\n                    \t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>题库管理</span><i class=\"icon\"></i></a></div>\n                        <ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toQuestionPage.action','mframe');this.blur();\">试题管理</a></li>\n                            <li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toTypePage.action','mframe');this.blur();\">题型管理</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"konwledge\">\n\t\t\t\t\t\t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>用户管理</span><i class=\"icon\"></i></a></div>\n\t\t\t\t\t\t<ul class=\"subnav\">\n                        \t<li><a href=\"#\" onclick=\"formSubmit('${ctx}/admin/getAllUser.action','mframe');this.blur();\">信息管理</a></li>\n                            <li><a href=\"#\" onclick=\"formSubmit('${ctx}/admin/getFindPending.action','mframe');this.blur();\">身份审核</a></li>\n                        </ul>\n\t\t\t\t\t</li>\n                    <li class=\"agency\">\n\t\t\t\t\t\t<div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>基础管理</span><i class=\"icon\"></i></a></div>\n\t\t\t\t\t\t<ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toGradePage.action','mframe');this.blur();\">年级管理</a></li>\n                            <li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toCoursePage.action','mframe');this.blur();\">课程管理</a></li>\n                        </ul>\n\t\t\t\t\t</li>\n                    <li class=\"system\"><div class=\"nav-header\"><a href=\"javascript:;\" class=\"ue-clear\"><span>试卷管理</span><i class=\"icon\"></i></a></div>\n                    \t<ul class=\"subnav\">\n                        \t<li><a href=\"javascript:;\" onclick=\"formSubmit('${ctx}/toPaperPage.action','mframe');this.blur();\">试卷管理</a></li>\n                        </ul>\n                    </li>\n                </ul>\n            </div>\n            <div class=\"content\">\n            \t<iframe name=\"mframe\" id=\"mframe\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n            </div>\n        </div>\n    </div>\n    <div id=\"ft\" class=\"ue-clear\">\n    \t<div class=\"ft-left\">\n            <span>XXXXX</span>\n            <em>Office&nbsp;System</em>\n        </div>\n        <div class=\"ft-right\">\n            <span>Automation</span>\n            <em>V2.0XXXXX</em>\n        </div>\n    </div>\n</div>\n<div class=\"exitDialog\">\n\t<div class=\"dialog-content\">\n    \t<div class=\"ui-dialog-icon\"></div>\n        <div class=\"ui-dialog-text\">\n        \t<p class=\"dialog-content\">你确定要退出系统？</p>\n            <p class=\"tips\">如果是请点击“确定”，否则点“取消”</p>\n            \n            <div class=\"buttons\">\n                <input type=\"button\" class=\"button long2 ok\" value=\"确定\" id=\"btn_ok\"/>\n                <input type=\"button\" class=\"button long2 normal\" value=\"取消\" />\n            </div>\n        </div>\n        \n    </div>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/core.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.dialog.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/index.js\"></script>\n<script type=\"text/javascript\">\n\t/* 打开一个新页面：调用时不加第二个参数 add by tony */\n\tfunction formSubmit (url,sTarget){\n\t    document.forms[0].target = sTarget\n\t    document.forms[0].action = url;\n\t    document.forms[0].submit();\n\t    return true;\n\t}\n</script>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-deal.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>身份审核</h2></div>\n<form action=\"${ctx}/admin/failinfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">通过</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">注销</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">账号</th>\n                <th class=\"name\">昵称</th>\n                <th class=\"process\">账户类型</th>\n                <th class=\"process\">账户状态</th>\n                <th class=\"node\">邮箱</th>\n                <th class=\"time\">联系电话</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"userId\" value=\"${o.userId}\"/></td>\n\t\t\t\t\t<td>${o.userId}</td>\n\t\t\t\t\t<td>${o.userName}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userType==0}\">学生</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==1}\">老师</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==2}\">管理员</c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userState==0}\"><font color=\"blue\">待审核</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==1}\">在用</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==2}\"><font color=\"red\">注销</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==3}\"><font color=\"red\">审核不通过</font></c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.email}</td>\n\t\t\t\t\t<td>${o.telephone}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"del\" onclick=\"addUser()\">通过</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"edit\" onclick=\"deleteUser()\">注销</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"count\" onclick=\"showDetail('+${o.userId}+')\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\n//不通过审核,即注销用户信息\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='userId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n//通过审核\nfunction addUser(){\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/passinfo.action\"; \n\t$(\"form\").submit();\n}\n\nfunction showDetail(id){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toQryUser.action?userId=\"+id; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-det.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户信息查询</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    \n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq user.grade  }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/admin/getFindPending.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>信息管理</h2></div>\n<form action=\"${ctx}/admin/deleteUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">账号</th>\n                <th class=\"name\">昵称</th>\n                <th class=\"process\">账户类型</th>\n                <th class=\"process\">账户状态</th>\n                <th class=\"node\">邮箱</th>\n                <th class=\"time\">联系电话</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"userId\" value=\"${o.userId}\"/></td>\n\t\t\t\t\t<td>${o.userId}</td>\n\t\t\t\t\t<td>${o.userName}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userType==0}\">学生</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==1}\">老师</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userType==2}\">管理员</c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<c:if test=\"${o.userState==0}\"><font color=\"blue\">待审核</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==1}\"><B>在用</B></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==2}\"><font color=\"red\">注销</font></c:if>\n\t\t\t\t\t\t<c:if test=\"${o.userState==3}\"><font color=\"red\">审核不通过</font></c:if>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.email}</td>\n\t\t\t\t\t<td>${o.telephone}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"edit\">编辑</a>\n\t\t\t\t\t\t<a href=\"javascript:;\" class=\"count\" onclick=\"showDetail('+${o.userId}+')\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='userId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction showDetail(id){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toQryUser.action?userId=\"+id; \n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/toAddUser.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户信息查询</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    \n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq user.grade  }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/admin/getAllUser.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>用户注册</h2></div>\n<form action=\"${ctx}/admin/addUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" placeholder=\"登录账号\" name=\"userId\" id=\"userId\" onblur=\"checkUserId()\" value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" maxlength=\"6\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>密码：</label>\n        <input type=\"password\" placeholder=\"登录密码\" name=\"userPwd\" id=\"userPwd\"/>\n    </p>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"grade\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"2\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onblur=\"checkEmail()\" id=\"email\" name=\"email\"/>\n        <span style=\"color: red\" id=\"emailInfo\"></span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addUser()\">确定</a>\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"clearAll()\">清空内容</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar userId = $(\"#userId\").val();\n\tvar tipInfo = $(\"#tipInfo\").val();\n\tif(userId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入账号\");\n\t\t$(\"#userId\").focus();\n\t\treturn;\n\t}\n \t$.ajax({\n        type: \"post\",\n        url: \"${ctx}/admin/userRegist.action\",\n        data: {userId:userId},\n        dataType: \"json\",\n        success: function(data){\n        \t$(\"#tipInfo\").html(data.errorInfo);\n        }\n    });\n}\n\nfunction checkEmail(){\n\tvar email = $(\"#email\").val();\n\tif(email == \"\"){\n\t\t$(\"#emailInfo\").html(\"请输入邮箱\");\n\t\treturn;\n\t}\n\tvar req = /^(\\w-*\\.*)+@(\\w-?)+(\\.\\w{2,})+$/;\n\tif(!req.test(email)){\n\t\t$(\"#emailInfo\").html(\"邮箱格式不正确\");\n\t\t$(\"#email\").focus();\n\t\treturn;\n\t}\n}\n\n//注册\nfunction addUser(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/admin/addUser.action\"; \n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/info-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>修改用户信息</h2></div>\n<form action=\"${ctx}/admin/updateUser.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号：</label>\n        <input type=\"text\" name=\"userId\" id=\"userId\" value=\"${user.userId }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>昵称：</label>\n        <input type=\"text\" placeholder=\"用户昵称\" name=\"userName\" id=\"userName\" value=\"${user.userName }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n        <input type=\"text\" placeholder=\"请输入年级\" name=\"grade\" id=\"grade\" value=\"${user.grade }\"/>\n    </p>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>账号类型：</label>\n    \t<input name=\"userType\" type=\"radio\" value=\"0\" checked=\"checked\"/>学生\n    \t<input name=\"userType\" type=\"radio\" value=\"1\"/>老师\n    \t<input name=\"userType\" type=\"radio\" value=\"0\"/>管理员\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>邮箱：</label>\n        <input type=\"text\" onfocus=\"checkEmail()\" id=\"email\" name=\"email\" value=\"${user.email }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>联系电话：</label>\n        <input type=\"text\" onfocus=\"checkPhone()\" id=\"telephone\" name=\"telephone\" value=\"${user.telephone }\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>地址：</label>\n        <input type=\"text\" id=\"address\" name=\"address\" value=\"${user.address }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea placeholder=\"请输入内容\" id=\"remark\" name=\"remark\">${user.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addUser()\">确定</a>\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"clearAll()\">清空内容</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkPhone(){\n\t\n}\n\n//注册\nfunction addUser(){\n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/login.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n\t<link rel=\"stylesheet\" href=\"${ctx}/css/login.css\" />\n\t<title>在线考试后台管理系统</title>\n</head>\n<body>\n\t<div id=\"container\">\n\t\t<div id=\"bd\">\n\t\t\t<div class=\"login\">\n\t\t\t\t<form action=\"userLogin.action\" method=\"post\">\n            \t<div class=\"login-top\"><!-- <h1 class=\"logo\"></h1> --></div>\n                <div class=\"login-input\">\n                \t<p class=\"user ue-clear\">\n                    \t<label>账&nbsp;&nbsp;&nbsp;号</label>\n                        <input type=\"text\" id=\"userId\" name=\"userId\"/>\n                    </p>\n                    <p class=\"password ue-clear\">\n                    \t<label>密&nbsp;&nbsp;&nbsp;码</label>\n                        <input type=\"password\" id=\"userPwd\" name=\"userPwd\"/>\n                    </p>\n                    <div style=\"color: red\" id=\"tipInfo\" align=\"justify\">${message }</div>\n                </div>\n                <div class=\"login-btn ue-clear\">\n                \t<a class=\"btn\" onclick=\"userLogin()\">登录</a>\n                    <div class=\"remember ue-clear\">\n                    \t<input type=\"checkbox\" id=\"remember\" />\n                        <em></em>\n                        <label for=\"remember\">记住密码</label>\n                    </div>\n                </div>\n                </form>\n            </div>\n\t\t</div>\n\t</div>\n    <div id=\"ft\">CopyRight&nbsp;2014&nbsp;&nbsp;<!-- 版权所有&nbsp;&nbsp;uimaker.com专注于ui设计&nbsp;&nbsp;苏ICP备09003079号 --></div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\">\nvar height = $(window).height();\n$(\"#container\").height(height);\n$(\"#bd\").css(\"padding-top\",height/2 - $(\"#bd\").height()/2);\n\n$(window).resize(function(){\n\tvar height = $(window).height();\n\t$(\"#bd\").css(\"padding-top\",$(window).height()/2 - $(\"#bd\").height()/2);\n\t$(\"#container\").height(height);\n\t\n});\n\n$('#remember').focus(function(){\n   $(this).blur();\n});\n\n$('#remember').click(function(e) {\n\tcheckRemember($(this));\n});\n\nfunction checkRemember($this){\n\tif(!-[1,]){\n\t\t if($this.prop(\"checked\")){\n\t\t\t$this.parent().addClass('checked');\n\t\t}else{\n\t\t\t$this.parent().removeClass('checked');\n\t\t}\n\t}\n}\n\nfunction userLogin(){\n\tvar userId = $(\"#userId\").val();\n\tvar userPwd = $(\"#userPwd\").val();\n\tif(userId == \"\" || userPwd == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入完整的账号和密码！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/paper-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>试卷管理</h2></div>\n<form action=\"${ctx}/deletePaper.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">试卷编号</th>\n                <th class=\"operate\">试卷名称</th>\n                <th class=\"process\">年级</th>\n                <th class=\"process\">对应科目</th>\n                <th class=\"node\">允许时长</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"paperId\" value=\"${o.paperId}\"/></td>\n\t\t\t\t\t<td>${o.paperId}</td>\n\t\t\t\t\t<td><font color=\"blue\">${o.paperName}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.gradeId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.courseId}</font></td>\n\t\t\t\t\t<td>${o.allowTime}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deletePaper.action?paperId=${o.paperId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/qryPaper.action?paperId=${o.paperId}\" class=\"del\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='paperId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddPaperPage.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/paper-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看试卷</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>试卷编号：</label><span style=\"color:blue\" size=\"3\">${paper.paperId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>试卷名称：</label><span style=\"color:blue\" size=\"3\">${paper.paperName }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>允许时长：</label><span style=\"color:blue\" size=\"3\">${paper.allowTime }分钟</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>对应科目：</label><span style=\"color:blue\" size=\"3\">${paper.courseId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>题目编号：</label><span style=\"color:blue\" size=\"3\">${paper.questionId }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选择题数量：</label><span style=\"color:blue\" size=\"3\">${paper.score }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>填空题数量：</label><span style=\"color:blue\" size=\"3\">${paper.beginTime }</span>\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>简答题数量：</label><span style=\"color:blue\" size=\"3\">${paper.endTime }</span>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"${ctx}/toPaperPage.action\" class=\"confirm\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addPaper.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/paper-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增试卷</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${course}\" var=\"cs\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${cs.courseId}\" checked=\"checked\"/>${cs.courseName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"short-input ue-clear\">\n    \t<label>试卷编号：</label>\n        <input type=\"text\" placeholder=\"请输入试卷编号\" name=\"paperId\" id=\"paperId\" />\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>试卷名称：</label>\n        <input type=\"text\" placeholder=\"请输入试卷名称\" name=\"paperName\" id=\"paperName\" />\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>允许时长：</label>\n        <input type=\"text\" placeholder=\"请输入允许时长\" name=\"allowTime\" id=\"allowTime\" />分钟\n    </p>\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>选择题数量：</label>\n        <input type=\"text\" placeholder=\"选择题\" name=\"selectNum\" id=\"selectNum\"/>\n    </p>\n<!--     <p class=\"short-input ue-clear\" id=\"pb\">\n    \t<label><span style=\"color:red\"></span></label>\n    \t<label>简单：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n        <label>中等：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n        <label>较难：</label>\n        <input type=\"text\" name=\"selectNum\" id=\"selectNum\"/>\n    </p> -->\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>填空题数量：</label>\n        <input type=\"text\" name=\"inputNum\" id=\"inputNum\"/>\n    </p>\n    <p class=\"short-input ue-clear\" id=\"pa\">\n    \t<label>简答数量：</label>\n        <input type=\"text\" name=\"descNum\" id=\"descNum\"/>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addQuestion()\">确定</a>\n    <a href=\"${ctx}/toPaperPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addPaper.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/question-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目管理</h2></div>\n<form action=\"${ctx}/deleteQuestion.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addUser()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">题目编号</th>\n                <th class=\"operate\">题目名称</th>\n                <th class=\"process\">对应科目</th>\n                <th class=\"process\">题型</th>\n                <th class=\"node\">难度</th>\n                <th class=\"time\">备注</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"questionId\" value=\"${o.questionId}\"/></td>\n\t\t\t\t\t<td>${o.questionId}</td>\n\t\t\t\t\t<td>${o.quesName}</td>\n\t\t\t\t\t<td><font color=\"blue\">${o.courseId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">${o.typeId}</font></td>\n\t\t\t\t\t<td><font color=\"blue\">\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==0}\">简单</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==1}\">中等</c:if>\n\t\t\t\t\t\t<c:if test=\"${o.difficulty==2}\">较难</c:if></font>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>${o.remark}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/deleteQuestion.action?questionId=${o.questionId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdQuestion.action?questionId=${o.questionId}\" class=\"del\">编辑</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toQryQuestion.action?questionId=${o.questionId}\" class=\"del\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='questionId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addUser(){\n\t//  以下三行，随便哪一行都行         \n/*\t$(\"#myform\").action=\"${ctx}/admin/toAddUser.action\";\n \tdocument.myform.action=‘new_url’;*/\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddQuestion.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/question-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目详细</h2></div>\n<div class=\"main\">\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>问题编号：</label>${question.questionId}\n    </p>\n\t<p class=\"short-input ue-clear newstyle\">\n    \t<label>年级：</label>${question.gradeId}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>科目：</label>${question.courseId}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>难度：</label>${question.difficulty}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>题型：</label>${question.typeId}\n    </p>\n    <p class=\"long-input ue-clear newstyle\">\n    \t<label>问题名称：</label>${question.quesName}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项A：</label>${question.optionA}\n    </p>   \n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项B：</label>${question.optionB}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项C：</label>${question.optionC}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>选项D：</label>${question.optionD}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>答案：</label>${question.answer}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>详解：</label>${question.remark}\n    </p>\n    <p class=\"short-input ue-clear newstyle\">\n    \t<label>备注：</label>${question.answerDetail}\n    </p>\n</div>\n<div class=\"btn ue-clear\">\n\t<a href=\"${ctx}/toQuestionPage.action\" class=\"confirm\" onclick=\"addQuestion()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/question-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目录入</h2></div>\n<form action=\"${ctx}/addQuesInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${grade}\" var=\"cs\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${cs.gradeId}\" checked=\"checked\"/>${cs.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${course}\" var=\"cs\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${cs.courseId}\" checked=\"checked\"/>${cs.courseName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>难度：</label>\n    \t<input name=\"difficulty\" type=\"radio\" value=\"0\" checked=\"checked\"/>简单\n    \t<input name=\"difficulty\" type=\"radio\" value=\"1\"/>中等\n    \t<input name=\"difficulty\" type=\"radio\" value=\"2\"/>较难\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>题型：</label>\n    \t<c:forEach items=\"${type}\" var=\"cs\">\n\t\t\t<input name=\"typeId\" type=\"radio\" value=\"${cs.typeId}\" checked=\"checked\" onclick=\"typeOnclick()\"/>${cs.typeName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"long-input ue-clear\">\n    \t<label>名称：</label>\n        <input type=\"text\" placeholder=\"请输入问题名称\" name=\"quesName\" id=\"quesName\" />\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pa\">\n    \t<label>选项A：</label>\n        <input type=\"text\" placeholder=\"选项A\" name=\"optionA\" id=\"optionA\" value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pb\">\n    \t<label>选项B：</label>\n        <input type=\"text\" placeholder=\"选项B\" name=\"optionB\" id=\"optionB\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pc\">\n    \t<label>选项C：</label>\n        <input type=\"text\" placeholder=\"选项C\" name=\"optionC\" id=\"optionC\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pd\">\n    \t<label>选项D：</label>\n        <input type=\"text\" placeholder=\"选项D\" name=\"optionD\" id=\"optionD\"  value=\"${userId }\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>答案：</label>\n        <input type=\"text\" placeholder=\"请输入答案\" id=\"answer\" name=\"answer\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>详解：</label>\n        <input type=\"text\"id=\"answerDetail\" placeholder=\"请输入详解\" name=\"answerDetail\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>备注：</label>\n        <input type=\"text\" id=\"remark\" name=\"remark\" placeholder=\"请输入备注信息\"/>\n    </p>\n\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addQuestion()\">确定</a>\n    <a href=\"${ctx}/toQuestionPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction addQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addQuesInfo.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/question-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题目更新</h2></div>\n<form action=\"${ctx}/updQuestion.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t<p class=\"short-input ue-clear\">\n    \t<label>问题编号：</label>\n        <input type=\"text\" name=\"questionId\" id=\"questionId\" value=\"${question.questionId}\" readonly=\"readonly\"/>\n    </p>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>年级：</label>\n    \t<c:forEach items=\"${gradeList}\" var=\"grade\">\n\t\t\t<input name=\"gradeId\" type=\"radio\" value=\"${grade.gradeId}\" \n\t\t\t\t<c:if test=\"${grade.gradeId eq question.gradeId }\">checked</c:if> />${grade.gradeName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>科目：</label>\n    \t<c:forEach items=\"${courseList}\" var=\"course\">\n\t\t\t<input name=\"courseId\" type=\"radio\" value=\"${course.courseId}\" \n\t\t\t\t<c:if test=\"${course.courseId eq question.courseId }\">checked</c:if>/>${course.courseName}\n\t\t</c:forEach>\n    </div>\n    <div class=\"short-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>难度：</label>\n    \t<input name=\"difficulty\" type=\"radio\" value=\"0\" checked=\"checked\"/>简单\n    \t<input name=\"difficulty\" type=\"radio\" value=\"1\"/>中等\n    \t<input name=\"difficulty\" type=\"radio\" value=\"2\"/>较难\n    </div>\n    <div class=\"long-input select ue-clear\">\n    \t<label><span style=\"color:red\">*</span>题型：</label>\n    \t<c:forEach items=\"${typeList}\" var=\"typeInfo\">\n\t\t\t<input id=\"typeId\" name=\"typeId\" type=\"radio\" onclick=\"typeOnclick()\" value=\"${typeInfo.typeId}\"\n\t\t\t\t<c:if test=\"${typeInfo.typeId eq question.typeId }\">checked</c:if>/>${typeInfo.typeName}\n\t\t</c:forEach>\n    </div>\n    <p class=\"long-input ue-clear\">\n    \t<label>名称：</label>\n        <input type=\"text\" placeholder=\"请输入问题名称\" name=\"quesName\" id=\"quesName\" value=\"${question.quesName}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pa\">\n    \t<label>选项A：</label>\n        <input type=\"text\" placeholder=\"选项A\" name=\"optionA\" id=\"optionA\" value=\"${question.optionA}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pb\">\n    \t<label>选项B：</label>\n        <input type=\"text\" placeholder=\"选项B\" name=\"optionB\" id=\"optionB\"  value=\"${question.optionB}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pc\">\n    \t<label>选项C：</label>\n        <input type=\"text\" placeholder=\"选项C\" name=\"optionC\" id=\"optionC\"  value=\"${question.optionC}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\" id=\"pd\">\n    \t<label>选项D：</label>\n        <input type=\"text\" placeholder=\"选项D\" name=\"optionD\" id=\"optionD\"  value=\"${question.optionD}\"/>\n        <span style=\"color: red\" id=\"tipInfo\">${message }</span>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>答案：</label>\n        <input type=\"text\" placeholder=\"请输入答案\" id=\"answer\" name=\"answer\" value=\"${question.answer}\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>详解：</label>\n        <input type=\"text\"id=\"answerDetail\" placeholder=\"请输入详解\" name=\"answerDetail\" value=\"${question.answerDetail}\"/>\n    </p>\n    <p class=\"long-input ue-clear\">\n    \t<label>备注：</label>\n        <input type=\"text\" id=\"remark\" name=\"remark\" placeholder=\"请输入备注信息\" value=\"${question.remark}\"/>\n    </p>\n\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"updQuestion()\">更新</a>\n    <a href=\"${ctx}/toQuestionPage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\nfunction checkUserId(){\n\tvar questionId = $(\"#questionId\").val();\n\tif(questionId == \"\"){\n\t\t$(\"#tipInfo\").html(\"请输入题目名称\");\n\t\t$(\"#questionId\").focus();\n\t\treturn;\n\t}else{\n\t\t$(\"#tipInfo\").html(\"\");\n\t}\n}\n\n//注册\nfunction updQuestion(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updQuestion.action\"; \n\t$(\"form\").submit();\n}\n\nfunction typeOnclick(){\n\tvar typeId = $(\"input[name='typeId']:checked\").val();\n\tif(typeId == \"1\" || typeId == \"2\"){//选择题就显示\n\t\tshowOp();\n\t}else{\n\t\thideOp();\n\t}\n}\n\n//隐藏选择题选项\nfunction hideOp(){\n\t$(\"#pa\").hide();\n\t$(\"#pb\").hide();\n\t$(\"#pc\").hide();\n\t$(\"#pd\").hide();\n}\n\n//显示选择题选项\nfunction showOp(){\n\t$(\"#pa\").show();\n\t$(\"#pb\").show();\n\t$(\"#pc\").show();\n\t$(\"#pd\").show();\n}\n\n//情况所有\nfunction clearAll(){\n\talert(\"清空所有内容\");\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/type-info.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题型详情</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"returnList()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addType.action\"; \n\t$(\"form\").submit();\n}\n\n//情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/type-mgt.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-mgt.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/WdatePicker.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>题型管理</h2></div>\n<form action=\"${ctx}/deleteType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"table-operate ue-clear\">\n\t<a href=\"#\" class=\"add\" onclick=\"addType()\">添加</a>\n    <a href=\"javascript:;\" class=\"del\" onclick=\"deleteUser()\">删除</a>\n</div>\n<div class=\"table-box\">\n\t<table border=\"1\" cellspacing=\"1\">\n    \t<thead>\n        \t<tr>\n        \t\t<th class=\"num\"></th>\n        \t\t<th class=\"name\">编号</th>\n                <th class=\"name\">类型名称</th>\n                <th class=\"process\">分值</th>\n                <th class=\"process\">备注</th>\n                <th class=\"operate\">操作</th>\n            </tr>\n        </thead>\n        <tbody align=\"center\">\n        \t<c:forEach items=\"${dataList}\" var=\"o\">\n\t\t\t\t<tr align=\"center\">\n\t\t\t\t\t<td><input type=\"checkbox\" name=\"typeId\" value=\"${o.typeId}\"/></td>\n\t\t\t\t\t<td>${o.typeId}</td>\n\t\t\t\t\t<td>${o.typeName}</td>\n\t\t\t\t\t<td>${o.score}</td>\n\t\t\t\t\t<td>${o.remark}</td>\n\t\t\t\t\t<td class=\"operate\">\n\t\t\t\t\t\t<a href=\"${ctx}/delType.action?typeId=${o.typeId}\" class=\"del\">删除</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toUpdType.action?typeId=${o.typeId}\" class=\"edit\">编辑</a>\n\t\t\t\t\t\t<a href=\"${ctx}/toQryType.action?typeId=${o.typeId}\" class=\"count\">查看</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n        </tbody>\n    </table>\n</div>\n<div class=\"pagination ue-clear\"></div>\n</form>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.pagination.js\"></script>\n<script type=\"text/javascript\">\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").hide();\n\t$(this).siblings($(\".select-list\")).show();\n\treturn false;\n})\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(this).parent($(\".select-list\")).siblings($(\".select-title\")).find(\"span\").text(txt);\n})\n\n$('.pagination').pagination(100,{\n\tcallback: function(page){\n\t\talert(page);\t\n\t},\n\tdisplay_msg: true,\n\tsetPageNo: true\n});\n\nfunction deleteUser(){\n\tvar ids = \"\";\n\t$(\"input:checkbox[name='typeId']:checked\").each(function() {\n\t\tids += $(this).val() + \",\";\n    });\n\t//判断最后一个字符是否为逗号，若是截取\n\tvar id = ids.substring(ids.length -1, ids.length);\n\tif(id == \",\"){\n\t\tids = ids.substring(0, ids.length-1);\n\t}\n\tif(ids == \"\"){\n\t\talert(\"请选择要删除的记录！\");\n\t\treturn;\n\t}\n\t$(\"form\").submit();\n}\n\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toAddType.action\"; \n\t$(\"form\").submit();\n}\n\n$(\"tbody\").find(\"tr:odd\").css(\"backgroundColor\",\"#eff6fa\");\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/type-qry.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>查看题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\" value=\"${type.typeName }\" disabled=\"disabled\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\" value=\"${type.score }\" disabled=\"disabled\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\" disabled=\"disabled\">${type.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n    <a href=\"javascript:;\" class=\"clear\" onclick=\"returnList()\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n}\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/type-reg.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>新增题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\"></textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toTypePage.action\" class=\"clear\"\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addType.action\"; \n\t$(\"form\").submit();\n}\n\n/* //情况所有\nfunction returnList(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/toTypePage.action\"; \n\t$(\"form\").submit();\n} */\n\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/admin/type-upd.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta charset=\"utf-8\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/base.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/info-reg.css\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/jquery.searchableSelect.css\" />\n<title>移动办公自动化系统</title>\n</head>\n\n<body>\n<div class=\"title\"><h2>更新题型</h2></div>\n<form action=\"${ctx}/addType.action\" method=\"post\" name=\"myform\" id=\"myform\">\n<div class=\"main\">\n\t <input type=\"hidden\" name=\"typeId\" id=\"typeId\" maxlength=\"10\" value=\"${type.typeId }\"/>\n    <p class=\"short-input ue-clear\">\n    \t<label><span style=\"color:red\">*</span>名称：</label>\n        <input type=\"text\" name=\"typeName\" id=\"typeName\" maxlength=\"10\" value=\"${type.typeName }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>分值：</label>\n        <input type=\"text\" id=\"score\" name=\"score\" value=\"${type.score }\"/>\n    </p>\n    <p class=\"short-input ue-clear\">\n    \t<label>备注：</label>\n        <textarea id=\"remark\" name=\"remark\">${type.remark }</textarea>\n    </p>\n</div>\n</form>\n<div class=\"btn ue-clear\">\n\t<a href=\"javascript:;\" class=\"confirm\" onclick=\"addType()\">确定</a>\n    <a href=\"${ctx}/toTypePage.action\" class=\"clear\">返回</a>\n</div>\n</body>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/jquery.searchableSelect.js\"></script>\n<script type=\"text/javascript\">\n$(function(){\n\t$(\"#grade\").searchableSelect();\n});\n$(\".select-title\").on(\"click\",function(){\n\t$(\".select-list\").toggle();\n\treturn false;\n});\n$(\".select-list\").on(\"click\",\"li\",function(){\n\tvar txt = $(this).text();\n\t$(\".select-title\").find(\"span\").text(txt);\n});\n//注册\nfunction addType(){\n\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updType.action\"; \n\t$(\"form\").submit();\n}\nshowRemind('input[type=text], textarea','placeholder');\n</script>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/base.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/baseinfo/left.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../baselist.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>\n</head>\n \n<body id=\"left_frame\">\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n \n \n<!-- begin1  -->\n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n        <div class=\"panel\">\n        <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/document_into.png\" /></div>\n        <div class=\"panel-header\">\n        <div class=\"panel-title\">基础代码管理</div>\n        <div class=\"panel-content\">\n\t\t\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"syscode/jSysCode.jsp\" target=\"main\" id=\"aa_1\" onclick=\"linkHighlighted(this)\">系统代码</a>\n\t\t\t\t\t</li>\t\t\t\t\t\n\t\t\t\t\t<li><a href=\"${ctx}/basicinfo/factory/list.action\" onclick=\"linkHighlighted(this)\" target=\"main\" id=\"aa_1\">厂家信息</a></li>\n\t\t\t</ul>\n        </div>\n        </div>\n    </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>  \n</div>\t  \n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/baseinfo/main.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title>模块介绍</title>\n  \t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/main.css\" media=\"all\"/>\n</head>\n\n<body>\n<form>\n<div class=\"textbox\"></div>\n\n\t<div class=\"modelDiv\">\n\n        <table class=\"modelTable\" cellspacing=\"1\">\n        \t<tr>\n        \t\t<td colspan=\"2\" class=\"modelTitle\">货运模块介绍</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">购销合同</td>\n        \t\t<td class=\"model_intro_right\">客户签单后，公司向厂家下达购销合同，包括货物的具体要求和交期。合同按不同厂家打印购销合同单，附件单独打印，由公司驻当地销售人员分发到各工厂。<br>\n\t\t\t\t归档：标识彻底完成的项目，方便统计。在报运时也不能在选这些合同。<br>\n\t\t\t\t</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">出货表</td>\n        \t\t<td class=\"model_intro_right\">根据合同和指定的船期月份，统计当月的出货情况。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">出口报运单</td>\n        \t\t<td class=\"model_intro_right\">根据购销合同制定出口商品报运单。报运时可以将多个购销合同形成一单报运；也可以只走部分货物。<br>\n        \t\t分批走货：合同可以多个一起报运; 而一个合同可以分多次走货; 根据合同和合同货物的走货状态可以查看合同的走货情况。\n        \t\t<!-- 修改走货状态：1)合同新增货物、修改货物 2)报运货物修改、删除货物、增补货物、删除报运 -->\n        \t\t</td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">HOME装箱单</td>\n        \t\t<td class=\"model_intro_right\">根据出口报运单制定HOME装箱单，先制作HOME装箱单给客户看，客人同意，则直接制定相应装箱单；如有调整，则重新复制修改出口报运单，可能拆成多个报运。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">装箱单</td>\n        \t\t<td class=\"model_intro_right\">根据出口报运单制定装箱单，填写发票号、发票时间，以及客人等相关信息。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">委托书</td>\n        \t\t<td class=\"model_intro_right\">根据装箱制定海运或空运委托书。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\">发票</td>\n        \t\t<td class=\"model_intro_right\">根据装箱制定发票。<br></td>\n        \t</tr>\n        \t<tr>\n        \t\t<td class=\"subModelTitle\" nowrap>财务出口报运单</td>\n        \t\t<td class=\"model_intro_right\">根据报运制定财务出口报运单。<br></td>\n        \t</tr> \t\n\t\t\t\n\t\t\t<tfoot>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\" class=\"tableFooter\"></td>\n\t\t\t\t</tr>\n\t\t\t</tfoot>\n        </table>\n \n\t</div>\n</form>\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/baselist.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"base.jsp\"%>\n\n \t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/extreme/extremecomponents.css\" />\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/extreme/extremesite.css\" />"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/bases.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/base.css\" media=\"all\"/>\n<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/css/login.css\" media=\"all\"/>\n\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/jquery.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/jquery-1.10.1.js\"></script>\n<script type=\"text/javascript\" language=\"javascript\" src=\"${ctx}/js/WdatePicker.js\"></script>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/home/fmain.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<html>\n<head>\n<title>陕西杰信商务综合管理平台</title>\n</head>\n<frameset rows=\"125,*\" name=\"topFrameset\" border=\"0\">\n\t<frame name=\"top_frame\" scrolling=\"no\"  target=\"middleFrameSet\" src=\"title.action\">\t\n\t<frameset cols=\"202,*\" height=\"100%\" name=\"middle\" frameborder=\"no\" border=\"0\" framespacing=\"0\">\n\t\t<frame name=\"leftFrame\" class=\"leftFrame\" target=\"main\" scrolling=\"no\" src=\"left.action\" />\n\t\t<frame name=\"main\" class=\"rightFrame\" src=\"main.action\" />\n\t</frameset>\n</frameset>\n\n<noframes>\n<body>\n    <p>此网页使用了框架，但您的浏览器不支持框架。</p>\n</body>\n</noframes>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/home/left.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n \n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/ajax/setFastMenu.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/pngfix_map.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/skin/default/js/toggle.js\"></script>\n \n\t\n    <script language=\"javascript\">\n    \t$().ready(function(){\n\t\t\t$(fastMenu).hide();\n\t\t\t//document.getElementById('aa_3').click();\t//默认打开我的留言板页面\n    \t});\n    \t\n    \tfunction showMenu( who ){\n    \t\tif(who==\"fastMenu\"){\n    \t\t\t$(fastMenu).show();\n    \t\t\t$(customerMenu).hide();\n    \t\t}else if(who==\"customerMenu\"){\n    \t\t\t$(customerMenu).show();\n    \t\t\t$(fastMenu).hide();\n    \t\t}\n    \t}\n    </script>\n \n    \n</head>\n \n<body id=\"left_frame\">\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n \n \n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n\t   <div class=\"panel\">\n\t       <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/user2.png\" /></div>\n\t       <div class=\"panel-header\">\n\t        <div class=\"panel-title\">个人工作台</div>\n\t        <div class=\"panel-content\">\n\t\t\t\t<ul>\n\t\t\t\t\t\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"olmsgList.jsp\" target=\"main\" id=\"aa_3\" onclick=\"linkHighlighted(this)\">我的留言板</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#\" onclick=\"linkHighlighted(this)\" id=\"aa_2\">系统使用反馈</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\n \n\t\t\t\t</ul>\n\t        </div>\n\t        \n\t       </div>\n\t   </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>\n</div>\n \n \n \n \n \n<div id=\"sidebar\" class=\"sidebar\">\t\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n \t    <div class=\"panel\">\n\t        <div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/cubes.png\" /></div>\n\t        <div class=\"panel-header\">\n\t\t    \t<div class=\"panel-title\">我的常用功能</div>\n\t\t\t\t\t<div style=\"margin-top:5px;\"></div>\n\t\t\t\t\t<!-- 以上为永久固定栏目，以下为活动栏目 -->\n\t        <div style=\"border-bottom:1px dotted #cee1df;\"> \n\t         切换:<a href=\"#\" onmousemove=\"javascript:showMenu('fastMenu');\">快捷菜单</a>\n\t        /\n\t        <a href=\"#\" onmousemove=\"javascript:showMenu('customerMenu');\">自定义菜单</a>\n\t        </div>\n\t\t        \t<div id=\"fastMenu\">\n\t\t        \t<div class=\"panel-content\"></div><a href=\"#\" class=\"DelFastMenu\"><font color=\"gray\">清除常用功能列表</font></a>\n\t\t        \t</div>\n\t\t        \t\n\t\t        \t<div id=\"customerMenu\">\n\t\t        \t<div class=\"FastMenu\"><img src=\"${ctx}/skin/default/images/notice.gif\" style=\"margin-right:5px;\" border=\"0\" /><font color=\"gray\">您还没定义您的菜单</font></div>\n\t\t        \t</div>\n\t        </div>\n\t    </div>\n\t <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>    \n</div>\n \n \n<!-- begin1  -->\n<div id=\"sidebar\" class=\"sidebar\">\n\t<div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_t_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_t_r\"></div>\n\t</div>\n    <div class=\"panel\">\n    \t<div class=\"panel_icon\"><img src=\"${ctx}/skin/default/images/icon/businessman2.png\" /></div>\n        <div class=\"panel-header\">\n        <div class=\"panel-title\">\n\t\t用户设定\n        </div>\n        \n        <div class=\"panel-content\">\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\" id=\"aa_2\" onclick=\"linkHighlighted(this)\">个人信息修改</a>\n\t\t\t\t</li>\t\t\t\t\t\t\n\t\t\t</ul>\n        </div>\n    </div>\n    </div>\n    <div class=\"sidebar_t\">\n\t\t<div class=\"sidebar_b_l\"></div>\n\t\t<div class=\"sidebar_t_c\"></div>\n\t\t<div class=\"sidebar_b_r\"></div>\n\t</div>\n</div>\n<!-- end1 -->\n \n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/home/olmsgList.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<html>\n<head>\n\t<title></title>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n<script type=\"text/javascript\" src=\"/components/jquery-ui/jquery-1.2.6.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script> \n<style> \n\t.curbody{ CURSOR: url(${ctx}/images/olmsg/shubiao.ani);background:url(${ctx}/images/olmsg/pic738x571.jpg); }\n\t.msgcontent{ width:218px;overflow:hidden;word-break:break-all;padding:10px;font-size:14px;color:#339966;font-family:Tahoma;line-height:180%; }\n\t.msgcontent p{ text-indent:0px;}\n\t.msgcontent ul( margin:0px;}\n\t.msgbackcontent{ width:218px;overflow:hidden;word-break:break-all;padding:10px;font-size:14px;color:#339966;font-family:Tahoma;line-height:180%; }\n\t.msgbackcontent p{ text-indent:0px;}\n\t.msgbackcontent ul( margin:0px;}\n\tli{ text-indent:0px;margin:0px;list-style:default; }\n</style>\n\t\n</head>\n<script language=\"javascript\"> \n//-- 控制层移动start of script -->\nvar Obj='';\nvar index=10000;//z-index;\nvar color='';\nvar str='';\ndocument.onmouseup=MUp\ndocument.onmousemove=MMove\n \nfunction MMove(){\n\tif(Obj!=''){\n\t\tdocument.all(Obj).style.left=event.x-pX;\n\t\tdocument.all(Obj).style.top=event.y-pY;\n\t}\n}\n \nfunction MUp(){\n\tif(Obj!=''){\n\t\tdocument.all(Obj).releaseCapture();\n\t\tObj='';\n\t}\n\tvar srcEle = event.srcElement;\n\t\n\tvar children = srcEle.children;\n\tif(children.length>0){\n\t\tchildren[1].value = \"1\";\t\t//isChange\n\t\tchildren[2].value = event.x-pX;\n\t\tchildren[3].value = event.y-pY;\n\t}\n}\n \nfunction MDown(objtd,id){\n\tObj=id\n\tdocument.all(Obj).setCapture()\n\tpX = event.x-document.all(Obj).style.pixelLeft;\n\tpY = event.y-document.all(Obj).style.pixelTop;\n}\n \n//-- 控制层移动end of script -->\n//获得焦点;\nfunction getFocus(obj)\n{\n       if(obj.style.zIndex!=index)\n       {\n               index = index + 2;\n               var idx = index;\n               obj.style.zIndex=idx;\n               //obj.nextSibling.style.zIndex=idx-1;\n       }\n}\n \n//针对未已阅的、未回复的、工作任务\nfunction msgrevoke( id ){\n\tif(confirm(\"是否确定要撤销此条信息?\")){\n\t\t//_Submit(\"/home/olmsgRevokeAction.do?flag=revoke&id=\"+id,null,\"撤销\");\n\t}\n}\n \n//需回复的留言\nfunction msgback( id ){\n\t//_Submit(\"/home/olmsgUpdateAction.do?flag=back&id=\"+id,null,\"回复\");\n}\n \nfunction msgupdate( id , flag ){\n\tif(flag==\"read\"){\n\t\tif(!confirm(\"是否确定已阅此条信息?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"accept\"){\n\t\tif(!confirm(\"是否确定接受此任务?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"fail\"){\n\t\tif(!confirm(\"是否确定此任务未完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"success\"){\n\t\tif(!confirm(\"是否确定此任务已完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"finished\"){\n\t\tif(!confirm(\"是否确定完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t//_Submit(\"/home/olmsgUpdateAction.do?flag=\"+flag+\"&id=\"+id,null,\"修改\");\n\t\n}\n \nfunction msgdel( id ){\n\tif(confirm(\"是否确定要删除此条信息?\")){\n\t\t//_Submit(\"/home/olmsgDeleteAction.do?delId=\"+id,null,\"删除\");\n\t}\n}\n \nfunction msgstate( id , flag ){\n\tif(flag==\"read\"){\n\t\tif(!confirm(\"是否确定已阅此条信息?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"accept\"){\n\t\tif(!confirm(\"是否确定接受此任务?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"fail\"){\n\t\tif(!confirm(\"是否确定此任务未完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"success\"){\n\t\tif(!confirm(\"是否确定此任务已完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}else if(flag==\"finished\"){\n\t\tif(!confirm(\"是否确定完成?\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t//_Submit(\"/home/olmsgStateAction.do?flag=\"+flag+\"&delId=\"+id,null,\"已阅\");\n}\n \nfunction changRowColor(obj){\n\t//obj.removeAttribute(\"className\");\n\t//alert(obj.className);\n\t//obj.setAttribute(\"bgcolor\",\"#FFECB0\");\n\t//obj.sytle.backgroundColor = \"#FFECB0\";\n}\n \nfunction removeOverRowColor(obj){\n\t//alert(obj.getAttribute(\"style\"));\n}\n \nfunction killErrors() {\n\treturn true;\n}\n \nwindow.onerror = killErrors;\n</script>\n \n<body class=\"curbody\">\n \n<form name=\"form2\">\n<!-- 工具栏部分 ToolBar -->\n<div id=\"menubar\">\n<div id=\"middleMenubar\">\n<div id=\"innerMenubar\">\n    <div id=\"navMenubar\">\n<ul>\n \n<li id=\"new\"><a href=\"#\">新建</a></li>\n<li id=\"save\"><a href=\"#\" title=\"保存留言窗口的位置信息\">位置</a></li>\n \n<li id=\"stat\"><a href=\"#\">历史</a></li>\n \n</ul>\n    </div>\n</div>\n</div>\n</div>\n \n<logic:notEmpty name=\"olmsgList\">\n \n\t\n\t\t\n\t\t<div id='ff8080813d00613e013d0067909e0009' style='position:absolute;left:122px;top:97px;z-index:1001; height:164px;background:none;' onmousedown='getFocus(this)'>\n\t\t\t<table border=0 cellspacing=\"0\" cellpadding=\"0\" width=\"220\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;' onmousedown=\"MDown(this,'ff8080813d00613e013d0067909e0009')\" background=\"${ctx}/images/olmsg/C0FFE51.gif\" height=\"45\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"id\" class=\"input\" value=\"ff8080813d00613e013d0067909e0009\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"isChange\" class=\"input\" value=\"0\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posX\" class=\"input\" value=\"122\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posY\" class=\"input\" value=\"97\" />\n\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;white-space:nowrap;' width='100%' onmousedown=\"MDown('ff8080813d00613e013d0067909e0009')\" background=\"${ctx}/images/olmsg/C0FFE52.gif\" >\n\t\t\t\t\t\t<div style=\"float:left;width:130px;padding-left:7px;font-family:Tahoma;color:gray;font-style : oblique;\">\n\t\t\t\t\t\t\t2013-02-22 13:37\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"float:right;width:80px;text-align:right;padding-right:7px;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"编辑\" onclick=\"msgupdate('ff8080813d00613e013d0067909e0009','edit')\"><img src=\"${ctx}/images/olmsg/doc_edit.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"删除\" onclick=\"msgdel('ff8080813d00613e013d0067909e0009')\"><img src=\"${ctx}/images/olmsg/doc_del.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td background=\"${ctx}/images/olmsg/C0FFE52.gif\">\n\t\t\t\t\t<div class=\"msgcontent\">\n\t\t\t\t\t欢迎使用杰管理平台\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td id=\"tagBPic\" background=\"${ctx}/images/olmsg/C0FFE53.gif\" height=\"63\">\n\t\t\t\t\t\t<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td width=\"50\" align=\"center\">\n\t\t\t\t\t\t\t\t<img border=\"0\" src=\"${ctx}/images/olmsg/2.gif\">\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td style=\"text-align:right;padding-right:8px;\" nowrap>\n\t\t\t\t\t\t\t\t[备忘]\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t <!-- [回复] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<!-- [回执] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- [撤销原因] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<!-- state==99[完成] -->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\n\t\t\n\t\t<div id='ff8080813d00613e013d00681494000a' style='position:absolute;left:442px;top:91px;z-index:1002; height:164px;background:none;' onmousedown='getFocus(this)'>\n\t\t\t<table border=0 cellspacing=\"0\" cellpadding=\"0\" width=\"220\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;' onmousedown=\"MDown(this,'ff8080813d00613e013d00681494000a')\" background=\"${ctx}/images/olmsg/FFE7E81.gif\" height=\"45\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"id\" class=\"input\" value=\"ff8080813d00613e013d00681494000a\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"isChange\" class=\"input\" value=\"0\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posX\" class=\"input\" value=\"442\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"posY\" class=\"input\" value=\"91\" />\n\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='cursor:move;white-space:nowrap;' width='100%' onmousedown=\"MDown('ff8080813d00613e013d00681494000a')\" background=\"${ctx}/images/olmsg/FFE7E82.gif\" >\n\t\t\t\t\t\t<div style=\"float:left;width:130px;padding-left:7px;font-family:Tahoma;color:gray;font-style : oblique;\">\n\t\t\t\t\t\t\t2013-02-22 13:37\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"float:right;width:80px;text-align:right;padding-right:7px;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"编辑\" onclick=\"msgupdate('ff8080813d00613e013d00681494000a','edit')\"><img src=\"${ctx}/images/olmsg/doc_edit.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a style='cursor:pointer;' title=\"删除\" onclick=\"msgdel('ff8080813d00613e013d00681494000a')\"><img src=\"${ctx}/images/olmsg/doc_del.gif\"/></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td background=\"${ctx}/images/olmsg/FFE7E82.gif\">\n\t\t\t\t\t<div class=\"msgcontent\">\n\t\t\t\t\t本系统实现货运企业日常管理<br />\n包括合同、报运、装箱、委托、发票等业务\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td id=\"tagBPic\" background=\"${ctx}/images/olmsg/FFE7E83.gif\" height=\"63\">\n\t\t\t\t\t\t<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td width=\"50\" align=\"center\">\n\t\t\t\t\t\t\t\t<img border=\"0\" src=\"${ctx}/images/olmsg/0.gif\">\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td style=\"text-align:right;padding-right:8px;\" nowrap>\n\t\t\t\t\t\t\t\t[备忘]\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t <!-- [回复] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<!-- [回执] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- [撤销原因] -->\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<!-- state==99[完成] -->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\n</logic:notEmpty>\n \n \n</form>\n</body>\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/home/title.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"../base.jsp\" %>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/fmt\" prefix=\"fmt\"%>\n<jsp:useBean id=\"now\" class=\"java.util.Date\" />\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <title></title>\n\n    <!-- 调用样式表 -->\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/default.css\" media=\"all\"/>\n    <link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/title.css\" media=\"all\"/>\n\n\t<script type=\"text/javascript\" src=\"${ctx}/components/jquery-ui/jquery-1.2.6.js\"></script>    \t\n\t<script language=\"javascript\" src=\"${ctx}/js/pngfix_map.js\"></script>\n\t<script language=\"javascript\" src=\"${ctx}/js/common.js\"></script>\n    <!-- 调用外部 JavaScript 脚本语言 -->\n\t\n<script language=\"javascript\">\n\n\tfunction CustomTitle(){\n\t\tvar Me = document.getElementById('memos');\n\t\tvar Loin = document.getElementById('logins');\n\t\tvar Lout = document.getElementById('logout');\n\t\tMe.onmouseover = function(){document.getElementById('memo').style.background='url(${ctx}/skin/default/images/title/memo2.gif) no-repeat'};\n\t\tMe.onmouseout = function(){document.getElementById('memo').style.background='url(${ctx}/skin/default/images/title/memo.gif) no-repeat'};\n\t\t\n\t\tLoin.onmouseover = function(){document.getElementById('small_login').style.background='url(${ctx}/skin/default/images/title/small_login2.gif) no-repeat'};\n\t\tLoin.onmouseout = function(){document.getElementById('small_login').style.background='url(${ctx}/skin/default/images/title/small_login.gif) no-repeat'};\n\t\t\n\t\tLout.onmouseover = function(){document.getElementById('small_login_out').style.background='url(${ctx}/skin/default/images/title/login_out2.gif) no-repeat left -55px;'};\n\t\tLout.onmouseout = function(){document.getElementById('small_login_out').style.background='url(${ctx}/skin/default/images/title/login_out.gif) no-repeat'};\n\t}\n\t\n\tfunction linkHighlightMenu(obj){\n\t\tvar links=document.getElementsByTagName('span');\n\t\tfor(var i=0;i<links.length;i++){\n\t\t\tif(links[i].id.indexOf('topmenu')!=-1){\n\t\t\t\tlinks[i].style.background = 'url(\"${ctx}/skin/default/images/title/li_dot.gif1\") no-repeat right 8px';\n\t\t\t\tlinks[i].style.color = '';\n\t\t\t\tlinks[i].style.fontWeight  = '';\n\t\t\t\tlinks[i].style.borderTop = '';\n\t\t\t\tlinks[i].style.borderLeft = '';\n\t\t\t\tlinks[i].style.borderRight = '';\n\t\t\t\tlinks[i].style.padding = '';\n\t\t\t}\n\t\t}\n\t\tobj.style.background ='url(\"${ctx}/skin/default/images/title/button_bg.jpg\") no-repeat';\n\t\tobj.style.color = \"#fff\";                                                                                                                                                                                                                                                   \n\t\tobj.style.fontWeight  = 'bold';\n\t\tobj.style.padding= '6px 11x 5px 13px;';\n\t\tobj.blur();\t\t//去掉图片的焦点框,使界面看起来漂亮 updated by tony\n\t}\n\n\t//sendRequest('000001');\t\n\tvar y = -5; \t\t//个人信息栏初始Y坐标\n\tvar dy = -40; \t\t//显示后Y坐标\n\t\n\tfunction doLoginDiv(){\n\t\tShowLoginDiv();\n\t}\n\t\n\tfunction HideLoginDiv(){\n\t\t dy = dy - 5;\n\t\t MoveHideLoginDiv();\n\t}\t\n\tfunction MoveHideLoginDiv(){\n\t\tif( dy > -40){setTimeout(\"HideLoginDiv()\",10);}else{ y = -40; dy = -40;}\n\t\tdocument.getElementById(\"userInfo\").style.top = dy;\n\t\t\n\t}\n\tfunction ShowLoginDiv(){\n\t\t y = y + 5;\n\t\t MoveShowLoginDiv();\n\t}\t\n\tfunction MoveShowLoginDiv(){\t\t\t\n\t\t\tif( y < -5){setTimeout(\"ShowLoginDiv()\",10);}else{ dy = -5; y = -1 }\n\t\t\tdocument.getElementById(\"userInfo\").style.top = y;\n\t}\n\tfunction ShowFrameDiv(queryString){\n\t\t\treturn false;\t\t//暂时屏蔽\n\t\ttop.middle.switches.loading.style.display = 'block';\n\t//\ttop.middle.switches.note_iframe.location.href=\"../home/empmemo/empMemoExpressCreate.jsp\";\n\t\tsetTimeout(ShowFrameMain(queryString),10);\n\t}\n\tfunction ShowFrameMain(passValue){\n\t\t\t\n\t\t\tvar url = \"../home/doConsoleListAction.do\";\t//../home/empMemoCreateAction.do\n\t\t\tvar topFrame = top.middle.switches;\n\n\t\t\tdocument.getElementById('PositionFrame').style.display = \"block\";\n\t\t\ttop.middle.contents.left_frame.style.border = \"none\";\n\t\t\ttop.middle.contents.left_frame.style.overflow = \"hidden\";\n\t\t\t\n\t\t\ttopFrame.PositionFrame_main.style.display =\"block\";\n\t\t\ttopFrame.PositionFrame.style.display =\"block\";\n\t\t\ttopFrame.PositionFrame_notebook.style.display = 'block';\n\t\t\ttopFrame.PositionFrame_notebook2.style.display = 'none';\t\n\t\t\ttopFrame.PositionFrame_my_note.style.display = 'block';\n\t\t\t//topFrame.note_iframe.location.href=url;\n\t\t\tform1.action = url;\n\t\t\tform1.method = \"post\";\n\t\t\tform1.target = \"note_iframe\";\n//\t\t\talert(passValue);\n\t\t\tif(passValue){\n\t\t\t\tform1.innerHTML='<input type=\"hidden\"  name=\"passTitle\" value=\"' + passValue[0] + '\"/>';\n\t\t\t\tform1.innerHTML=form1.innerHTML + '<input type=\"hidden\"  name=\"passContent\" value=\"' +passValue[1]+ '\"/>';\n\t\t\t}\n\t\t\tform1.submit();\n\t\t\t\n\t\t\ttop.middle.contents.PositionFrame.style.display =\"block\";\n\t\t\ttopFrame.loading.style.display = 'none';\n\t\t\ttopFrame.PositionFrame_main.style.visibility = 'visible';\n\t\t\ttopFrame.visibility.style.display = 'block';\n\t}\n\t\n   \n\tfunction offset(place){\n\t\n\t\tvar mask = $('#mask');\n\t\tvar targetObj = $('#menuContent');\n\t\t\n\t\tvar maxOffset = targetObj.width()-mask.width();\n\t\t\n\t\tvar currLeft = targetObj.css('left');\n//\t\talert(maxOffset + \" \" + currLeft);\n\t\tvar currLeft = Number(currLeft.substring(0,currLeft.length-2));\n\t\tif(place==\"right\" && (0-currLeft) <= maxOffset){\n\t\t\ttargetObj.css('left', currLeft - 5);\n\t\t} else if(place==\"left\" && currLeft < 0){\n\t\t\t\ttargetObj.css('left', currLeft + 5);\n\t\t}\n\t\t\n\t}\n\tfunction periodOffset(thisObj, place){\n\t\tvar intervalId = window.setInterval(function(){offset(place)}, 1);\n\t\t$(thisObj).mouseout(function(){window.clearInterval(intervalId)});\n\t}\n\t\n\t\tfunction checkDirectionKey(){\n\t\t\tvar mask = $('#mask');\n\t\t\t\n\t\t\tvar bodyWidth = $('body').width();\n\t\t\t\n\t\t\t//alert(bodyWidth - 450);\n\t\t\tmask.width(bodyWidth - 250);\t//450\n\t\t\t//alert(mask.width());\n\t\t\tvar targetObj = $('#menuContent');\n\t\t\t\n\t\t\tvar maxOffset = targetObj.width()-mask.width();\n\t\t\t\n\t\t\tvar currLeft = targetObj.css('left');\n//\t\t\talert(maxOffset + \" \" + currLeft);\n\t\t\tvar currLeft = Number(currLeft.substring(0,currLeft.length-2));\n//\t\t\talert((0-currLeft) <= maxOffset);\n\t\t\tif(!(0-currLeft) <= maxOffset || currLeft < 0) {\n\t\t\t\t$(\"#rightKey\").show(\"slow\");\n\t\t\t\t$(\"#leftKey\").show(\"slow\");\n\t\t\t\tif(!isShow){\n\t\t\t\t\t$(\"#prompt_div\").show(\"slow\", function(){window.setTimeout(function(){$(\"#prompt_div\").hide(\"slow\")}, 10000);isShow = true;});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$(\"#rightKey\").hide();\n\t\t\t\t$(\"#leftKey\").hide();\n\t\t\t\t$(\"#prompt_div\").hide();\n\t\t\t}\n\t\t}\n\t\tvar isShow = false;\n\t\t$(function(){\n\t\t\twindow.onresize = checkDirectionKey;\n\t\t\t$(\"#rightKey\").hide();\n\t\t\t$(\"#leftKey\").hide();\n\t\t\t$(\"#prompt_div\").hide();\n\t\t\tcheckDirectionKey();\n\t\t});\n\t\t\n\t\tfunction logout(){\n\t\t\treturn formSubmit(\"${ctx}/.action\", \"_top\");\n\t\t}\n</script>\n\t\n</head>\n\n<body onSelectStart=\"return true\"><!-- 文档主题部分开始 -->\n\n<div class=\"PositionFrame_black\" id=\"PositionFrame\"></div>\n\t<div id=\"userInfo\" style=\"z-index:999;\" onclick=\"HideLoginDiv()\" title=\"点击关闭\">\n\t\t<img src=\"${ctx}/skin/default/images/title/avataronline.gif\" border=\"0\" style=\"margin-top:-1px;\"/>\n\t\t您好：<strong>${_CURRENT_USER.realName}</strong>&nbsp;&nbsp;|\n\t\t您所属单位：<strong title=\"${_CURRENT_USER.dept.deptNameFull}\">${_CURRENT_USER.dept.deptName}</strong>&nbsp;&nbsp;\n\t\t<img src=\"${ctx}/skin/default/images/title/close.gif\" border=\"0\" />\n\t</div>\n\n\t<a id=\"memos\"  style=\"cursor:pointer;\" href=\"${ctx}/home/welcome.do\" target=\"_top\" title=\"点击切换到系统首页\"><div id=\"memo\" class=\"memo\" title=\"点击切换到系统首页\"></div></a>\n\t<a id=\"logins\" style=\"cursor:pointer;\" onclick=\"doLoginDiv();\" title=\"点击显示您的登录信息\"><div id=\"small_login\" class=\"small_login\" title=\"点击显示您的登录信息\"></div></a>\n\t<a id=\"logout\" style=\"cursor:pointer;\" onclick=\"logout();\" target=\"_top\" title=\"点击退出系统\"><div id=\"small_login_out\" class=\"small_login_out\" title=\"点击退出系统\"></div></a>\n\n<div class=\"headerBg\">\n\t<div class=\"top_logo\">\n\t    <div class=\"navMenu\"  style=\"float:left;text-align:left;\">\n\t    \t\t<div class=\"titleDate\" style=\"float:left;\"><fmt:formatDate value=\"${now}\" pattern=\"yyyy年M月d日 E\" /> </div>\n\t    \t\t<div style=\"height:29px;\">\n\t\t    \t\t<span id=\"leftKey\"  onmouseover=\"periodOffset(this, 'left')\"><img src=\"${ctx}/skin/default/images/title/left_arrow.png\"/></span>\n\t\t\t    \t<div class=\"mavMeau_top\"></div>\n\t\t\t    \t<div id=\"mask\">\n\t\t\t    \t\t<div id=\"menuContent\"><span id=\"topmenu\"\nonclick=\"top.location.href='fmain.action';linkHighlightMenu(this);\">系统首页</span><span id=\"tm_separator\"></span><span id=\"topmenu\" \nonclick=\"top.leftFrame.location.href='cargoLeft.action';top.main.location.href='cargoMain.action';linkHighlightMenu(this);\">货运管理</span><span id=\"tm_separator\"></span><span id=\"topmenu\"\nonclick=\"top.leftFrame.location.href='baseinfoLeft.action';top.main.location.href='baseinfoMain.action';linkHighlightMenu(this);\">基础信息</span><span id=\"tm_separator\"></span><span id=\"topmenu\" \nonclick=\"top.leftFrame.location.href='/system_admin/left.jsp';top.main.location.href='/system_admin/main.jsp';;linkHighlightMenu(this);\">系统管理</span></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span id=\"rightKey\" onmouseover=\"periodOffset(this, 'right')\"><img src=\"${ctx}/skin/default/images/title/right_arrow.png\"/></span>\n\t\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<div id=\"prompt_div\"><img src=\"${ctx}/skin/default/images/title/prompt.png\"/><span style=\"position:absolute;top:2px;left:35px;z-index: 99999;width:100%;color:#FFFFFF;text-align: left; \">鼠标指向箭头位置<br/>可显示更多菜单项</span></div>\n\n<form name=\"form1\" style=\"display: none;\"></form>\t<%//备忘录等使用%>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/index1.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ include file=\"base.jsp\" %>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>陕西杰信商务综合管理平台</title>\n\t<link rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\" href=\"${ctx}/skin/default/css/login.css\" media=\"all\" />\n</head>\n\n<body>\n<form id=\"login_main\" method=\"post\">\n<div id=\"warpbox\">\n\t<div class=\"main\">\n\t\t <div class=\"zck\">\n\t\t  <div class=\"zc\">\n\t\t\t\t<div class=\"zc_line\">用户名：\n\t\t\t\t<input type=\"text\" value=\"\" name=\"userName\" id=\"userName\"\n\t\t\t\t onkeyup=\"showGs(event)\"\n\t\t\t\t onFocus=\"this.select();\"\n\t\t\t\t autocomplete=\"off\" title=\"请您输入用户名\"/><div id=\"ts\" style=\"z-index:1;\"></div></div>\n\t\t\t    <div class=\"zc_line\">密　码：\n\t\t\t\t<input type=\"password\" value=\"\" name=\"password\" id=\"password\"\n\t\t\t\t onfocus=\"$('#ts').css('display','none');this.select();\"\n\t\t\t\t onKeyDown=\"javascript:if(event.keyCode==13){ submitFind(); }\"\n\t\t\t\t title=\"请您输入密码\"/></div>\n\t\t  </div>\n\t\t\t<div class=\"dl\">\n\t\t\t\t<input  class=\"loginImgOut\" value=\"\" type=\"button\" onclick=\"formSubmit('${ctx}/fmain.action','_self');\"\n\t\t\t\t  onmouseover=\"this.className='loginImgOver'\" \n\t\t\t\t  onmouseout=\"this.className='loginImgOut'\"\n\t\t\t\t/>\n\t\t\t\t<input class=\"resetImgOut\" value=\"\" type=\"button\"   \n\t\t\t\t  onmouseover=\"this.className='resetImgOver'\" \n\t\t\t\t  onmouseout=\"this.className='resetImgOut'\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"bqxx\" style=\"text-align:right;margin-top:0px;\">\n\t\t<a href=\"#\">系统帮助</a> | <a href=\"#\" onclick=\"bookmarkit();\">加入收藏</a>\n\t    </div>\n\n\t  \t<div class=\"mirro\"></div>\n\t\t\t<logic:notEmpty name=\"loginFailed\">\n\t\t\t\t<c:if test=\"${loginFailed==1}\">\n\t\t\t\t\t<c:set var=\"errorInfo\" value=\"用户名或密码错误, 请重新输入!\"/>\n\t\t\t\t</c:if>\n\t\t\t\t<c:if test=\"${loginFailed==2}\">\n\t\t\t\t\t<c:set var=\"errorInfo\" value=\"用户名不存在, 请重新输入!\"/>\n\t\t\t\t</c:if>\n\t\t\t\t<div class=\"erro\" id=\"erro\">\n\t\t\t\t\t<div class=\"erro_intro\">\n\t\t\t\t\t${errorInfo}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</logic:notEmpty>\n\t\t</div>\n</div>\n</form>\n<script type=\"text/JavaScript\">\n\tdocument.getElementById('login_main').userName.focus();\n</script>\n\n</body>\n</html>\n\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link rel=\"stylesheet\" href=\"css/swipebox.css\">\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<link href='#' rel='stylesheet' type='text/css'>\n<link href='#' rel='stylesheet' type='text/css'>\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<div class=\"banner\">\n\t<div class=\"container\">\n\t\t<script src=\"js/responsiveslides.min.js\"></script>\n\t\t\t<script>\n\t\t\t\t\t\t\t\t\t// You can also use \"$(window).load(function() {\"\n\t\t\t\t\t\t\t\t\t$(function () {\n\t\t\t\t\t\t\t\t\t // Slideshow 4\n\t\t\t\t\t\t\t\t\t$(\"#slider3\").responsiveSlides({\n\t\t\t\t\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\t\t\t\t\tpager: true,\n\t\t\t\t\t\t\t\t\t\tnav: false,\n\t\t\t\t\t\t\t\t\t\tspeed: 500,\n\t\t\t\t\t\t\t\t\t\tnamespace: \"callbacks\",\n\t\t\t\t\t\t\t\t\t\tbefore: function () {\n\t\t\t\t\t\t\t\t\t$('.events').append(\"<li>before event fired.</li>\");\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafter: function () {\n\t\t\t\t\t\t\t\t\t\t$('.events').append(\"<li>after event fired.</li>\");\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t</script>\n\n\t\t\t<div  id=\"top\" class=\"callbacks_container\">\n\t\t\t\t<ul class=\"rslides\" id=\"slider3\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t</div>\n</div>\n<!-- //banner -->\n<!-- banner-bottom -->\n<div class=\"banner-bottom\">\n\t<div class=\"container\">\n\t\t<div class=\"bottom-grids\">\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR INSTRUCTIONS</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR SUPPORT</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR GUARANTEE</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-star\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR RELIABILITY</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-thumbs-up\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- //banner-bottom -->\n<!-- team -->\n<div class=\"teachers\">\n\t<div class=\"container\">\n\t\t<div class=\"teach-head\">\n\t\t\t<h3>OUR TEACHERS</h3>\n\t\t\t<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis \n\t\t\tpraesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate.</p>\n\t\t</div>\n\t\t<div class=\"team-grids\">\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/1.png\" alt=\"\"/>\n\t\t\t\t\t<h3>FEDERICA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/2.png\" alt=\"\"/>\n\t\t\t\t\t<h3>PATRICK</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/3.png\" alt=\"\"/>\n\t\t\t\t\t<h3>THOMPSON</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"images/4.png\" alt=\"\"/>\n\t\t\t\t\t<h3>VICTORIA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- team -->\n<!-- our facilities -->\n<div class=\"facilities\">\n\t<div class=\"container\">\n\t\t<h3 class=\"tittle\">FACILITIES</h3> \t\n\t\t\t<script src=\"js/jquery.swipebox.min.js\"></script> \n\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\tjQuery(function($) {\n\t\t\t\t\t\t\t$(\".swipebox\").swipebox();\n\t\t\t\t\t\t});\n\t\t\t</script>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g1.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g1.jpg\" alt=\"\" >\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g2.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g2.jpg\" alt=\"\" >\n                    <div class=\"mask\">\n                         <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g3.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g3.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                         <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n                <div class=\"view view-seventh\">\n                    <a href=\"images/g4.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g4.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g5.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g5.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"view view-seventh\">\n                    <a href=\"images/g6.jpg\" class=\"b-link-stripe b-animate-go  swipebox\"  title=\"Image Title\"><img src=\"images/g6.jpg\" alt=\"\">\n                    <div class=\"mask\">\n                        <h4>TUTELAGE</h4>\n                        <p>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</p>\n                        \n                    </div></a>\n                </div>\n\t\t\t\t<div class=\"clearfix\"></div>\n\t</div>\n</div>\n<!-- //our facilities -->\n<!-- features -->\n<div class=\"features\">\n\t<div class=\"container\">\n\t\t<h3 class=\"tittle\">FEATURES</h3> \n\t\t<div class=\"col-md-5 features-left\">\n\t\t\t<img src=\"images/f1.jpg\" alt=\"\"/>\n\t\t</div>\n\t\t<div class=\"col-md-7 features-right\">\n\t\t\t<h4>SPECIAL CARE ON STUDENTS</h4>\n\t\t\t\t<p> Neque porro quisquam est, qui dolorem ipsum \n\t\t\t\tquia dolor sit amet, consectetur, adipisci velit, \n\t\t\t\tsed quia non numquam eius modi tempora incidunt ut \n\t\t\t\tlabore et dolore magnam aliquam quaerat voluptatem. \n\t\t\t\tUt enim ad minima veniam, quis nostrum exercitationem \n\t\t\t\tullam corporis suscipit laboriosam, nisi ut aliquid \n\t\t\t\tex ea commodi consequatu.</p>\n\t\t\t\t<p>Temporibus autem quibusdam et aut officiis debitis aut rerum \n\t\t\t\tnecessitatibus saepe eveniet ut et voluptates repudiandae sint et \n\t\t\t\tmolestiae non recusandae. Itaque earum rerum veniam, quis nostrum exercitationem \n\t\t\t\tullam corporis suscipit laboriosam, nisi ut aliquid \n\t\t\t\tex ea commodi consequatu.</p>\n\n\t\t</div>\n\t\t<div class=\"clearfix\"></div>\n\t</div>\n</div>\n<!-- //features -->\n<!-- footer -->\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/index.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){\n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link rel=\"stylesheet\" href=\"${ctx}/css/swipebox.css\">\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\t\n\tfunction exitSystem(){\n\t\twindow.location.href = \"${ctx}/user/exitSys.action\"\t;\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n<!-- \t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"banner\">\n\t<div class=\"container\">\n\t\t<script src=\"${ctx}/js/responsiveslides.min.js\"></script>\n\t\t\t<script>\n\t\t\t\t$(function () {\n\t\t\t\t\t$(\"#slider3\").responsiveSlides({\n\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\tpager: true,\n\t\t\t\t\t\tnav: false,\n\t\t\t\t\t\tspeed: 500,\n\t\t\t\t\t\tnamespace: \"callbacks\",\n\t\t\t\t\t\tbefore: function () {\n\t\t\t\t\t\t\t$('.events').append(\"<li>before event fired.</li>\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tafter: function () {\n\t\t\t\t\t\t\t$('.events').append(\"<li>after event fired.</li>\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t</script>\n\n\t\t\t<div  id=\"top\" class=\"callbacks_container\">\n\t\t\t\t<ul class=\"rslides\" id=\"slider3\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Make A Huge Difference Start Your Career journey With Us</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t<h3>Learning Online Becomes Easier And Faster</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t</div>\n</div>\n<!-- //banner -->\n<!-- banner-bottom -->\n<div class=\"banner-bottom\">\n\t<div class=\"container\">\n\t\t<div class=\"bottom-grids\">\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR INSTRUCTIONS</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR SUPPORT</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR GUARANTEE</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-star\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 bottom-grid\">\n\t\t\t\t<div class=\"bottom-text\">\n\t\t\t\t\t<h3>OUR RELIABILITY</h3>\n\t\t\t\t\t<p>Sed ut perspiciatis unde\n\t\t\t\t\tomnis iste natus error sit \n\t\t\t\t\tvoluptatem accusantium doloremque\n\t\t\t\t\texplicabo.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bottom-spa\"><span class=\"glyphicon glyphicon-thumbs-up\" aria-hidden=\"true\"></span></div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<!-- //banner-bottom -->\n<!-- team -->\n<div class=\"teachers\">\n\t<div class=\"container\">\n\t\t<div class=\"teach-head\">\n\t\t\t<h3>OUR TEACHERS</h3>\n\t\t\t<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis \n\t\t\tpraesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate.</p>\n\t\t</div>\n\t\t<div class=\"team-grids\">\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/1.png\" alt=\"\"/>\n\t\t\t\t\t<h3>FEDERICA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/2.png\" alt=\"\"/>\n\t\t\t\t\t<h3>PATRICK</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/3.png\" alt=\"\"/>\n\t\t\t\t\t<h3>THOMPSON</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 team-grid text-center\">\n\t\t\t\t<div class=\"team-img\">\n\t\t\t\t\t<img src=\"${ctx}/images/4.png\" alt=\"\"/>\n\t\t\t\t\t<h3>VICTORIA</h3>\n\t\t\t\t\t<h4>Co-founder</h4>\n\t\t\t\t\t<p>Nam libero tempore, cum soluta nobis\n\t\t\t\t\test eligendi optio cumque nihil impedit\n\t\t\t\t\tquo minus</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a class=\"fb\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"twitt\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"goog\" href=\"#\"></a></li>\n\t\t\t\t\t\t<li><a class=\"drib\" href=\"#\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t</div>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t/*\n\t\tvar defaults = {\n\t\tcontainerID: 'toTop', // fading element id\n\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\tscrollSpeed: 1200,\n\t\teasingType: 'linear' \n\t\t};\n\t*/\t\t\t\t\t\t\t\t\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/login.html",
    "content": "\n<!DOCTYPE html>\n<html lang=\"en\" class=\"no-js\">\n\n    <head>\n\n        <meta charset=\"utf-8\">\n        <title>Fullscreen Login</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <meta name=\"description\" content=\"\">\n        <meta name=\"author\" content=\"\">\n\n        <!-- CSS -->\n        <link rel=\"stylesheet\" href=\"assets/css/reset.css\">\n        <link rel=\"stylesheet\" href=\"assets/css/supersized.css\">\n        <link rel=\"stylesheet\" href=\"assets/css/userlogin.css\">\n\n        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->\n        <!--[if lt IE 9]>\n            <script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script>\n        <![endif]-->\n\n    </head>\n\n    <body>\n\n        <div class=\"page-container\">\n            <h1>Login</h1>\n            <form action=\"\" method=\"post\">\n                <input type=\"text\" name=\"username\" class=\"username\" placeholder=\"Username\">\n                <input type=\"password\" name=\"password\" class=\"password\" placeholder=\"Password\">\n                <button type=\"submit\">登录</button>\n                <div class=\"error\"><span>+</span></div>\n            </form>\n            <div class=\"connect\">\n\n            </div>\n        </div>\n        <div align=\"center\">没有账号？ <a href=\"http://www.cssmoban.com/\" target=\"_self\" title=\"模板之家\">注册</a></div>\n\n        <!-- Javascript -->\n        <script src=\"assets/js/jquery-1.8.2.min.js\"></script>\n        <script src=\"assets/js/supersized.3.2.7.min.js\"></script>\n        <script src=\"assets/js/supersized-init.js\"></script>\n        <script src=\"assets/js/scripts.js\"></script>\n\n    </body>\n\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/login.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\" class=\"no-js\">\n    <head>\n\n        <meta charset=\"utf-8\">\n        <title>在线考试系统</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <meta name=\"description\" content=\"\">\n        <meta name=\"author\" content=\"\">\n\n        <!-- CSS -->\n        <link rel=\"stylesheet\" href=\"${ctx}/css/reset.css\">\n        <link rel=\"stylesheet\" href=\"${ctx}/css/supersized.css\">\n        <link rel=\"stylesheet\" href=\"${ctx}/css/userlogin.css\">\n\n        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->\n        <!--[if lt IE 9]>\n            <script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script>\n        <![endif]-->\n\n    </head>\n\n    <body>\n\n        <div class=\"page-container\">\n            <h1>用户登录</h1>\n            <form action=\"${ctx}/user/toIndex.action\" method=\"post\" name=\"myform\" id=\"myform\">\n                <input type=\"text\" name=\"userId\" id=\"userId\" class=\"username\" placeholder=\"用户账号\">\n                <input type=\"password\" name=\"userPwd\" id=\"userPwd\" class=\"password\" placeholder=\"登录密码\">\n               <%--  <span>${message }</span> --%>\n                <button type=\"button\" onclick=\"login()\">登录</button>\n                <div class=\"error\"><span>${message }</span></div>\n            </form>\n            <div class=\"connect\">\n\n            </div>\n        </div>\n        <div align=\"center\">没有账号？ <a href=\"${ctx}/toRegistPage.action\" target=\"_self\" title=\"模板之家\">注册</a></div>\n\n        <!-- Javascript -->\n        <script src=\"${ctx}/js/jquery-1.8.2.min.js\"></script>\n        <script src=\"${ctx}/js/supersized.3.2.7.min.js\"></script>\n        <script src=\"${ctx}/js/supersized-init.js\"></script>\n        <script src=\"${ctx}/js/scripts.js\"></script>\n        <script type=\"text/javascript\">\n        \tfunction login(){\n        \t\tvar userId = $(\"#userId\").val();\n        \t\tvar userPwd = $(\"#userPwd\").val();\n        \t\t$.post(\"${ctx}/checkPwd.action\", { userId:userId, userPwd:userPwd },function(data){\n    \t\t\t\tif(data.errorNo != \"0\"){\n    \t\t\t\t\talert(data.errorInfo);\n    \t\t\t\t}else{\n    \t\t\t\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/user/toIndex.action\"; \n    \t\t\t\t\t$(\"form\").submit();\n    \t\t\t\t}\n        \t\t},\"json\");\n        \t}\n        </script>\n\n    </body>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/mybooks.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"login.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">高三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三下</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">语文</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">数学</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">英语</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>学期：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">期中</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">期末</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">选择题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">填空题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">判断题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">简答题</span></a>\n\t\t\t  </h5>\n\t\t\t</div>\t  \n\t\t\t<div class=\"progress\">\n\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t</div>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t</div>\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/mybooks.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n<!-- \t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"grade()\">${grade.gradeName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<c:forEach items=\"${course}\" var=\"course\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"course()\">${course.courseName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<c:forEach items=\"${type}\" var=\"type\">\n\t\t\t\t\t<a href=\"#\"><span class=\"label label-success\" onclick=\"type()\">${type.typeName}</span></a>\n\t\t\t\t</c:forEach>\n\t\t\t  </h5>\n\t\t\t</div>\t  \n\t\t\t<div class=\"progress\">\n\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t</div>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t\n\t\t\t<c:forEach items=\"${requestScope.errorBook }\" var=\"errorBook\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${errorBook.question.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionA }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionB }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionC }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${errorBook.question.optionD }</font></br>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t</div>\n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/mypaper.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\t  \n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/mypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n              \t<c:forEach items=\"${paper}\" var=\"paper\">\n              \t  <tr>\n\t                 <td><a href=\"${ctx}/qryPaperDetail.action?paperId=${paper.paperId}&userId=${paper.userId}\"><font color=\"blue\">${paper.paperName}</font></a></td>\n\t                 <td>${paper.courseId}</td>\n\t                 <td>${paper.beginTime}</td>\n\t\t\t\t  \t <td>${paper.endTime}</td>\n\t\t\t\t\t <td>${paper.score}</td>\n\t\t\t\t\t <td><font color=\"blue\">\n\t\t\t\t\t \t<c:if test=\"${paper.paperstate==0}\">准备考试</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==1}\">尚未开始</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==2}\">考试结束</c:if>\n\t\t\t\t\t </td>\n\t              </tr>\n\t\t\t\t</c:forEach>\n              </tbody>\n            </table>\n\t</div>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/onlinecheck.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tvar startFalg = true;\n\t\t\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\t\t\tfunction timer(intDiff){\n\t\t\t\twindow.setInterval(function(){\n\t\t\t\tvar day=0,\n\t\t\t\t\thour=1,\n\t\t\t\t\tminute=30,\n\t\t\t\t\tsecond=0;//时间默认值\t\t\n\t\t\t\tif(intDiff > 0){\n\t\t\t\t\tstartFalg =false;\n\t\t\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t\t\t}else{\n\t\t\t\t\tstartFalg = true;\n\t\t\t\t}\n\t\t\t\tif (minute <= 9) minute = '0' + minute;\n\t\t\t\tif (second <= 9) second = '0' + second;\n\t\t\t\t$('#day_show').html(day+\"天\");\n\t\t\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\t\t\tintDiff--;\n\t\t\t\t}, 1000);\n\t\t\t} \n\t\t\tfunction doStart(){\n\t\t\t\tif(startFalg)\n\t\t\t\t\ttimer(intDiff);\n\t\t\t}\t\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\t\n\t\t\t<div class=\"grid_3 grid_5\">\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>年级：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">高三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大一下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大二下</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三上</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">大三下</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>科目：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">语文</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">数学</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">英语</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>学期：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">期中</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">期末</span></a>\n\t\t\t  </h5>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<span>题型：</span>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">选择题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">填空题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">判断题</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">简答题</span></a>\n\t\t\t  </h5>\t\t\t \t\t\t  \n\t\t\t</div>\t  \n\t\t\t<div class=\"time-item\">\n\t\t\t\t<table class=\"table\">\n\t\t\t\t  <thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span id=\"day_show\">0天</span>\n\t\t\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\">考试中...</span></a>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t  </thead>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div>\n\n<!--//typo-->\n\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/paperdetail.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%  \n\t java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");  \n\t java.util.Date currentTime = new java.util.Date();//得到当前系统时间  \n\t String str_date1 = formatter.format(currentTime); //将日期时间格式化  \n\t String str_date2 = currentTime.toString(); //将Date型日期时间转换成字符串形式  \n\t request.setAttribute(\"starttime \", str_date1);\n %> \n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tvar beginTime =\"\";\n\tvar startFalg = true;\n\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\tfunction timer(intDiff){\n\t\twindow.setInterval(function(){\n\t\tvar day=0,\n\t\t\thour=1,\n\t\t\tminute=30,\n\t\t\tsecond=0;//时间默认值\t\t\n\t\tif(intDiff > 0){\n\t\t\tstartFalg =false;\n\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t}else{\n\t\t\tstartFalg = true;\n\t\t}\n\t\tif (minute <= 9) minute = '0' + minute;\n\t\tif (second <= 9) second = '0' + second;\n\t\t$('#day_show').html(day+\"天\");\n\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\tintDiff--;\n\t\t}, 1000);\n\t} \n\tfunction doStart(){\n\t\tbeginTime= CurentTime();\n\t\t$(\"#sp_start\").html(\"考试中.....\");\n\t\tif(startFalg)\n\t\t\ttimer(intDiff);\n\t}\t\n\t\n\tfunction CurentTime()  \n    {   \n        var now = new Date();  \n        var year = now.getFullYear();       //年  \n        var month = now.getMonth() + 1;     //月  \n        var day = now.getDate();            //日  \n        var hh = now.getHours();            //时  \n        var mm = now.getMinutes();          //分  \n        var ss = now.getSeconds();           //秒  \n          \n        var clock = year + \"-\";  \n        if(month < 10)  \n            clock += \"0\";  \n        clock += month + \"-\";  \n        if(day < 10)  \n            clock += \"0\";  \n        clock += day + \" \";  \n        if(hh < 10)  \n            clock += \"0\";  \n        clock += hh + \":\";  \n        if (mm < 10) clock += '0';   \n        clock += mm + \":\";   \n        if (ss < 10) clock += '0';   \n        clock += ss;   \n        return(clock);   \n} \n\t\n\tfunction getNowFormatDate() {\n\t    var date = new Date();\n\t    var seperator1 = \"-\";\n\t    var seperator2 = \":\";\n\t    var month = date.getMonth() + 1;\n\t    var strDate = date.getDate();\n\t    if (month >= 1 && month <= 9) {\n\t        month = \"0\" + month;\n\t    }\n\t    if (strDate >= 0 && strDate <= 9) {\n\t        strDate = \"0\" + strDate;\n\t    }\n\t    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate\n\t            + \" \" + date.getHours() + seperator2 + date.getMinutes()\n\t            + seperator2 + date.getSeconds();\n\t    return currentdate;\n\t}\n\t\n\tfunction submitPaper(){\n\t\tvar paperName = $(\"#paperName\").val();\n\t\tvar paperId = $(\"#paperId\").val();\n\t\tvar score = $('#myForm').serialize();\n\t\t$.post(\"${ctx}/dealPaper.action\", \n\t\t\t\t{\n\t\t\t\t\t\"beginTime\":beginTime,\n\t\t\t\t\t\"paperName\":paperName,\n\t\t\t\t\t\"paperId\":paperId,\n\t\t\t\t\t\"score\":score,\n\t\t\t\t},\n\t\tfunction(data){\n\t\t\talert(data.errorInfo);\n\t\t\tdocument.myForm.attributes[\"action\"].value = \"${ctx}/toScoreQry.action?userId=${user.userId}\"; \n\t\t\t$(\"form\").submit(); \n\t\t},\"json\");\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\t<div class=\"time-item\">\n\t\t<table class=\"table\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t\t<th>\n\t\t\t\t\t<!-- <span id=\"day_show\">0天</span> -->\n\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t</th>\n\t\t\t\t<th>\n\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\" id=\"sp_start\">开始考试</span></a>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t</table>\n\t</div>\n\t <form action=\"${ctx}/dealPaper.action\" method=\"post\" id=\"myForm\" name=\"myForm\">\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t \t\t<!-- 试卷名称 -->\n\t\t\t<h2 class=\"bars\" align=\"center\"><font color=\"blue\">${paper.paperName }</font></h2>\n\t \t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${selectQ }</font></h4>\n\t\t\t</div>\n\t\t\t<input type=\"hidden\" name=\"paperId\" id=\"paperId\" value=\"${paper.paperId }\"/>\n\t\t\t<c:forEach items=\"${selList}\" var=\"selType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${selType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"A\" checked=\"checked\"/><font size=\"4\">${selType.optionA }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"B\"/><font size=\"4\">${selType.optionB }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"C\"/><font size=\"4\">${selType.optionC }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"D\"/><font size=\"4\">${selType.optionD }</font></br>\n<%--  \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${inpQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${inpList }\" var=\"inpType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${inpType.quesName }</h4></p><br/>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">答案：</span>\n\t\t\t\t  <input type=\"text\" name=\"${inpType.questionId }\" id=\"${inpType.questionId }\" \n\t\t\t\t  \t\tclass=\"form-control\" placeholder=\"请在此输入答案...\">\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${desQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${desList }\" var=\"desType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${desType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionA }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionB }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionC }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionD }</font></br>\n<%-- \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t<div class=\"grid_3 grid_5\" align=\"center\">\n\t\t  <h3 class=\"t-button\">\n\t\t\t<a href=\"javascript:;\" onclick=\"submitPaper()\"><span class=\"label label-success\">提交试卷</span></a>&nbsp;&nbsp;\n\t\t\t<a href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\"><span class=\"label label-info\">返回上一页</span></a>\n\t\t  </h3>\n      </div>\n\t</div>\n</form>\t  \n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/qrypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%  \n\t java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");  \n\t java.util.Date currentTime = new java.util.Date();//得到当前系统时间  \n\t String str_date1 = formatter.format(currentTime); //将日期时间格式化  \n\t String str_date2 = currentTime.toString(); //将Date型日期时间转换成字符串形式  \n\t request.setAttribute(\"starttime \", str_date1);\n %> \n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/time.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n\tvar beginTime =\"\";\n\tvar startFalg = true;\n\tvar intDiff = parseInt(60*60*2);//倒计时总秒数量\n\tfunction timer(intDiff){\n\t\twindow.setInterval(function(){\n\t\tvar day=0,\n\t\t\thour=1,\n\t\t\tminute=30,\n\t\t\tsecond=0;//时间默认值\t\t\n\t\tif(intDiff > 0){\n\t\t\tstartFalg =false;\n\t\t\tday = Math.floor(intDiff / (60 * 60 * 24));\n\t\t\thour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n\t\t\tminute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n\t\t\tsecond = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);\n\t\t}else{\n\t\t\tstartFalg = true;\n\t\t}\n\t\tif (minute <= 9) minute = '0' + minute;\n\t\tif (second <= 9) second = '0' + second;\n\t\t$('#day_show').html(day+\"天\");\n\t\t$('#hour_show').html('<s id=\"h\"></s>'+hour+'时');\n\t\t$('#minute_show').html('<s></s>'+minute+'分');\n\t\t$('#second_show').html('<s></s>'+second+'秒');\n\t\tintDiff--;\n\t\t}, 1000);\n\t} \n\tfunction doStart(){\n\t\tbeginTime= getNowFormatDate();\n\t\t$(\"#sp_start\").html(\"考试中.....\");\n\t\tif(startFalg)\n\t\t\ttimer(intDiff);\n\t}\t\n\t\n\tfunction getNowFormatDate() {\n\t    var date = new Date();\n\t    var seperator1 = \"-\";\n\t    var seperator2 = \":\";\n\t    var month = date.getMonth() + 1;\n\t    var strDate = date.getDate();\n\t    if (month >= 1 && month <= 9) {\n\t        month = \"0\" + month;\n\t    }\n\t    if (strDate >= 0 && strDate <= 9) {\n\t        strDate = \"0\" + strDate;\n\t    }\n\t    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate\n\t            + \" \" + date.getHours() + seperator2 + date.getMinutes()\n\t            + seperator2 + date.getSeconds();\n\t    return currentdate;\n\t}\n\t\n\tfunction submitPaper(){\n\t\t/* var beginTime = getNowFormatDate(); */\n\t\tvar paperName = $(\"#paperName\").val();\n\t\tvar paperId = $(\"#paperId\").val();\n\t\tvar score = $('#myForm').serialize();\n\t\t$.post(\"${ctx}/dealPaper.action\", \n\t\t\t\t{\n\t\t\t\t\t\"beginTime\":beginTime,\n\t\t\t\t\t\"paperName\":paperName,\n\t\t\t\t\t\"paperId\":paperId,\n\t\t\t\t\t\"score\":score,\n\t\t\t\t},\n\t\tfunction(data){\n\t\t\talert(data.errorInfo);\n\t\t\tdocument.myForm.attributes[\"action\"].value = \"${ctx}/toScoreQry.action?userId=${user.userId}\"; \n\t\t\t$(\"form\").submit(); \n\t\t},\"json\");\n\t}\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n<!-- \t<div class=\"time-item\">\n\t\t<table class=\"table\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t\t<th>\n\t\t\t\t\t<span id=\"day_show\">0天</span>\n\t\t\t\t\t<strong id=\"hour_show\">0时</strong>\n\t\t\t\t\t<strong id=\"minute_show\">0分</strong>\n\t\t\t\t\t<strong id=\"second_show\">0秒</strong>\n\t\t\t\t</th>\n\t\t\t\t<th>\n\t\t\t\t\t<a href=\"#\" onclick=\"doStart()\"><span class=\"label label-primary\" id=\"sp_start\">开始考试</span></a>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t</table>\n\t</div> -->\n\t <form action=\"${ctx}/dealPaper.action\" method=\"post\" id=\"myForm\" name=\"myForm\">\n<!-- <div class=\"typrography\"> -->\n\t <div class=\"container\">\n\t \t\t<!-- 试卷名称 -->\n\t\t\t<h2 class=\"bars\" align=\"center\"><font color=\"blue\">${paper.paperName }</font></h2>\n\t \t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${selectQ }</font></h4>\n\t\t\t</div>\n\t\t\t<input type=\"hidden\" name=\"paperId\" id=\"paperId\" value=\"${paper.paperId }\"/>\n\t\t\t<c:forEach items=\"${selList}\" var=\"selType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${selType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"A\" checked=\"checked\"/><font size=\"4\">${selType.optionA }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"B\"/><font size=\"4\">${selType.optionB }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"C\"/><font size=\"4\">${selType.optionC }</font></br>\n\t\t\t\t\t<input name=\"${selType.questionId }\" type=\"radio\" value=\"D\"/><font size=\"4\">${selType.optionD }</font></br>\n<%--  \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${inpQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${inpList }\" var=\"inpType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${inpType.quesName }</h4></p><br/>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">答案：</span>\n\t\t\t\t  <input type=\"text\" name=\"${inpType.questionId }\" id=\"${inpType.questionId }\" \n\t\t\t\t  \t\tclass=\"form-control\" placeholder=\"请在此输入答案...\">\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t  <h4 class=\"bars\" align=\"left\"><font color=\"blue\">${desQ }</font></h4>\n\t\t\t</div>\n\t\t\t<c:forEach items=\"${desList }\" var=\"desType\">\n\t\t\t\t<p><h4 class=\"bars\" align=\"left\">${desType.quesName }</h4></p>\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionA }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionB }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionC }</font></br>\n\t\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">${desType.optionD }</font></br>\n<%-- \t\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：${errorBook.userAnswer } </font></h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\">标准答案：${errorBook.question.answer }（ ${errorBook.question.answerDetail }）</h4></p>\n\t\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：${errorBook.question.remark }</font></h4></p> --%>\n\t\t\t\t</div>\n\t\t\t</c:forEach>\n\t\t<div class=\"grid_3 grid_5\" align=\"center\">\n\t\t  <h3 class=\"t-button\">\n\t\t\t<!-- <a href=\"javascript:;\" onclick=\"submitPaper()\"><span class=\"label label-success\">提交试卷</span></a>&nbsp;&nbsp; -->\n\t\t\t<a href=\"${ctx}/toScoreQry.action?userId=${user.userId}\"><span class=\"label label-info\">返回上一页</span></a>\n\t\t  </h3>\n      </div>\n\t</div>\n</form>\t  \n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/regist.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\">\n\taddEventListener(\"load\", function() {\n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<script src=\"js/modernizr.custom.js\"></script>\n<script src=\"js/bootstrap.js\"></script>\n<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<div class=\"typrography\">\n    <div class=\"container\">\n\t\t<h3 class=\"bars\">用户注册</h3>\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"password\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"basic-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号：\" aria-describedby=\"basic-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">登录账号</span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t\t</div>\n\t\t<div class=\"input-group input-group-lg\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group input-group-sm\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon3\">\n\t\t</div>\n\t\t<p>我已经有一个账户，我要 <code>登录</code></p>\n\t</div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/regist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html lang=\"en\" class=\"no-js\">\n<head>\n<meta charset=\"utf-8\">\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta name=\"description\" content=\"\">\n<meta name=\"author\" content=\"\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/reset.css\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/supersized.css\">\n<link rel=\"stylesheet\" href=\"${ctx}/css/userlogin.css\">\n<script src=\"${ctx}/js/jquery-1.8.2.min.js\"></script>\n<script src=\"${ctx}/js/supersized.3.2.7.min.js\"></script>\n<script src=\"${ctx}/js/supersized-init.js\"></script>\n<script src=\"${ctx}/js/scripts.js\"></script>\n<script type=\"text/javascript\">\n\tfunction regist(){\n\t\tvar Pwd = $(\"#Pwd\").val();\n\t\tvar userPwd =$(\"#userPwd\").val();\n\t\tif(Pwd ==\"\"){\n\t\t\talert(\"登录密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(userPwd ==\"\"){\n\t\t\talert(\"确认密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(Pwd!=userPwd){\n\t\t\talert(\"两次密码不一致，请重新输入！\");\n\t\t\treturn;\n\t\t}\n\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/addUserInfo.action\"; \n\t\t$(\"form\").submit();\n\t}\n\t\n\tfunction checkUserId(){\n\t\tvar userId = $(\"#userId\").val();\n\t\tvar tipInfo = $(\"#tipInfo\").val();\n\t\tif(userId == \"\"){\n\t\t\t$(\"#tipInfo\").html(\"请输入账号\");\n\t\t\t$(\"#userId\").focus();\n\t\t\treturn;\n\t\t}\n\t \t$.ajax({\n\t        type: \"post\",\n\t        url: \"${ctx}/admin/userRegist.action\",\n\t        data: {userId:userId},\n\t        dataType: \"json\",\n\t        success: function(data){\n\t        \t$(\"#tipInfo\").html(data.errorInfo);\n\t        }\n\t    });\n\t}\n\t\n\tfunction checkPwd(){\n\t\tvar Pwd = $(\"#Pwd\").val();\n\t\tvar userPwd =$(\"#userPwd\").val();\n\t\tif(Pwd ==\"\"){\n\t\t\talert(\"登录密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(userPwd ==\"\"){\n\t\t\talert(\"确认密码不能为空\");\n\t\t\treturn;\n\t\t}\n\t\tif(Pwd!=userPwd){\n\t\t\talert(\"两次密码不一致，请重新输入！\");\n\t\t\treturn;\n\t\t}\n\t\t\n\t}\n\t\n</script>\n</head>\n<body>\n    <div class=\"page-container\">\n        <h1>用户注册</h1>\n        <form action=\"${ctx}/user/toIndex.action\" method=\"post\" name=\"myform\" id=\"myform\">\n            <input type=\"text\" name=\"userId\" id=\"userId\" class=\"username\" placeholder=\"用户账号\" onblur=\"checkUserId()\"><br><span style=\"color: red\" id=\"tipInfo\">${message }</span><br>\n            <input type=\"text\" name=\"userName\" id=\"userName\" placeholder=\"用户昵称\">\n            <input type=\"password\" name=\"Pwd\" id=\"Pwd\" class=\"password\" placeholder=\"登录密码\">\n            <input type=\"password\" name=\"userPwd\" id=\"userPwd\" class=\"password\" placeholder=\"确认密码\" onblur=\"checkPwd()\"><br/>\n            <c:forEach items=\"${grade}\" var=\"grade\">\n\t\t\t\t<input type=\"radio\" checked=\"checked\" name=\"grade\" value=\"${grade.gradeId }\" \n\t\t\t\t\tclass=\"radio\" />${grade.gradeName } &nbsp;\n\t\t\t</c:forEach>\n            <input type=\"text\" name=\"email\" id=\"email\" class=\"username\" placeholder=\"邮箱\">\n            <input type=\"text\" name=\"telphone\" id=\"telphone\" placeholder=\"联系电话\">\n            <input type=\"text\" name=\"address\" id=\"address\" placeholder=\"联系地址\">\n            <button type=\"button\" onclick=\"regist()\">注册</button>\n            <div class=\"error\"><span>${message }</span></div>\n        </form>\n        <div class=\"connect\"></div>\n    </div>\n    <div align=\"center\">我已经有一个账号，我要 <a href=\"${ctx}/toLogin.action\" target=\"_self\">登录</a></div>\n</body>\n\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/regist1.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\">\n\taddEventListener(\"load\", function() {\n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<div class=\"typrography\">\n    <div class=\"container\">\n\t\t<h3 class=\"bars\">用户注册</h3>\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"password\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"basic-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号：\" aria-describedby=\"basic-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">登录账号</span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t\t</div>\n\t\t<div class=\"input-group input-group-lg\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon1\">\n\t\t</div>\n\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon2\">\n\t\t</div>\n\n\t\t<div class=\"input-group input-group-sm\">\n\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">登录账号：</span>\n\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"登录账号\" aria-describedby=\"sizing-addon3\">\n\t\t</div>\n\t\t<p>我已经有一个账户，我要 <code>登录</code></p>\n\t</div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/scorequery.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<link href='#' rel='stylesheet' type='text/css'>\n<link href='#' rel='stylesheet' type='text/css'>\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n\n<!-- //banner -->\n<!-- about -->\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n\t\t\t  <tr>\n                  <td><a href=\"#\"><font color=\"blue\">高三（上）语文（期中）试题</font></a></td>\n                  <td>语文</td>\n                  <td>2017-03-14 10:00:00</td>\n\t\t\t\t  <td>2017-03-14 11:23:00</td>\n\t\t\t\t  <td>60</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）数学（期中）试题</font></a></td>\n                  <td>数学</td>\n                  <td>2017-03-15 10:00:00</td>\n\t\t\t\t  <td>2017-03-15 11:23:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）语文（期中）试题</font></a></td>\n                  <td>语文</td>\n                  <td>2017-03-16 10:00:00</td>\n\t\t\t\t  <td>2017-03-16 11:30:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n                <tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（上）英语（期中）试题</font></a></td>\n                  <td>英语</td>\n                  <td>2017-03-17 10:00:00</td>\n\t\t\t\t  <td>2017-03-17 11:30:00</td>\n\t\t\t\t  <td>80</td>\n\t\t\t\t  <td><font color=\"blue\">已完成</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）英语（期末）试题</font></a></td>\n                  <td>语文</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）数学（期末）试题</font></a></td>\n                  <td>数学</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n\t\t\t\t<tr>\n                  <td><a href=\"#\"><font color=\"blue\">大一（下）语文（期末）试题</font></a></td>\n                  <td>英语</td>\n                  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td>-</td>\n\t\t\t\t  <td><font color=\"red\">未开始</td>\n                </tr>\n              </tbody>\n            </table>\n\t</div>\n</div>\n\n<!-- //about -->\n<!-- footer\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<p>Copyright &copy; 2015.Company name All rights reserved.More Templates </p>\n\t</div>\n</div>\n\n-->\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/scorequery.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"about\">\n\t<div class=\"container\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>试卷名称</th>\n                  <th>试卷科目</th>\n\t\t\t\t  <th>开始时间</th>\n\t\t\t\t  <th>结束时间</th>\n                  <th>最后得分</th>\n                  <th>试卷状态</th>\n                </tr>\n              </thead>\n              <tbody>\n              \t<c:forEach items=\"${paper}\" var=\"paper\">\n              \t  <tr>\n\t                 <td><a href=\"${ctx}/qrypaper.action?paperId=${paper.paperId}&userId=${paper.userId}\"><font color=\"blue\">${paper.paperName}</font></a></td>\n\t                 <td>${paper.courseId}</td>\n\t                 <td>${paper.beginTime}</td>\n\t\t\t\t  \t <td>${paper.endTime}</td>\n\t\t\t\t\t <td>${paper.score}</td>\n\t\t\t\t\t <td><font color=\"blue\">\n\t\t\t\t\t \t<c:if test=\"${paper.paperstate==0}\">准备考试</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==1}\">尚未开始</c:if>\n\t\t\t\t\t\t<c:if test=\"${paper.paperstate==2}\">考试结束</c:if>\n\t\t\t\t\t </td>\n\t              </tr>\n\t\t\t\t</c:forEach>\n              </tbody>\n            </table>\n\t</div>\n</div>\n<script src=\"js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/tomypaper.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\t <div class=\"container\">\t  \n\t\t  <h2 class=\"bars\" align=\"center\">高三（上）语文（期中）试题</h2>\n\t\t  \n\t\t  <h4 class=\"bars\" align=\"left\">一、选择题（每题5分）</h4>\n\t\t\t<!-- 选择题 -->\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中，没有错别字的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．妨碍    功夫片    钟灵毓秀   管中窥豹，可见一斑</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．梳妆    吊胃口    瞠目结舌   文武之道，一张一驰</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．辐射    入场券    循章摘句   风声鹤唳，草木皆兵</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．蜚然    直辖市    秘而不宣   城门失火，殃及池鱼</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（ B.文武之道，一张一弛；C.寻章摘句；D.斐然）</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是高考高频字形。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列词语中加点字的读音，全部正确的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．暂时zàn    埋怨mái    谆谆告诫zhūn   引吭高歌háng</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．豆豉chǐ    踝骨huái    踉踉跄跄cāng   按图索骥jì</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．梗概gěn    删改shān    炊烟袅袅niǎo  明眸皓齿móu</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．搁浅gē     解剖pōu     鬼鬼祟祟suì   不屑一顾xiè</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：D ( A．埋 mán， B．跄 qiàng C.梗gěng  )</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：本题考察的都是基础字音，没有出现偏难怪的字音。</font></h4></p>\n\t\t\t</div>\n\t\t\t\n\t\t\t\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中加点词语的使用，不恰当的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．“2015年度中国文化跨界论坛”日前在北京举行，届时来自世界各国的艺术家、企业家和媒体人围绕当前文化创意产业发展中的热点进行了交流。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．对于那些熟稔互联网的人来说，进行“互联网+”创业，最难的可能并不是“互联网”这一部分，而是“+”什么以及怎么“+”的问题。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．这家民用小型无人机公司一年前还寂寂无闻，一年后却声名鹊起，其系列产品先后被评为“十大科技产品“2014年杰出高科技产品”。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．近年来，广袤蜀地的新村建设全面推进，大巴山区漂亮民居星罗棋雍，大凉山上彝家    新寨鳞次栉比，西部高原羌寨碉楼拔地而起。</font></br>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"blue\">我的答案：D </font></h4></p>\n\t\t\t\t<p><h4 class=\"bars\">标准答案：A（届时是“到时候”的意思，而本句所叙述的是已经发生了的事实。）解析：本题考察的是词语和成语运用。都是考纲内的高频词语辨析和成语分析，难度不大。</h4></p>\n\t\t\t\t<p><h4 class=\"bars\"><font color=\"red\">解析：</font></h4></p>\n\t\t\t</div>\n\t\t\t<p><h4 class=\"bars\" align=\"left\">下列各句中，没有语病的一项是（ ）</h4></p>\n\t\t\t<div class=\"input-group\">\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">A．首届“书香之家”颁奖典礼，是设在杜甫草堂古色古香的仰止堂举行的，当场揭晓了书香家庭、书香校园、书香企业、书香社区等获奖名单。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">B．专家强调，必须牢固树立保护生态环境就是保护生产力的理念，形成绿水青山也是金山银山的生态意识，构建与生态文明相适应的发展模式。 </font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">C．市旅游局要求各风景区进一步加强对景区厕所、停车场的建设和管理，整治和引导不文明旅游的各种顽疾和陋习，有效提升景区的服务水平。</font></br>\n\t\t\t\t<input name=\"userType\" type=\"radio\" value=\"1\"/><font size=\"4\">D．《四川省农村扶贫开发条例》是首次四川针对贫困人群制定的地方性法规，将精准扶贫确定为重要原则，从最贫困村户人手，让老乡过上好日子。</font></br>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">二、填空题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!-- 填空题 -->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">三、判断题（每题5分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--判断题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t  <h4 class=\"bars\" align=\"left\">四、简答题（每题20分）</h4>\n\t\t\t<div></div>\n\t\t\t<!--简答题-->\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group\">\n\t\t\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t\t\t</div>\n\t\t\t\n\t<h3 class=\"bars\">Forms</h3>\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n\t  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\">$</span>\n\t  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n\t  <span class=\"input-group-addon\">.00</span>\n\t</div>\n\t<div class=\"input-group input-group-lg\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n\t</div>\n\n\t<div class=\"input-group\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n\t</div>\n\n\t<div class=\"input-group input-group-sm\">\n\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n\t  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n\t</div>\n\n\t<!-- row -->\n\t<div class=\"row\">\n\t  <div class=\"col-lg-6 in-gp-tl\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"checkbox\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t  <div class=\"col-lg-6 in-gp-tb\">\n\t\t<div class=\"input-group\">\n\t\t  <span class=\"input-group-addon\">\n\t\t\t<input type=\"radio\" aria-label=\"...\">\n\t\t  </span>\n\t\t  <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n\t\t</div><!-- /input-group -->\n\t  </div><!-- /.col-lg-6 -->\n\t</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n<!-- </div> -->\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/userinfo.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>在线考试系统</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Tutelage Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyErricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<script src=\"js/modernizr.custom.js\"></script>\n<!-- fonts -->\n<!-- //fonts -->\n\t<!-- start-smoth-scrolling -->\n\t\t<script type=\"text/javascript\" src=\"js/move-top.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"js/easing.js\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t\t\t});\n\t\t\t});\n\t\t</script>\n\t<!-- start-smoth-scrolling -->\n\n</head>\n<body>\n<!-- header -->\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t    <h1><a class=\"navbar-brand\" href=\"index.html\"><i class=\"glyphicon glyphicon-education\" aria-hidden=\"true\"></i><span>Tute</span>Lage</a></h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"index.html\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2 active\" href=\"userinfo.html\">个人中心</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"scorequery.html\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mybooks.html\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"mypaper.html\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div><!-- /navbar-collapse -->\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<!-- header -->\n<!-- banner -->\n<div class=\"banner page-head\">\n</div>\n<!-- //banner -->\n<div class=\"typrography\">\n\t <div class=\"container\">\n\t\t\n\t <div class=\"grid_3 grid_4\">\n\t\t     <h3 class=\"bars\">Headings</h3>\n\t\t     <div class=\"bs-example\">\n\t\t\t\t <table class=\"table\">\n\t\t\t\t  <tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h1 id=\"h1.-bootstrap-heading\">h1. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h1.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h1></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 36px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h2 id=\"h2.-bootstrap-heading\">h2. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h2.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h2></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 30px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h3 id=\"h3.-bootstrap-heading\">h3. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h3.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h3></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 24px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h4 id=\"h4.-bootstrap-heading\">h4. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h4.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h4></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 18px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h5 id=\"h5.-bootstrap-heading\">h5. Bootstrap heading<a class=\"anchorjs-link\" href=\"#h5.-bootstrap-heading\"><span class=\"anchorjs-icon\"></span></a></h5></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 14px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t  <td><h6>h6. Bootstrap heading</h6></td>\n\t\t\t\t\t  <td class=\"type-info\">Semibold 12px</td>\n\t\t\t\t\t</tr>\n\t\t\t\t  </tbody>\n\t\t\t\t </table>\n\t\t\t </div>\n\t      </div>  \n\t\t  <div class=\"grid_3 grid_5\">\n\t\t\t<h3 class=\"bars\">Buttons</h3>\n\t\t\t \t  <h1 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h1>\n\t\t\t  <h2 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h2>\n\t\t\t  <h3 class=\"t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h3>\n\t\t\t  <h4 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h4>\n\t\t\t  <h5 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h5>\n\t\t\t  <h6 class=\"typ1 t-button\">\n\t\t\t\t<a href=\"#\"><span class=\"label label-default\">Default</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-primary\">Primary</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-success\">Success</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-info\">Info</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-warning\">Warning</span></a>\n\t\t\t\t<a href=\"#\"><span class=\"label label-danger\">Danger</span></a>\n\t\t\t  </h6>\n\t      </div>\n\t\t  <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Progress Bars</h3>\n\t\t\t  <div class=\"tab-content\">\n\t\t\t\t <div class=\"tab-pane active\" id=\"domprogress\">\n\t\t\t\t\t <div class=\"progress\">    \n\t\t\t\t\t      <div class=\"progress-bar progress-bar-primary\" style=\"width: 20%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Info with <code>progress-bar-info</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">    \n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-info\" style=\"width: 60%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Success with <code>progress-bar-success</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 30%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Warning with <code>progress-bar-warning</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 70%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Danger with <code>progress-bar-danger</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 50%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Inverse with <code>progress-bar-inverse</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-inverse\" style=\"width: 40%\"></div>\n\t\t\t\t\t </div>\n\t\t\t\t\t <p>Inverse with <code>progress-bar-inverse</code> class.</p>\n\t\t\t\t\t <div class=\"progress\">\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-success\" style=\"width: 35%\"><span class=\"sr-only\">35% Complete (success)</span></div>\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-warning\" style=\"width: 20%\"><span class=\"sr-only\">20% Complete (warning)</span></div>\n\t\t\t\t\t\t <div class=\"progress-bar progress-bar-danger\" style=\"width: 10%\"><span class=\"sr-only\">10% Complete (danger)</span></div>\n\t\t\t\t\t </div>\n\t\t\t\t   </div>\n\t\t\t   </div>\n\t\t   </div>\n\t\t   \n\t\t   <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Pagination</h3>\n\t\t\t <div class=\"col-md-6\">\n\t\t\t\t  <nav>\n\t\t\t\t  <ul class=\"pagination pagination-lg\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t  </nav>\n\t\t\t\t  <nav>\n\t\t\t\t  <ul class=\"pagination\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t </nav>\n\t\t\t\t <nav>\n\t\t\t\t   <ul class=\"pagination pagination-sm\">\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t  </ul>\n\t\t\t\t </nav>\t\t\t\t \n\t\t\t </div>\n\t\t\t <div class=\"col-md-6\">\n\t\t\t\t\t<ul class=\"pagination pagination-lg\">\n\t\t\t\t\t\t\t\t\t<li class=\"disabled\"><a href=\"#\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t\t\t\t\t<li class=\"active\"><a href=\"#\">1</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t<nav>\n\t\t\t\t  <ul class=\"pagination\">\n\t\t\t\t\t<li class=\"disabled\"><a href=\"#\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li class=\"active\"><a href=\"#\">1 <span class=\"sr-only\">(current)</span></a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t </ul>\n\t\t\t   </nav>\n\t\t\t\t <ul class=\"pagination pagination-sm\">\n\t\t\t\t\t<li class=\"disabled\"><a href=\"#\"><span aria-hidden=\"true\">«</span></a></li>\n\t\t\t\t\t<li class=\"active\"><a href=\"#\">1</a></li>\n\t\t\t\t\t<li><a href=\"#\">2</a></li>\n\t\t\t\t\t<li><a href=\"#\">3</a></li>\n\t\t\t\t\t<li><a href=\"#\">4</a></li>\n\t\t\t\t\t<li><a href=\"#\">5</a></li>\n\t\t\t\t\t<li><a href=\"#\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>\n\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t   <div class=\"clearfix\"> </div>\n\t\t </div>\n\t\t <div class=\"grid_3 grid_5\">\n\t\t\t\t<h3 class=\"bars\">Breadcrumbs</h3>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li class=\"active\">Home</li>\n\t\t\t\t</ol>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t\t<li class=\"active\">Library</li>\n\t\t\t\t</ol>\n\t\t\t\t<ol class=\"breadcrumb\">\n\t\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t\t<li><a href=\"#\">Library</a></li>\n\t\t\t\t\t<li class=\"active\">Data</li>\n\t\t\t\t</ol>\n\t\t\t</div>\n\n\t   <div class=\"grid_3 grid_5\">\n\t\t\t <h3 class=\"bars\">Badges</h3>\n\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t<p>Add modifier classes to change the appearance of a badge.</p>\n\t\t\t\t\t  <table class=\"table table-bordered\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>Classes</th>\n\t\t\t\t\t\t\t\t<th>Badges</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>No modifiers</td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge\">42</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-primary</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-primary\">1</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-success</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-success\">22</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-info</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-info\">30</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-warning</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-warning\">412</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td><code>.badge-danger</code></td>\n\t\t\t\t\t\t\t\t<td><span class=\"badge badge-danger\">999</span></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t  </table>                    \n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t  <p>Easily highlight new or unread items with the <code>.badge</code> class</p>\n\t\t\t\t\t<div class=\"list-group list-group-alternate\"> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">201</span> <i class=\"ti ti-email\"></i> Inbox </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-primary\">5021</span> <i class=\"ti ti-eye\"></i> Profile visits </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">14</span> <i class=\"ti ti-headphone-alt\"></i> Call </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge\">20</span> <i class=\"ti ti-comments\"></i> Messages </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-warning\">14</span> <i class=\"ti ti-bookmark\"></i> Bookmarks </a> \n\t\t\t\t\t\t<a href=\"#\" class=\"list-group-item\"><span class=\"badge badge-danger\">30</span> <i class=\"ti ti-bell\"></i> Notifications </a> \n\t\t\t\t\t</div>\n\t\t\t   </div>\n\t\t\t   <div class=\"clearfix\"> </div>\n\t\t\t </div>\n\t\t\t <div class=\"grid_3 grid_5\">\n\t\t\t\t <h3 class=\"bars\">Tabs</h3>\n\t\t\t\t   <div class=\"bs-example bs-example-tabs\" role=\"tabpanel\" data-example-id=\"togglable-tabs\">\n\t\t\t<ul id=\"myTab\" class=\"nav nav-tabs\" role=\"tablist\">\n\t\t\t  <li role=\"presentation\" class=\"active\"><a href=\"#home\" id=\"home-tab\" role=\"tab\" data-toggle=\"tab\" aria-controls=\"home\" aria-expanded=\"true\">Home</a></li>\n\t\t\t  <li role=\"presentation\"><a href=\"#profile\" role=\"tab\" id=\"profile-tab\" data-toggle=\"tab\" aria-controls=\"profile\">Profile</a></li>\n\t\t\t  <li role=\"presentation\" class=\"dropdown\">\n\t\t\t\t<a href=\"#\" id=\"myTabDrop1\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" aria-controls=\"myTabDrop1-contents\">Dropdown <span class=\"caret\"></span></a>\n\t\t\t\t<ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"myTabDrop1\" id=\"myTabDrop1-contents\">\n\t\t\t\t  <li><a href=\"#dropdown1\" tabindex=\"-1\" role=\"tab\" id=\"dropdown1-tab\" data-toggle=\"tab\" aria-controls=\"dropdown1\">@fat</a></li>\n\t\t\t\t  <li><a href=\"#dropdown2\" tabindex=\"-1\" role=\"tab\" id=\"dropdown2-tab\" data-toggle=\"tab\" aria-controls=\"dropdown2\">@mdo</a></li>\n\t\t\t\t</ul>\n\t\t\t  </li>\n\t\t\t</ul>\n\t\t\t<div id=\"myTabContent\" class=\"tab-content\">\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade in active\" id=\"home\" aria-labelledby=\"home-tab\">\n\t\t\t\t<p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"profile\" aria-labelledby=\"profile-tab\">\n\t\t\t\t<p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"dropdown1\" aria-labelledby=\"dropdown1-tab\">\n\t\t\t\t<p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t\t\t  </div>\n\t\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"dropdown2\" aria-labelledby=\"dropdown2-tab\">\n\t\t\t\t<p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t\t\t  </div>\n\t\t\t</div>\n\t\t   </div>\n\t\t  </div>\n\n  <h3 class=\"bars\">Unordered List</h3>\n\t\t<ul class=\"list-group\">\n\t\t  <li class=\"list-group-item\">Cras justo odio</li>\n\t\t  <li class=\"list-group-item\">Dapibus ac facilisis in</li>\n\t\t  <li class=\"list-group-item\">Morbi leo risus</li>\n\t\t  <li class=\"list-group-item\">Porta ac consectetur ac</li>\n\t\t  <li class=\"list-group-item\">Vestibulum at eros</li>\n\t\t</ul>\n  <h3 class=\"bars\">Ordered List</h3>\n\t\t<ol>\n\t\t\t<li class=\"list-group-item1\">Cras justo odio</li>\n\t\t\t<li class=\"list-group-item1\">Dapibus ac facilisis in</li>\n\t\t\t<li class=\"list-group-item1\">Morbi leo risus</li>\n\t\t\t<li class=\"list-group-item1\">Porta ac consectetur ac</li>\n\t\t\t<li class=\"list-group-item1\">Vestibulum at eros</li>\n\t\t</ol>\n<h3 class=\"bars\">Forms</h3>\n<div class=\"input-group\">\n  <span class=\"input-group-addon\" id=\"basic-addon1\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"basic-addon1\">\n</div>\n\n<div class=\"input-group\">\n  <input type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n  <span class=\"input-group-addon\" id=\"basic-addon2\">@example.com</span>\n</div>\n\n<div class=\"input-group\">\n  <span class=\"input-group-addon\">$</span>\n  <input type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n  <span class=\"input-group-addon\">.00</span>\n</div>\n<div class=\"input-group input-group-lg\">\n  <span class=\"input-group-addon\" id=\"sizing-addon1\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon1\">\n</div>\n\n<div class=\"input-group\">\n  <span class=\"input-group-addon\" id=\"sizing-addon2\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon2\">\n</div>\n\n<div class=\"input-group input-group-sm\">\n  <span class=\"input-group-addon\" id=\"sizing-addon3\">@</span>\n  <input type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-describedby=\"sizing-addon3\">\n</div>\n\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-addon\">\n        <input type=\"checkbox\" aria-label=\"...\">\n      </span>\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <span class=\"input-group-addon\">\n        <input type=\"radio\" aria-label=\"...\">\n      </span>\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n      <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n      </span>\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n<div class=\"row\">\n  <div class=\"col-lg-6 in-gp-tl\">\n    <div class=\"input-group\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n  <div class=\"col-lg-6 in-gp-tb\">\n    <div class=\"input-group\">\n      <input type=\"text\" class=\"form-control\" aria-label=\"...\">\n      <div class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Action <span class=\"caret\"></span></button>\n        <ul class=\"dropdown-menu dropdown-menu-right\">\n          <li><a href=\"#\">Action</a></li>\n          <li><a href=\"#\">Another action</a></li>\n          <li><a href=\"#\">Something else here</a></li>\n          <li role=\"separator\" class=\"divider\"></li>\n          <li><a href=\"#\">Separated link</a></li>\n        </ul>\n      </div><!-- /btn-group -->\n    </div><!-- /input-group -->\n  </div><!-- /.col-lg-6 -->\n</div><!-- /.row -->\n\n\t\t<section id=\"tables\">\n          <div class=\"page-header\">\n            <h3>Tables</h3>\n          </div>\n\n          <h2>Default styles</h2>\n          <p>For basic stylinglight padding and only horizontal add the base class <code>.table</code> to any <code>&lt;table&gt;</code>.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td>Larry</td>\n                  <td>the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n\t<hr class=\"bs-docs-separator\">\n          <p>Add any of the following classes to the <code>.table</code> base class.</p>\n          <p>Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-striped\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td>Larry</td>\n                  <td>the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <p>Add borders and rounded corners to the table.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-bordered\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td rowspan=\"2\">1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@getbootstrap</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td colspan=\"2\">Larry the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <p>Enable a hover state on table rows within a <code>&lt;tbody&gt;</code>.</p>\n          <div class=\"bs-docs-example\">\n            <table class=\"table table-hover\">\n              <thead>\n                <tr>\n                  <th>#</th>\n                  <th>First Name</th>\n                  <th>Last Name</th>\n                  <th>Username</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td>1</td>\n                  <td>Mark</td>\n                  <td>Otto</td>\n                  <td>@mdo</td>\n                </tr>\n                <tr>\n                  <td>2</td>\n                  <td>Jacob</td>\n                  <td>Thornton</td>\n                  <td>@fat</td>\n                </tr>\n                <tr>\n                  <td>3</td>\n                  <td colspan=\"2\">Larry the Bird</td>\n                  <td>@twitter</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n\t\t</section>\n\t</div>\n</div>\n\n<!--//typo-->\n\n<!-- footer -->\n<div class=\"footer\">\n\t<div class=\"container\">\n\t\t<div class=\"footer-grids\">\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>高效</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">组卷快</a></li>\n\t\t\t\t\t<li><a href=\"#\">评分快</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>简洁</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">界面美观</a></li>\n\t\t\t\t\t<li><a href=\"#\">操作简单</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>方便</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">流程简单</a></li>\n\t\t\t\t\t<li><a href=\"#\">一站式体验</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-3 footer-grid\">\n\t\t\t\t<h3>准确</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">考点清晰</a></li>\n\t\t\t\t\t<li><a href=\"#\">评卷准确</a></li>\n\t\t\t\t\t<li><a href=\"#\">错误率低</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"></div>\n\t\t</div>\n\t\t<p>Copyright &copy; 2015.Company name All rights reserved.More Templates </p>\n\t</div>\n</div>\n<!-- //footer -->\n<!-- for bootstrap working -->\n\t<script src=\"js/bootstrap.js\"></script>\n<!-- //for bootstrap working -->\n<!-- smooth scrolling -->\n\t<script type=\"text/javascript\">\n\t\t$(document).ready(function() {\n\t\t/*\n\t\t\tvar defaults = {\n\t\t\tcontainerID: 'toTop', // fading element id\n\t\t\tcontainerHoverID: 'toTopHover', // fading element hover id\n\t\t\tscrollSpeed: 1200,\n\t\t\teasingType: 'linear' \n\t\t\t};\n\t\t*/\t\t\t\t\t\t\t\t\n\t\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t\t});\n\t</script>\n\t<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n<!-- //smooth scrolling -->\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/pages/user/userinfo.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>在线考试系统</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<script type=\"application/x-javascript\"> \n\taddEventListener(\"load\", function() { \n\t\tsetTimeout(hideURLbar, 0); \n\t}, false);\n\tfunction hideURLbar(){ \n\t\twindow.scrollTo(0,1); \n\t} \n</script>\n<link href=\"${ctx}/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"${ctx}/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<script src=\"${ctx}/js/jquery-1.11.1.min.js\"></script>\n<script src=\"${ctx}/js/modernizr.custom.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/move-top.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/js/easing.js\"></script>\n<script type=\"text/javascript\">\n\tjQuery(document).ready(function($) {\n\t\t$(\".scroll\").click(function(event){\t\t\n\t\t\tevent.preventDefault();\n\t\t\t$('html,body').animate({scrollTop:$(this.hash).offset().top},1000);\n\t\t});\n\t});\n</script>\n</head>\n<body>\n<div class=\"header\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"header-nav\">\n\t\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t\t\t<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t   \t<h3><span>欢迎您，<font color=\"blue\">${userName }</font> 同学</span></h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/user/toIndex.action?userId=${user.userId}\">首页</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2  active\" href=\"${ctx}/toUserInfo.action?userId=${user.userId}\">个人中心</a></li>\n\t\t\t\t\t\t\t<!-- <li><a class=\"hvr-overline-from-center button2\" href=\"onlinecheck.html\">在线考试</a></li> -->\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toScoreQry.action?userId=${user.userId}\">成绩查询</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyBooksPage.action?userId=${user.userId}\">我的错题本</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"${ctx}/toMyPaperPage.action?userId=${user.userId}\">我的试卷</a></li>\n\t\t\t\t\t\t\t<li><a class=\"hvr-overline-from-center button2\" href=\"about.html\">关于</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div class=\"search-box\">\n\t\t\t\t\t\t\t<div id=\"sb-search\" class=\"sb-search\">\n\t\t\t\t\t\t\t\t<span class=\"sb-icon-search\" onclick=\"exitSystem()\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n</div>\n<div class=\"container\">\n\t<form action=\"${ctx}/updateUserInfo.action\" method=\"post\" name=\"myform\" id=\"myform\">\n\t<div class=\"bs-example bs-example-tabs\" role=\"tabpanel\" data-example-id=\"togglable-tabs\">\n\t\t<ul id=\"myTab\" class=\"nav nav-tabs\" role=\"tablist\">\n\t\t  <li role=\"presentation\" class=\"active\"><a href=\"#home\" id=\"home-tab\" role=\"tab\" data-toggle=\"tab\" aria-controls=\"home\" aria-expanded=\"true\" onclick=\"userInfo()\">个人信息</a></li>\n\t\t  <li role=\"presentation\"><a href=\"#profile\" role=\"tab\" id=\"profile-tab\" data-toggle=\"tab\" aria-controls=\"profile\" onclick=\"updatePwd()\">修改密码</a></li>\n\t\t</ul>\n\t\t<div id=\"myTabContent\" class=\"tab-content\">\n\t\t  <div role=\"tabpanel\" class=\"tab-pane fade in active\" id=\"home\" aria-labelledby=\"home-tab\">\n\t\t  \t<input type=\"hidden\" id=\"userState\" name=\"userState\" value=\"${user.userState }\"/>\n\t\t  \t<input type=\"hidden\" id=\"userType\" name=\"userType\" value=\"${user.userType }\"/>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">用户账号：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"userId\" name=\"userId\" value=\"${user.userId }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">用户昵称：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"userName\" name=\"userName\" value=\"${user.userName }\"/>\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;级：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"grade\" name=\"grade\" value=\"${user.grade }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">常用邮箱：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\"\n\t\t\t  \t\tid=\"email\" name=\"email\" value=\"${user.email }\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">联系电话：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\" \n\t\t\t  \t\tid=\"telephone\" name=\"telephone\" value=\"${user.telephone }\">\n\t\t\t</div>\n\t\t\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"sizing-addon3\">家庭地址：</span>\n\t\t\t  <input type=\"text\" class=\"form-control\"\n\t\t\t  \t\tid=\"address\" name=\"address\" value=\"${user.address }\">\n\t\t\t</div>\n\t\t  </div>\n\t\t  <div role=\"tabpanel\" class=\"tab-pane fade\" id=\"profile\" aria-labelledby=\"profile-tab\">\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">原&nbsp;密&nbsp;码&nbsp;：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\" name=\"userPwd\" id=\"userPwd\"\n\t\t\t  \t\tvalue=\"${user.userPwd }\" readonly=\"readonly\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">新&nbsp;密&nbsp;码&nbsp;：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\"\n\t\t\t  \t\tid=\"pwd\" name=\"pwd\" value=\"\">\n\t\t\t</div>\n\t\t\t<div class=\"input-group\">\n\t\t\t  <span class=\"input-group-addon\" id=\"basic-addon1\">重复密码：</span>\n\t\t\t  <input type=\"password\" class=\"form-control\"\n\t\t\t  \t\tid=\"newPwd\" name=\"newPwd\" value=\"\">\n\t\t\t</div>\n\t\t</div>\n\t </div>\n\t</form>\n\t<h3 class=\"t-button\">\n\t\t<a href=\"javascript:;\"><span class=\"label label-success\" onclick=\"update()\">&nbsp;更&nbsp;新&nbsp;</span></a>\n\t\t<a href=\"${ctx}/user/toIndex.action\"><span class=\"label label-info\">返回首页</span></a>\n\t</h3>\n</div>\n<script src=\"${ctx}/js/bootstrap.js\"></script>\n<script type=\"text/javascript\">\n\t$(document).ready(function() {\n\t$().UItoTop({ easingType: 'easeOutQuart' });\n\t});\n\t\n\tfunction update(){\n\t\tvar pwd = $(\"#pwd\").val();\n\t\tvar newPwd = $(\"#newPwd\").val();\n\t\tif(pwd!= newPwd){\n\t\t\talert(\"两次密码不一致，请重新输入!\");\n\t\t\treturn;\n\t\t}\n\t\tdocument.myform.attributes[\"action\"].value = \"${ctx}/updateUserInfo.action\"; \n\t\t$(\"form\").submit();\n\t}\n\t\n\t//用户信息tab\n\tfunction userInfo(){\n\t\tdocument.getElementById(\"myform\").reset(); \n\t}\n\t\n\t//密码tab\n\tfunction updatePwd(){\n\t\tdocument.getElementById(\"myform\").reset(); \n\t}\n\t\n</script>\n<a href=\"#\" id=\"toTop\" style=\"display: block;\"> <span id=\"toTopHover\" style=\"opacity: 1;\"> </span></a>\n\n</body>\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/WEB-INF/web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n\txsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd\"\n\tid=\"WebApp_ID\" version=\"3.0\">\n\t<display-name>Check</display-name>\n\t<!-- 配置编码过滤器 -->\n\t<filter>\n\t\t<filter-name>encodingFilter</filter-name>\n\t\t<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n\t\t<init-param>\n\t\t\t<param-name>encoding</param-name>\n\t\t\t<param-value>UTF-8</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>forceEncoding</param-name>\n\t\t\t<param-value>true</param-value>\n\t\t</init-param>\n\t</filter>\n\t<filter-mapping>\n\t\t<filter-name>encodingFilter</filter-name>\n\t\t<url-pattern>/*</url-pattern>\n\t</filter-mapping>\n\t\n\t<!-- spring整合 -->\n\t<context-param>\n\t\t<param-name>contextConfigLocation</param-name>\n\t\t<param-value>classpath:beans.xml</param-value>\n\t</context-param>\n\t<listener>\n\t\t<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n\t</listener>\n\n\t<!-- 加载springMVC servlet -->\n\t<servlet>\n\t\t<servlet-name>spingmvc</servlet-name>\n\t\t<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n\t\t<init-param>\n\t\t\t<param-name>contextConfigLocation</param-name>\n\t\t\t<param-value>classpath:springmvc-servlet.xml</param-value>\n\t\t</init-param>\n\t</servlet>\n\t<servlet-mapping>\n\t\t<servlet-name>spingmvc</servlet-name>\n\t\t<url-pattern>*.action</url-pattern>\n\t</servlet-mapping>\n</web-app>"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/amcharts_key.txt",
    "content": "AMCHART-LNKS-1966-6679-1965-1082"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/amcolumn_data.txt",
    "content": "USA;4.2;3.5\nUK;3.1;1.7\nCanada;2.9;2.8\nJapan;2.3;2.6\nFrance;2.1;1.4\nBrazil;4.9;2.6\nRussia;7.2;6.4\nIndia;7.4;8.0\nChina;10.1;9.9  \n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/amcolumn_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!-- <message bg_color=\"#BBBB00\" text_color=\"#FFFFFF\"><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"100\">1950</value>\n\t\t<value xid=\"101\">1951</value>\n\t\t<value xid=\"102\">1952</value>\n\t\t<value xid=\"103\">1953</value>\n\t\t<value xid=\"104\">1954</value>\n\t\t<value xid=\"105\">1955</value>\n\t\t<value xid=\"106\">1956</value>\n\t\t<value xid=\"107\">1957</value>\n\t\t<value xid=\"108\">1958</value>\n\t\t<value xid=\"109\">1959</value>\n\t\t<value xid=\"110\">1960</value>\n\t\t<value xid=\"111\">1961</value>\n\t\t<value xid=\"112\">1962</value>\n\t\t<value xid=\"113\">1963</value>\n\t\t<value xid=\"114\">1964</value>\n\t\t<value xid=\"115\">1965</value>\n\t\t<value xid=\"116\">1966</value>\n\t\t<value xid=\"117\">1967</value>\n\t\t<value xid=\"118\">1968</value>\n\t\t<value xid=\"119\">1969</value>\n\t\t<value xid=\"120\">1970</value>\n\t\t<value xid=\"121\">1971</value>\n\t\t<value xid=\"122\">1972</value>\n\t\t<value xid=\"123\">1973</value>\n\t\t<value xid=\"124\">1974</value>\n\t\t<value xid=\"125\">1975</value>\n\t\t<value xid=\"126\">1976</value>\n\t\t<value xid=\"127\">1977</value>\n\t\t<value xid=\"128\">1978</value>\n\t\t<value xid=\"129\">1979</value>\n\t\t<value xid=\"130\">1980</value>\n\t\t<value xid=\"131\">1981</value>\n\t\t<value xid=\"132\">1982</value>\n\t\t<value xid=\"133\">1983</value>\n\t\t<value xid=\"134\">1984</value>\n\t\t<value xid=\"135\">1985</value>\n\t\t<value xid=\"136\">1986</value>\n\t\t<value xid=\"137\">1987</value>\n\t\t<value xid=\"138\">1988</value>\n\t\t<value xid=\"139\">1989</value>\n\t\t<value xid=\"140\">1990</value>\n\t\t<value xid=\"141\">1991</value>\n\t\t<value xid=\"142\">1992</value>\n\t\t<value xid=\"143\">1993</value>\n\t\t<value xid=\"144\">1994</value>\n\t\t<value xid=\"145\">1995</value>\n\t\t<value xid=\"146\">1996</value>\n\t\t<value xid=\"147\">1997</value>\n\t\t<value xid=\"148\">1998</value>\n\t\t<value xid=\"149\">1999</value>\n\t\t<value xid=\"150\">2000</value>\n\t\t<value xid=\"151\">2001</value>\n\t\t<value xid=\"152\">2002</value>\n\t\t<value xid=\"153\">2003</value>\n\t\t<value xid=\"154\">2004</value>\n\t\t<value xid=\"155\">2005</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"100\" color=\"#318DBD\">-0.307</value>\n\t\t\t<value xid=\"101\" color=\"#318DBD\">-0.168</value>\n\t\t\t<value xid=\"102\" color=\"#318DBD\">-0.073</value>\n\t\t\t<value xid=\"103\" color=\"#318DBD\">-0.027</value>\n\t\t\t<value xid=\"104\" color=\"#318DBD\">-0.251</value>\n\t\t\t<value xid=\"105\" color=\"#318DBD\">-0.281</value>\n\t\t\t<value xid=\"106\" color=\"#318DBD\">-0.348</value>\n\t\t\t<value xid=\"107\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"108\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"109\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"110\" color=\"#318DBD\">-0.124</value>\n\t\t\t<value xid=\"111\" color=\"#318DBD\">-0.024</value>\n\t\t\t<value xid=\"112\" color=\"#318DBD\">-0.022</value>\n\t\t\t<value xid=\"113\">0.000</value>\n\t\t\t<value xid=\"114\" color=\"#318DBD\">-0.296</value>\n\t\t\t<value xid=\"115\" color=\"#318DBD\">-0.217</value>\n\t\t\t<value xid=\"116\" color=\"#318DBD\">-0.147</value>\n\t\t\t<value xid=\"117\" color=\"#318DBD\">-0.150</value>\n\t\t\t<value xid=\"118\" color=\"#318DBD\">-0.160</value>\n\t\t\t<value xid=\"119\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"120\" color=\"#318DBD\">-0.068</value>\n\t\t\t<value xid=\"121\" color=\"#318DBD\">-0.190</value>\n\t\t\t<value xid=\"122\" color=\"#318DBD\">-0.056</value>\n\t\t\t<value xid=\"123\">0.077</value>\n\t\t\t<value xid=\"124\" color=\"#318DBD\">-0.213</value>\n\t\t\t<value xid=\"125\" color=\"#318DBD\">-0.170</value>\n\t\t\t<value xid=\"126\" color=\"#318DBD\">-0.254</value>\n\t\t\t<value xid=\"127\">0.019</value>\n\t\t\t<value xid=\"128\" color=\"#318DBD\">-0.063</value>\n\t\t\t<value xid=\"129\">0.050</value>\n\t\t\t<value xid=\"130\">0.077</value>\n\t\t\t<value xid=\"131\">0.120</value>\n\t\t\t<value xid=\"132\">0.011</value>\n\t\t\t<value xid=\"133\">0.177</value>\n\t\t\t<value xid=\"134\" color=\"#318DBD\">-0.021</value>\n\t\t\t<value xid=\"135\" color=\"#318DBD\">-0.037</value>\n\t\t\t<value xid=\"136\">0.030</value>\n\t\t\t<value xid=\"137\">0.179</value>\n\t\t\t<value xid=\"138\">0.180</value>\n\t\t\t<value xid=\"139\">0.104</value>\n\t\t\t<value xid=\"140\">0.255</value>\n\t\t\t<value xid=\"141\">0.210</value>\n\t\t\t<value xid=\"142\">0.065</value>\n\t\t\t<value xid=\"143\">0.110</value>\n\t\t\t<value xid=\"144\">0.172</value>\n\t\t\t<value xid=\"145\">0.269</value>\n\t\t\t<value xid=\"146\">0.141</value>\n\t\t\t<value xid=\"147\">0.353</value>\n\t\t\t<value xid=\"148\">0.548</value>\n\t\t\t<value xid=\"149\">0.298</value>\n\t\t\t<value xid=\"150\">0.267</value>\n\t\t\t<value xid=\"151\">0.411</value>\n\t\t\t<value xid=\"152\">0.462</value>\n\t\t\t<value xid=\"153\">0.470</value>\n\t\t\t<value xid=\"154\">0.445</value>\n\t\t\t<value xid=\"155\">0.470</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"100\">-0.171</value>\n\t\t\t<value xid=\"101\">-0.175</value>\n\t\t\t<value xid=\"102\">-0.176</value>\n\t\t\t<value xid=\"103\">-0.174</value>\n\t\t\t<value xid=\"104\">-0.169</value>\n\t\t\t<value xid=\"105\">-0.162</value>\n\t\t\t<value xid=\"106\">-0.151</value>\n\t\t\t<value xid=\"107\">-0.139</value>\n\t\t\t<value xid=\"108\">-0.125</value>\n\t\t\t<value xid=\"109\">-0.114</value>\n\t\t\t<value xid=\"110\">-0.106</value>\n\t\t\t<value xid=\"111\">-0.104</value>\n\t\t\t<value xid=\"112\">-0.108</value>\n\t\t\t<value xid=\"113\">-0.114</value>\n\t\t\t<value xid=\"114\">-0.120</value>\n\t\t\t<value xid=\"115\">-0.125</value>\n\t\t\t<value xid=\"116\">-0.127</value>\n\t\t\t<value xid=\"117\">-0.125</value>\n\t\t\t<value xid=\"118\">-0.120</value>\n\t\t\t<value xid=\"119\">-0.114</value>\n\t\t\t<value xid=\"120\">-0.108</value>\n\t\t\t<value xid=\"121\">-0.104</value>\n\t\t\t<value xid=\"122\">-0.100</value>\n\t\t\t<value xid=\"123\">-0.097</value>\n\t\t\t<value xid=\"124\">-0.091</value>\n\t\t\t<value xid=\"125\">-0.082</value>\n\t\t\t<value xid=\"126\">-0.068</value>\n\t\t\t<value xid=\"127\">-0.050</value>\n\t\t\t<value xid=\"128\">-0.028</value>\n\t\t\t<value xid=\"129\">-0.006</value>\n\t\t\t<value xid=\"130\">0.015</value>\n\t\t\t<value xid=\"131\">0.032</value>\n\t\t\t<value xid=\"132\">0.046</value>\n\t\t\t<value xid=\"133\">0.058</value>\n\t\t\t<value xid=\"134\">0.069</value>\n\t\t\t<value xid=\"135\">0.081</value>\n\t\t\t<value xid=\"136\">0.094</value>\n\t\t\t<value xid=\"137\">0.108</value>\n\t\t\t<value xid=\"138\">0.123</value>\n\t\t\t<value xid=\"139\">0.137</value>\n\t\t\t<value xid=\"140\">0.150</value>\n\t\t\t<value xid=\"141\">0.163</value>\n\t\t\t<value xid=\"142\">0.178</value>\n\t\t\t<value xid=\"143\">0.195</value>\n\t\t\t<value xid=\"144\">0.216</value>\n\t\t\t<value xid=\"145\">0.241</value>\n\t\t\t<value xid=\"146\">0.268</value>\n\t\t\t<value xid=\"147\">0.296</value>\n\t\t\t<value xid=\"148\">0.323</value>\n\t\t\t<value xid=\"149\">0.348</value>\n\t\t\t<value xid=\"150\">0.370</value>\n\t\t\t<value xid=\"151\">0.389</value>\n\t\t\t<value xid=\"152\">0.404</value>\n\t\t\t<value xid=\"153\">0.415</value>\n\t\t\t<value xid=\"154\">0.422</value>\n\t\t\t<value xid=\"155\">0.426</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/amcolumn_data333.txt",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!-- <message bg_color=\"#BBBB00\" text_color=\"#FFFFFF\"><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"100\">1950</value>\n\t\t<value xid=\"101\">1951</value>\n\t\t<value xid=\"102\">1952</value>\n\t\t<value xid=\"103\">1953</value>\n\t\t<value xid=\"104\">1954</value>\n\t\t<value xid=\"105\">1955</value>\n\t\t<value xid=\"106\">1956</value>\n\t\t<value xid=\"107\">1957</value>\n\t\t<value xid=\"108\">1958</value>\n\t\t<value xid=\"109\">1959</value>\n\t\t<value xid=\"110\">1960</value>\n\t\t<value xid=\"111\">1961</value>\n\t\t<value xid=\"112\">1962</value>\n\t\t<value xid=\"113\">1963</value>\n\t\t<value xid=\"114\">1964</value>\n\t\t<value xid=\"115\">1965</value>\n\t\t<value xid=\"116\">1966</value>\n\t\t<value xid=\"117\">1967</value>\n\t\t<value xid=\"118\">1968</value>\n\t\t<value xid=\"119\">1969</value>\n\t\t<value xid=\"120\">1970</value>\n\t\t<value xid=\"121\">1971</value>\n\t\t<value xid=\"122\">1972</value>\n\t\t<value xid=\"123\">1973</value>\n\t\t<value xid=\"124\">1974</value>\n\t\t<value xid=\"125\">1975</value>\n\t\t<value xid=\"126\">1976</value>\n\t\t<value xid=\"127\">1977</value>\n\t\t<value xid=\"128\">1978</value>\n\t\t<value xid=\"129\">1979</value>\n\t\t<value xid=\"130\">1980</value>\n\t\t<value xid=\"131\">1981</value>\n\t\t<value xid=\"132\">1982</value>\n\t\t<value xid=\"133\">1983</value>\n\t\t<value xid=\"134\">1984</value>\n\t\t<value xid=\"135\">1985</value>\n\t\t<value xid=\"136\">1986</value>\n\t\t<value xid=\"137\">1987</value>\n\t\t<value xid=\"138\">1988</value>\n\t\t<value xid=\"139\">1989</value>\n\t\t<value xid=\"140\">1990</value>\n\t\t<value xid=\"141\">1991</value>\n\t\t<value xid=\"142\">1992</value>\n\t\t<value xid=\"143\">1993</value>\n\t\t<value xid=\"144\">1994</value>\n\t\t<value xid=\"145\">1995</value>\n\t\t<value xid=\"146\">1996</value>\n\t\t<value xid=\"147\">1997</value>\n\t\t<value xid=\"148\">1998</value>\n\t\t<value xid=\"149\">1999</value>\n\t\t<value xid=\"150\">2000</value>\n\t\t<value xid=\"151\">2001</value>\n\t\t<value xid=\"152\">2002</value>\n\t\t<value xid=\"153\">2003</value>\n\t\t<value xid=\"154\">2004</value>\n\t\t<value xid=\"155\">2005</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"100\" color=\"#318DBD\">-0.307</value>\n\t\t\t<value xid=\"101\" color=\"#318DBD\">-0.168</value>\n\t\t\t<value xid=\"102\" color=\"#318DBD\">-0.073</value>\n\t\t\t<value xid=\"103\" color=\"#318DBD\">-0.027</value>\n\t\t\t<value xid=\"104\" color=\"#318DBD\">-0.251</value>\n\t\t\t<value xid=\"105\" color=\"#318DBD\">-0.281</value>\n\t\t\t<value xid=\"106\" color=\"#318DBD\">-0.348</value>\n\t\t\t<value xid=\"107\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"108\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"109\" color=\"#318DBD\">-0.074</value>\n\t\t\t<value xid=\"110\" color=\"#318DBD\">-0.124</value>\n\t\t\t<value xid=\"111\" color=\"#318DBD\">-0.024</value>\n\t\t\t<value xid=\"112\" color=\"#318DBD\">-0.022</value>\n\t\t\t<value xid=\"113\">0.000</value>\n\t\t\t<value xid=\"114\" color=\"#318DBD\">-0.296</value>\n\t\t\t<value xid=\"115\" color=\"#318DBD\">-0.217</value>\n\t\t\t<value xid=\"116\" color=\"#318DBD\">-0.147</value>\n\t\t\t<value xid=\"117\" color=\"#318DBD\">-0.150</value>\n\t\t\t<value xid=\"118\" color=\"#318DBD\">-0.160</value>\n\t\t\t<value xid=\"119\" color=\"#318DBD\">-0.011</value>\n\t\t\t<value xid=\"120\" color=\"#318DBD\">-0.068</value>\n\t\t\t<value xid=\"121\" color=\"#318DBD\">-0.190</value>\n\t\t\t<value xid=\"122\" color=\"#318DBD\">-0.056</value>\n\t\t\t<value xid=\"123\">0.077</value>\n\t\t\t<value xid=\"124\" color=\"#318DBD\">-0.213</value>\n\t\t\t<value xid=\"125\" color=\"#318DBD\">-0.170</value>\n\t\t\t<value xid=\"126\" color=\"#318DBD\">-0.254</value>\n\t\t\t<value xid=\"127\">0.019</value>\n\t\t\t<value xid=\"128\" color=\"#318DBD\">-0.063</value>\n\t\t\t<value xid=\"129\">0.050</value>\n\t\t\t<value xid=\"130\">0.077</value>\n\t\t\t<value xid=\"131\">0.120</value>\n\t\t\t<value xid=\"132\">0.011</value>\n\t\t\t<value xid=\"133\">0.177</value>\n\t\t\t<value xid=\"134\" color=\"#318DBD\">-0.021</value>\n\t\t\t<value xid=\"135\" color=\"#318DBD\">-0.037</value>\n\t\t\t<value xid=\"136\">0.030</value>\n\t\t\t<value xid=\"137\">0.179</value>\n\t\t\t<value xid=\"138\">0.180</value>\n\t\t\t<value xid=\"139\">0.104</value>\n\t\t\t<value xid=\"140\">0.255</value>\n\t\t\t<value xid=\"141\">0.210</value>\n\t\t\t<value xid=\"142\">0.065</value>\n\t\t\t<value xid=\"143\">0.110</value>\n\t\t\t<value xid=\"144\">0.172</value>\n\t\t\t<value xid=\"145\">0.269</value>\n\t\t\t<value xid=\"146\">0.141</value>\n\t\t\t<value xid=\"147\">0.353</value>\n\t\t\t<value xid=\"148\">0.548</value>\n\t\t\t<value xid=\"149\">0.298</value>\n\t\t\t<value xid=\"150\">0.267</value>\n\t\t\t<value xid=\"151\">0.411</value>\n\t\t\t<value xid=\"152\">0.462</value>\n\t\t\t<value xid=\"153\">0.470</value>\n\t\t\t<value xid=\"154\">0.445</value>\n\t\t\t<value xid=\"155\">0.470</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"100\">-0.171</value>\n\t\t\t<value xid=\"101\">-0.175</value>\n\t\t\t<value xid=\"102\">-0.176</value>\n\t\t\t<value xid=\"103\">-0.174</value>\n\t\t\t<value xid=\"104\">-0.169</value>\n\t\t\t<value xid=\"105\">-0.162</value>\n\t\t\t<value xid=\"106\">-0.151</value>\n\t\t\t<value xid=\"107\">-0.139</value>\n\t\t\t<value xid=\"108\">-0.125</value>\n\t\t\t<value xid=\"109\">-0.114</value>\n\t\t\t<value xid=\"110\">-0.106</value>\n\t\t\t<value xid=\"111\">-0.104</value>\n\t\t\t<value xid=\"112\">-0.108</value>\n\t\t\t<value xid=\"113\">-0.114</value>\n\t\t\t<value xid=\"114\">-0.120</value>\n\t\t\t<value xid=\"115\">-0.125</value>\n\t\t\t<value xid=\"116\">-0.127</value>\n\t\t\t<value xid=\"117\">-0.125</value>\n\t\t\t<value xid=\"118\">-0.120</value>\n\t\t\t<value xid=\"119\">-0.114</value>\n\t\t\t<value xid=\"120\">-0.108</value>\n\t\t\t<value xid=\"121\">-0.104</value>\n\t\t\t<value xid=\"122\">-0.100</value>\n\t\t\t<value xid=\"123\">-0.097</value>\n\t\t\t<value xid=\"124\">-0.091</value>\n\t\t\t<value xid=\"125\">-0.082</value>\n\t\t\t<value xid=\"126\">-0.068</value>\n\t\t\t<value xid=\"127\">-0.050</value>\n\t\t\t<value xid=\"128\">-0.028</value>\n\t\t\t<value xid=\"129\">-0.006</value>\n\t\t\t<value xid=\"130\">0.015</value>\n\t\t\t<value xid=\"131\">0.032</value>\n\t\t\t<value xid=\"132\">0.046</value>\n\t\t\t<value xid=\"133\">0.058</value>\n\t\t\t<value xid=\"134\">0.069</value>\n\t\t\t<value xid=\"135\">0.081</value>\n\t\t\t<value xid=\"136\">0.094</value>\n\t\t\t<value xid=\"137\">0.108</value>\n\t\t\t<value xid=\"138\">0.123</value>\n\t\t\t<value xid=\"139\">0.137</value>\n\t\t\t<value xid=\"140\">0.150</value>\n\t\t\t<value xid=\"141\">0.163</value>\n\t\t\t<value xid=\"142\">0.178</value>\n\t\t\t<value xid=\"143\">0.195</value>\n\t\t\t<value xid=\"144\">0.216</value>\n\t\t\t<value xid=\"145\">0.241</value>\n\t\t\t<value xid=\"146\">0.268</value>\n\t\t\t<value xid=\"147\">0.296</value>\n\t\t\t<value xid=\"148\">0.323</value>\n\t\t\t<value xid=\"149\">0.348</value>\n\t\t\t<value xid=\"150\">0.370</value>\n\t\t\t<value xid=\"151\">0.389</value>\n\t\t\t<value xid=\"152\">0.404</value>\n\t\t\t<value xid=\"153\">0.415</value>\n\t\t\t<value xid=\"154\">0.422</value>\n\t\t\t<value xid=\"155\">0.426</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/amcolumn_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <type>column</type>                                         <!-- [column] (column / bar) -->\n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Tahoma</font>                                         <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- this function is beta, be careful. Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <depth>0</depth>                                            <!-- [0] (Number) the depth of chart and columns (for 3D effect) -->\n  <angle>0</angle>                                            <!-- [30] (0 - 90) angle of chart area and columns (for 3D effect) -->\n  <colors></colors>                                           <!-- [#FF6600,#FCD202,#B0DE09,#0D8ECF,#2A0CD0,#CD0D74,#CC0000,#00CC00,#0000CC,#DDDDDD,#999999,#333333,#990000] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->  \n    \n  <column>\n    <type></type>                                             <!-- [clustered] (clustered, stacked, 100% stacked, 3d column) -->\n    <width>85</width>                                         <!-- [80] (0 - 100) width of column (in percents)  -->\n    <spacing>0</spacing>                                      <!-- [5] (Number) space between columns of one category axis value, in pixels. Negative values can be used. -->\n    <grow_time>3</grow_time>                                  <!-- [0] (Number) grow time in seconds. Leave 0 to appear instantly -->\n    <grow_effect></grow_effect>                               <!-- [elastic] (elastic, regular, strong) -->\n    <sequenced_grow>true</sequenced_grow>                     <!-- [false] (true / false) whether columns should grow at the same time or one after another -->    \n    <alpha></alpha>                                           <!-- [100] (Number) alpha of all columns -->\n    <border_color></border_color>                             <!-- [#FFFFFF] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (Number) -->\n    <data_labels>\n      <![CDATA[]]>                                            <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </data_labels>\n    <data_labels_text_color></data_labels_text_color>         <!-- [text_color] (hex color code) --> \n    <data_labels_text_size></data_labels_text_size>           <!-- [text_size] (Number) -->\n    <data_labels_position></data_labels_position>             <!-- [outside] (inside, outside, above). This setting is only for clustered chart. --> \n                                                              <!-- if you set \"above\" for column chart, the data label will be displayed inside column, rotated  by 90 degrees -->\n    <data_labels_always_on></data_labels_always_on>           <!-- [false] (true / false) If the data label is placed inside of the bar or column (stacked chart) and the bar or column is too small for the label to fit, it is hidden. If you set this setting to \"true\", the data labels will always be visible. -->\n    <balloon_text>                                                    \n     <![CDATA[]]>                                             <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </balloon_text>    \n    <link_target></link_target>                               <!-- [] (_blank, _top ...) -->\n    <gradient></gradient>                                     <!-- [vertical] (horizontal / vertical) Direction of column gradient. Gradient colors are defined in graph settings below. -->\n    <bullet_offset></bullet_offset>                           <!-- [0] (Number) distance from column / bar to the bullet -->\n    <hover_brightness></hover_brightness>                     <!-- [0] (from -255 to 255) The column may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <hover_color>#EED600</hover_color>                        <!-- [] (hex color code) -->\n    <corner_radius_top></corner_radius_top>                   <!-- [0] (Number, Number%) Corner radius of the column's top. Works only if depth is = 0 -->\n    <corner_radius_bottom></corner_radius_bottom>             <!-- [0] (Number, Number%) Corner radius of the column's bottom. Works only if depth is = 0 -->             \n  </column>\n  \n  <line>                                                      <!-- Here are general settings for \"line\" graph type. You can set most of these settings for individual lines in graph settings below -->\n    <connect></connect>                                       <!-- [false] (true / false) whether to connect points if data is missing -->\n    <width></width>                                           <!-- [2] (Number) line width -->\n    <alpha></alpha>                                           <!-- [100] (Number) line alpha -->\n    <fill_alpha></fill_alpha>                                 <!-- [0] (Number) fill alpha -->\n    <bullet></bullet>                                         <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n    <bullet_size></bullet_size>                               <!-- [8] (Number) bullet size -->\n    <data_labels>\n       <![CDATA[]]>                                           <!-- [] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n    </data_labels>\n    <data_labels_text_color></data_labels_text_color>         <!-- [text_color] (hex color code) --> \n    <data_labels_text_size></data_labels_text_size>           <!-- [text_size] (Number) -->\n    <balloon_text>                                                    \n      <![CDATA[]]>                                            <!-- [] use the same formatting rules as for data labels -->\n    </balloon_text>      \n    <link_target></link_target>                               <!-- [] (_blank, _top ...) -->\n  </line>\n    \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha>15</border_alpha>                           <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->                                            \n    <margins>                                                 <!-- plot area margins -->\n      <left>70</left>                                         <!-- [60](Number / Number%) --> \n      <top>60</top>                                           <!-- [60](Number / Number%) --> \n      <right>50</right>                                       <!-- [60](Number / Number%) -->\n      <bottom>80</bottom>                                     <!-- [80](Number / Number%) -->\n    </margins>\n  </plot_area>\n  \n  <grid>                                                      <!-- GRID -->\n    <category>                                                <!-- category axis grid -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n    </category>\n    <value>                                                   <!-- value axis grid -->      \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color>000000</fill_color>                         <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha>5</fill_alpha>                              <!-- [0] (0 - 100) opacity of fill -->\n    </value>\n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <category>                                                <!-- category axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <frequency>3</frequency>                                <!-- [1] (Number) how often values should be placed -->\n      <start_from></start_from>                               <!-- [1] (Number) you can set series from which category values will be displayed -->\n      <rotate>45</rotate>                                     <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->    \n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->      \n    </category>\n    <value>                                                   <!-- value axis -->\n      <enabled>true</enabled>                                 <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <min>0</min>                                            <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) -->\n      <unit_position></unit_position>                         <!-- [right] (right / left) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                   \n    </value>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <category>                                                <!-- category axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </category>\n    <value>                                                   <!-- value axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </value>\n  </axes>  \n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current column color will be used -->\n    <alpha>85</alpha>                                         <!-- [100] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be below plot area -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->    \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->        \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n  </legend>\n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amcolumn/export.php or amcolumn/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>  \n  \n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                     <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                   <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>10</x>                                               <!-- [0] (Number / Number% / !Number) -->\n      <y>400</y>                                              <!-- [0] (Number / Number% / !Number) -->\n      <rotate>true</rotate>                                   <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Temperature anomaly, C (1950 - 2005)</b>]]>\n      </text>        \n    </label>\n    <label lid=\"1\">\n      <x>0</x> \n      <y>380</y>\n      <width></width> \n      <align>right</align>  \n      <text_color></text_color>\n      <text_size>11</text_size>  \n      <text>                   \n        <![CDATA[Source: <a href=\"http://www.cru.uea.ac.uk/cru/info/warming/\" target=\"_blank\"><u>Climatic Research Unit</u></a>]]>\n      </text>        \n    </label>\n  </labels>\n\n  \n  <graphs>                                                     <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                               <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                               <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                               <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                            <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n      <type>column</type>                                      <!-- [column] (column/line) -->                  \n      <title>Anomaly</title>                                   <!-- [] (graph title) -->\n      <color>B92F2F</color>                                    <!-- [] (hex color code) -->\n      <alpha></alpha>                                          <!-- [column.alpha (line.alpha)] (0 - 100) -->\n      <data_labels>\n        <![CDATA[]]>                                           <!-- [column.data_labels (line.data_labels)] ({title} {value} {series} {percents} {start} {difference} {total}) You can format any data label: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </data_labels>      \n      <gradient_fill_colors></gradient_fill_colors>            <!-- [] (hex color codes separated by comas) columns can be filled with gradients. Set any number of colors here. Note, that the legend key will be filled with color value, not with gradient. -->\n      <balloon_color></balloon_color>                          <!-- [balloon.color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                          <!-- [balloon.alpha] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>                <!-- [balloon.text_color] (hex color code) -->\n      <balloon_text>\n        <![CDATA[Anomaly in {series}: {value}C]]>              <!-- [column(line).balloon.text] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>       \n      <fill_alpha></fill_alpha>                                <!-- [0] (0 - 100) fill alpha (use it if you want to have area chart) -->\n      <width></width>                                          <!-- [2] (Number) line width -->\n      <bullet></bullet>                                        <!-- [line.bullet] (round, square, round_outlined, square_outline, round_outline, square_outlined, filename) -->            \n      <bullet_size></bullet_size>                              <!-- [line.bullet_size] (Number) bullet size -->\n      <bullet_color></bullet_color>                            <!-- [] (hex color code) bullet color. If not defined, line color is used -->\n      <visible_in_legend></visible_in_legend>                  <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n      <pattern></pattern>                                      <!-- [] (path to the pattern file) Pattern file can be: swf, jpg, gif or png. The chart looks for the file in the \"path\" folder. the pattern can be also set for individual columns in the data xml file -->\n      <pattern_color></pattern_color>                          <!-- [] (hex color code) the color of the pattern -->      \n    </graph>\n\n    <graph gid=\"2\">\n      <type>line</type>                                     \n      <title>Smoothed</title>                               \n      <color></color>                                   \n      <alpha></alpha>\n      <balloon_text>\n        <![CDATA[Anomaly in {series}: {value}C (Smoothed)]]>  <!-- [column(line).balloon.text] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>                                         \n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t<max_min></max_min>                                        <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n  \t <behind></behind>                                       <!-- [false] (true / false) whether your guides should appear in front of columns or behind them -->\n\t   <start_value></start_value>                             <!-- (number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- (string) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.value.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.value.rotate] (0 - 90) angle of rotation of title. -->\n\t   <text_size></text_size>                                 <!-- [values.value.text_size] (Number)  -->\n\t   <text_color></text_color>                               <!-- [values.value.color] (hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n\t\n\t<!-- DATA can also be set in settings file. Just place data in CSV or XML format between <data></data> -->\n\t\n\t<!--<data>\n\t</data> -->\t\n\t\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amcolumn/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",escape(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/amcharts_key.txt",
    "content": "AMCHART-LNKS-1966-6679-1965-1082"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/amline_data.txt",
    "content": "1949;2.54;20.21\n1950;2.51;19.73\n1951;2.53;18.43\n1952;2.53;18.08\n1953;2.68;19.01\n1954;2.78;19.57\n1955;2.77;19.58\n1956;2.79;19.43\n1957;3.09;20.83\n1958;3.01;19.73\n1959;2.90;18.87\n1960;2.88;18.43\n1961;2.89;18.31\n1962;2.90;18.19\n1963;2.89;17.89\n1964;2.88;17.60\n1965;2.86;17.20\n1966;2.88;16.84\n1967;2.92;16.56\n1968;2.94;16.00\n1969;3.09;15.95\n1970;3.18;15.52\n1971;3.39;15.85\n1972;3.39;15.36\n1973;3.89;16.59\n1974;6.87;26.39\n1975;7.67;27.00\n1976;8.19;27.26\n1977;8.57;26.78\n1978;9.00;26.14\n1979;12.64;32.98\n1980;21.59;49.63\n1981;31.77;66.20\n1982;28.52;55.98\n1983;26.19;49.80\n1984;25.88;47.18\n1985;24.09;42.40\n1986;12.51;21.62\n1987;15.40;25.68\n1988;12.58;20.14\n1989;15.86;24.22\n1990;20.03;29.03\n1991;16.54;23.00\n1992;15.99;21.59\n1993;14.25;18.68\n1994;13.19;16.86\n1995;14.62;18.17\n1996;18.46;22.40\n1997;17.23;20.39\n1998;10.87;12.66\n1999;15.56;17.78\n2000;26.72;29.54\n2001;21.84;23.39\n2002;22.51;23.78\n2003;27.54;28.42\n2004;38.93;54.93\n2005;46.47;47.97\n2006;58.30;58.30\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n  <!--<message><![CDATA[You can broadcast any message to chart from data XML file]]></message> -->\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1951</value>\n\t\t<value xid=\"4\">1951</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">5</value>\n\t\t\t<value xid=\"4\">1</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents, used only in stacked charts) -->\n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n  \n \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient-->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n\n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>\n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->    \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->\n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->    \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->    \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>    \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width>44</width>                                       <!-- [80] (Number) width of text field for value -->\n      <align>left</align>                                     <!-- [right] (right / left) -->\n      <text><![CDATA[: ${value}]]></text>                     <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>\n  </legend>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>    \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  \n  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code). Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">                                                            \n      <axis>left</axis>\n      <title>Inflation adjusted</title>              \n      <color>#999999</color>\n      <selected>false</selected>                     \n      <balloon_text>\n        <![CDATA[${value}]]>\n      </balloon_text>\n    </graph>\n  </graphs>  \n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n\t\n\t<!-- DATA can also be set in settings file. Just place data in CSV or XML format between <data></data> -->\n\t\n\t<!--<data>\n\t</data> -->\t\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",encodeURIComponent(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/amline.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Line & Area chart</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline/amline_settings.xml\"));                // you can set two or more different settings files here (separated by commas)\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline/amline_data.xml\"));\n\t\t\n//\tso.addVariable(\"chart_data\", encodeURIComponent(\"data in CSV or XML format\"));                    // you can pass chart data as a string directly from this file\n//\tso.addVariable(\"chart_settings\", encodeURIComponent(\"<settings>...</settings>\"));                 // you can pass chart settings as a string directly from this file\n//\tso.addVariable(\"additional_chart_settings\", encodeURIComponent(\"<settings>...</settings>\"));      // you can append some chart settings to the loaded ones\n//  so.addVariable(\"loading_settings\", \"LOADING SETTINGS\");                                           // you can set custom \"loading settings\" text here\n//  so.addVariable(\"loading_data\", \"LOADING DATA\");                                                   // you can set custom \"loading data\" text here\n//\tso.addVariable(\"preloader_color\", \"#999999\");\n//  so.addVariable(\"error_loading_file\", \"ERROR LOADING FILE\");                                   // you can set custom \"error loading file\" text here\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/changelog.txt",
    "content": "*** CHANGE LOG *****************************************************************\n*** 1.6.4.0 ********************************************************************\nFEATURE ADDED\namReturnParam function also returns the param name:\namReturnParam(chart_id, value, param);\n*** 1.6.3.1 ********************************************************************\nFIX: stacking issue with missing values fixed\nFIX: balloons do not go above the plot area \nFIX: js function print could print three charts instead of one\n*** 1.6.3.0 ********************************************************************\nFEATURE ADDED:\nNew settings <scientific_min> and <scientific_max> added. If absolute value of \nyour number is equal or bigger then scientific_max or equal or less then \nscientific_min, this number will be formatted using scientific notation, for\nexample:\n\n15000000000000000 -> 1.5e16\n0.0000023 -> 2.3e-6\n\nFIX: amClickedOnSeries is not called anymore when zooming the chart.\n*** 1.6.2.1 ********************************************************************\nFEATURE ADDED:\na new setting, <js_enabled> was added. It allows disabling all javascript-html\ncommunication. Id you set this to false, then the chart won't listen and won't\ncall any JavaScript functions. This will also disable the security warning\nmessage when opening the chart from your hard drive or CD.\n*** 1.6.2.0 ********************************************************************\nFEATURE ADDED:Y axis values can be formatted as duration. To do this, you have to\ntell the duration unit of your data. For example, if your data represents seconds,\nyou have to set: <values><y_left><duration>ss</duration></y_left></values>\nThe units of the duration can be changed in the <strings> section.\n\nFIX: you can call JS functions after amError function was called by the chart\n\nFIX: amClickedOnSeries function is called even the zoomable is set to false now\n*** 1.6.1.4 ********************************************************************\nFEATURE ADDED: Margins can be set in percents now\nFIX: balloon.text_color setting was ignored\nFIX: in some cases, when values were missing and axis type was \"stacked\" or\n\"100% stacked\" the area to the stacked graph was filled incorrectly\nFIX: amGetZoom was called when resizing window (if the redraw was set to true)\nFIX: if balloon.only_one was set to true, the balloon wasn't appearing if the \ngraph was hidden or not selected and the mouse was close to this graph.\n*** 1.6.1.3 ********************************************************************\nFIX: amGetZoom returned \"undefined\" if the indicator was moved off the plot area\nto the right side. \n*** 1.6.1.2 ********************************************************************\nFIX: incorrect scroller could appear after reloadData javascript function was\ncalled. \n\nThe chart didn't accept new JS functions if error, such as no data occureed \n\n*** 1.6.1.1 ********************************************************************\nFIX: the indicator could go left of the plot area\n\n*** 1.6.1.0 ********************************************************************\nIMPORTANT UPDATE:\nJS functions amClickedOnSeries(), amClickedOnBullet() and amRolledOverBullet()\nchanged - now the first parameter they return is chart_id, like for all the other\nJS functions which are called by flash. If you are using these functions, you \nwill have to update your scripts.\n\nFEATURE ADDED: JavaScript functions are cued now - previously you could call one\nJS function at a time and call another only after the chart finished the\nprevious process. Now, you can call several functions one after another, without\nwaiting for the chart to finish doing something. The functions are cued and all\nof them will be executed.\n\n\nFEATURE ADDED: New JavaScript function amProcessCompleted(chart_id, process) \nThis function is called after some process initialized by some JS function is\nfinished. For example, if you make the chart to reload data by calling reloadData\nfunction, after the data is reloaded, the chart will call amProcessCompleted \nfunction and the \"process\" parameter will be \"reloadData\" - the same as the \nfunction name you called. Check examples/javascript_control example to see this\nin action.\n\nFIX: The bullets might be displayed out of plot area, when the <strict_min_max>\nwas set to true and the graph's values were out of the <min> and <max> range.\n\nFIX: If all the graphs of one axis were hidden, the grid and values still \nremained.\n\nFIX: chart_id was lost after the use of setSettings JS function.\n\n\n*** 1.6.0.0 ********************************************************************\n\nFEATURE ADDED: RESCALING THE CHART WHEN THE GRAPH IS HIDDEN\nWhen you click on the legend key, the graph is hidden or shown. Now the chart\nrecalculates min and max values (rescales the chart) when you do this. You can\nturn this feature off by setting <rescale_on_hide> to \"false\".\n\n\nFEATURE ADDED: AUTO-FITTING OF THE LEGEND and X AXIS VALUES\n\nThe legend now automatically adjusts bottom margin to fit to the flash object's \narea. If your X axis values are rotated, the legend position is adjusted not to\noverlap the values. In order this to work, you have to leave <legend><y> setting\nempty.\n\n\nFEATURE ADDED: Y BALLOONS NO LONGER OVERLAP\n\n\nFEATURE ADDED: NEW BULLET TYPES\n\nNew bullet types are: square_outline and round_outline\n\n\nFEATURE ADDED: CHART TYPE CAN BE SET SEPARATELY FOR RIGHT AND LEFT AXES\n\nPreviously you set the same <type> (line, stacked, 100% stacked) for both\nleft and right axes. Now you can set the type separately. This setting is now \nin <axes> section.\n\n\nFEATURE ADDED: MORE SETTINGS FOR THE Y BALLOON\n\nNew balloon settings allows you to have balloon border and rounded corners:\n\n   <balloon>\n      <only_one></only_one>\n      <on_off></on_off>\n      <color></color>          \n      <alpha></alpha>          \n      <text_color></text_color>\n      <text_size></text_size>  \n      <max_width></max_width>  \n      <corner_radius></corner_radius>\n      <border_width></border_width>  \n      <border_alpha></border_alpha>  \n      <border_color></border_color>    \n   </balloon> \n   \nThe <only_one> setting replaced the <indicator><one_y_balloon> setting, and the\n<on_off></on_off> replaced the <indicator><y_balloon_on_off>. The old ones will\nalso work.\n\n\nFEATURE ADDED: POSSIBILITY TO SET ARRAY OF COLORS\n\nUsing <colors></colors> setting, you can set an array fo colors, which will\nbe used if the graph's color is not set.\n\n\nFEATURE ADDED: CHANGE MULTIPLE SETTINGS WITH JAVASCRIPT\n\nUsing new function, flashMovie.setSettings(settings, rebuild) You can control\nmultiple settings.  It is recommended to use this new function even for one \nsetting, instead of setParam() function. The \"rebuild\" option might be \"true\" \nor \"false\" (the default is \"true\"). If you set it to \"false\", then the settings\nwill not be applied until you call another new JS function: flashMovie.rebuild()\nor pass another set of settings with the \"rebuild\" set to \"true\". \n\nA new function flashMovie.getSettings() will return the full settings \nXML by calling amReturnSettings(chart_id, settings) function. \n\n\nFEATURE ADDED: IMAGE DATA IS PASSED TO JAVASCRIPT\n\nWhen exporting chart as an image, the chart passes image data to JavaScript \nfunction: amReturnImageData(chart_id, data) \n\n\nFEATURE ADDED: FONT COLOR AND SIZE OF A LABEL TEXT\n\n<labels> Can accept  font color and font size HTML tags now, for example:\n<text><![CDATA[Source: <font color=\"#CC0000\" size=\"14\">amCharts</font>]]></text>\n\n\nCHANGE OF THE DEFAULT SETTINGS:\n<context_menu><default_items><zoom> default value was changed to \"false\"\n\n\nFIXES:\nWhen adding some settings using additional_chart_settings variable, you don't \nneed to set all the <graph> or <label> settings anymore. When \nchanging some <label> property using additional_chart_settings, in order to\nidentify <label>, the labels id (lid) must be added, for example: <label lid=\"0\">\n\nWhen <connect> is set to true, and there are values missing, the chart shows\nfull line when zoomed.\n\n\"aditional_chart_settings\" variable can accept multiple guides now.\n\nmin / max calculation bug with stacked chart type fixed.\n\n\n\n*** 1.5.2.0 ********************************************************************\n\n\nNew features:\n\nJavaScript function amError(chart_id, error_message) is called when one of the\nknown errors occurs.\n\nNew JavaScript function for showing/hiding and selecting/deselecting graphs \nadded:\n\nflashMovie.showGraph(index)\nflashMovie.hideGraph(index)\nflashMovie.selectGraph(index)\nflashMovie.deselectGraph(index)\n\nYou can also use these functions in case you load chart to another swf movie.\n\n\n\n*** 1.5.1.0 ********************************************************************\n\n\nNew feature: the area between every second y axis grid can be filled with\ncolor. The color is defined at: <grid><y_left><fill_color>. Fill alpha can be\ndefined at <grid><y_left><fill_alpha>\n\nBug fix: When reloading settings with reloadSettings() function, if settings\nfile contained data, the data wasn't refreshed. This is fixed in this version.\n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n\t<guides>\t                                   \n\t <guide>                                     \n\t   <start_value>26.16</start_value>               \n\t   <title>Average world ($26,16)</title>                           \n\t   <color>#00CC00</color>                             \n\t   <inside>true</inside>                         \n\t </guide>  \n\t</guides>\t\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>15</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw>true</redraw>                                       <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count>20</hide_bullets_count>                 <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->  \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color>000000</fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha>5</fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                         <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                       <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width>80</width>                                         <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines> \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha>0</line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                              <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                             <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected>false</selected>                              <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[{value}]]>                                   <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines>true</vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>\n      <line_width>2</line_width>              \n      <color>#999999</color>\n      <bullet>square</bullet> \n      <bullet_size>8</bullet_size>\n      <selected>true</selected>\n      <balloon_text>\n        <![CDATA[${value}]]>\n      </balloon_text>                              \n    </graph>    \n </graphs>\n \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>   \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/auto_resizing_chart/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Auto-resizing chart</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"100%\", \"100%\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/amline_data.txt",
    "content": "1900;-0.220;-0.362\n1901;-0.300;-0.376\n1902;-0.430;-0.395\n1903;-0.507;-0.414\n1904;-0.553;-0.434\n1905;-0.411;-0.452\n1906;-0.328;-0.468\n1907;-0.507;-0.480\n1908;-0.559;-0.489\n1909;-0.564;-0.492\n1910;-0.547;-0.488\n1911;-0.580;-0.478\n1912;-0.490;-0.462\n1913;-0.489;-0.443\n1914;;\n1915;;\n1916;;\n1917;;\n1918;;\n1919;-0.327;-0.355\n1920;-0.313;-0.345\n1921;-0.262;-0.334\n1922;-0.381;-0.322\n1923;-0.346;-0.310\n1924;-0.360;-0.298\n1925;-0.274;-0.285\n1926;-0.162;-0.272\n1927;-0.252;-0.258\n1928;-0.255;-0.246\n1929;-0.376;-0.233\n1930;-0.164;-0.219\n1931;-0.124;-0.205\n1932;-0.154;-0.189\n1933;-0.296;-0.172\n1934;-0.158;-0.151\n1935;-0.183;-0.128\n1936;-0.152;-0.103\n1937;-0.033;-0.078\n1938;0.009;-0.054\n1939;;\n1940;;\n1941;;\n1942;;\n1943;;\n1944;;\n1945;;\n1946;-0.204;-0.102\n1947;-0.196;-0.126\n1948;-0.203;-0.147\n1949;-0.210;-0.162\n1950;-0.307;-0.171\n1951;-0.168;-0.175\n1952;-0.073;-0.176\n1953;-0.027;-0.174\n1954;-0.251;-0.169\n1955;-0.281;-0.162\n1956;-0.348;-0.151\n1957;-0.074;-0.139\n1958;-0.011;-0.125\n1959;-0.074;-0.114\n1960;-0.124;-0.106\n1961;-0.024;-0.104\n1962;-0.022;-0.108\n1963;0.000;-0.114\n1964;-0.296;-0.120\n1965;-0.217;-0.125\n1966;-0.147;-0.127\n1967;-0.150;-0.125\n1968;-0.160;-0.120\n1969;-0.011;-0.114\n1970;-0.068;-0.108\n1971;-0.190;-0.104\n1972;-0.056;-0.100\n1973;0.077;-0.097\n1974;-0.213;-0.091\n1975;-0.170;-0.082\n1976;-0.254;-0.068\n1977;0.019;-0.050\n1978;-0.063;-0.028\n1979;0.050;-0.006\n1980;0.077;0.015\n1981;0.120;0.032\n1982;0.011;0.046\n1983;0.177;0.058\n1984;-0.021;0.069\n1985;-0.037;0.081\n1986;0.030;0.094\n1987;0.179;0.108\n1988;0.180;0.123\n1989;0.104;0.137\n1990;0.255;0.150\n1991;0.210;0.163\n1992;0.065;0.178\n1993;0.110;0.195\n1994;0.172;0.216\n1995;0.269;0.241\n1996;0.141;0.268\n1997;0.353;0.296\n1998;0.548;0.323\n1999;0.298;0.348\n2000;0.267;0.370\n2001;0.411;0.389\n2002;0.462;0.404\n2003;0.470;0.415\n2004;0.445;0.422\n2005;0.470;0.426\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font>Georgia</font>                                        <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>12</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count>15</hide_bullets_count>                 <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color>#000000</color>                                    <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color>#000000</color>                                    <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#555555</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>70</left>                                         <!-- [60](Number / Number%) --> \n      <top>70</top>                                           <!-- [60](Number / Number%) --> \n      <right>70</right>                                       <!-- [60](Number / Number%) --> \n      <bottom>100</bottom>                                    <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color>#FFFFFF</color>                                           <!-- [#DADADA] (hex color code) scrollbar color -->\n    <alpha>50</alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color>#FFFFFF</bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color -->\n    <bg_alpha>20</bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->             \n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                            \n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>5</alpha>                                        <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->    \n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->      \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off>false</graph_on_off>                        <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align>left</align>                                     <!-- [right] (right / left) -->\n      <text><![CDATA[{value} C]]></text>                      <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file>../amline/export.php</file>                         <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>14</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Temperature anomaly</b>]]>\n      </text>        \n    </label>    \n  \n    <label lid=\"1\">\n      <x>0</x> \n      <y>380</y>\n      <width></width> \n      <align>right</align>  \n      <text_size>11</text_size>  \n      <text>                   \n        <![CDATA[Source: <a href=\"http://www.cru.uea.ac.uk/cru/info/warming/\" target=\"_blank\"><u>Climatic Research Unit</u></a>]]>\n      </text>        \n    </label>  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph>                                                   <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Anomaly</title>                                  <!-- [] (graph title) -->\n      <color>#76BC2C</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover>#FF0000</color_hover>                      <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round_outlined</bullet>                         <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected>false</selected>                              <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[{value} C]]>                                 <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph>\n                                                            \n      <axis>left</axis>                   \n      <title>Smoothed</title>              \n      <color>#2CA9BC</color> \n      <color_hover>#FF0000</color_hover> \n      <fill_alpha>30</fill_alpha>\n      <bullet>round_outlined</bullet>\n      <bullet_size>10</bullet_size>      \n      <balloon_text>\n        <![CDATA[{value} C]]>                                 \n      </balloon_text>      \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value>0</start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value>0.8</end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha>0</alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color>#000000,#CC0000</fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha>40</fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>\n\t <guide>                                                  \n\t   <axis></axis>                                           \n\t   <start_value>0</start_value>                           \n\t   <end_value>-0.8</end_value>                            \n\t   <alpha>0</alpha>                                       \n\t   <fill_color>#000000,#0000CC</fill_color>               \n\t   <fill_alpha>40</fill_alpha>                                                              \n\t </guide>\t \n\t</guides>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_data_gaps/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart with data gaps</title>\n</head>\n<body bgcolor=\"#000000\">\n\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.txt\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_scroller/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1950</value>\n\t\t<value xid=\"1\">1951</value>\n\t\t<value xid=\"2\">1952</value>\n\t\t<value xid=\"3\">1953</value>\n\t\t<value xid=\"4\">1954</value>\n\t\t<value xid=\"5\">1955</value>\n\t\t<value xid=\"6\">1956</value>\n\t\t<value xid=\"7\">1957</value>\n\t\t<value xid=\"8\">1958</value>\n\t\t<value xid=\"9\">1959</value>\n\t\t<value xid=\"10\">1960</value>\n\t\t<value xid=\"11\">1961</value>\n\t\t<value xid=\"12\">1962</value>\n\t\t<value xid=\"13\">1963</value>\n\t\t<value xid=\"14\">1964</value>\n\t\t<value xid=\"15\">1965</value>\n\t\t<value xid=\"16\">1966</value>\n\t\t<value xid=\"17\">1967</value>\n\t\t<value xid=\"18\">1968</value>\n\t\t<value xid=\"19\">1969</value>\n\t\t<value xid=\"20\">1970</value>\n\t\t<value xid=\"21\">1971</value>\n\t\t<value xid=\"22\">1972</value>\n\t\t<value xid=\"23\">1973</value>\n\t\t<value xid=\"24\">1974</value>\n\t\t<value xid=\"25\">1975</value>\n\t\t<value xid=\"26\">1976</value>\n\t\t<value xid=\"27\">1977</value>\n\t\t<value xid=\"28\">1978</value>\n\t\t<value xid=\"29\">1979</value>\n\t\t<value xid=\"30\" event_start=\"war\" event_text_color=\"#DADADA\" event_description=\"Iran-Iraq war was a war between the armed forces of Iraq and Iran lasting from September 1980 to August 1988. \" event_color=\"#000000\" event_alpha=\"15\">1980</value>\n\t\t<value xid=\"31\">1981</value>\n\t\t<value xid=\"32\">1982</value>\n\t\t<value xid=\"33\">1983</value>\n\t\t<value xid=\"34\">1984</value>\n\t\t<value xid=\"35\">1985</value>\n\t\t<value xid=\"36\">1986</value>\n\t\t<value xid=\"37\">1987</value>\n\t\t<value xid=\"38\" event_end=\"war\">1988</value>\n\t\t<value xid=\"39\">1989</value>\n\t\t<value xid=\"40\">1990</value>\n\t\t<value xid=\"41\">1991</value>\n\t\t<value xid=\"42\">1992</value>\n\t\t<value xid=\"43\">1993</value>\n\t\t<value xid=\"44\">1994</value>\n\t\t<value xid=\"45\">1995</value>\n\t\t<value xid=\"46\">1996</value>\n\t\t<value xid=\"47\">1997</value>\n\t\t<value xid=\"48\">1998</value>\n\t\t<value xid=\"49\">1999</value>\n\t\t<value xid=\"50\">2000</value>\n\t\t<value xid=\"51\">2001</value>\n\t\t<value xid=\"52\">2002</value>\n\t\t<value xid=\"53\">2003</value>\n\t\t<value xid=\"54\">2004</value>\n\t\t<value xid=\"55\">2005</value>\n\t\t<value xid=\"56\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.51</value>\n\t\t\t<value xid=\"1\">2.53</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.68</value>\n\t\t\t<value xid=\"4\">2.78</value>\n\t\t\t<value xid=\"5\">2.77</value>\n\t\t\t<value xid=\"6\">2.79</value>\n\t\t\t<value xid=\"7\">3.09</value>\n\t\t\t<value xid=\"8\">3.01</value>\n\t\t\t<value xid=\"9\">2.90</value>\n\t\t\t<value xid=\"10\">2.88</value>\n\t\t\t<value xid=\"11\">2.89</value>\n\t\t\t<value xid=\"12\">2.90</value>\n\t\t\t<value xid=\"13\">2.89</value>\n\t\t\t<value xid=\"14\">2.88</value>\n\t\t\t<value xid=\"15\">2.86</value>\n\t\t\t<value xid=\"16\">2.88</value>\n\t\t\t<value xid=\"17\">2.92</value>\n\t\t\t<value xid=\"18\">2.94</value>\n\t\t\t<value xid=\"19\">3.09</value>\n\t\t\t<value xid=\"20\">3.18</value>\n\t\t\t<value xid=\"21\">3.39</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.89</value>\n\t\t\t<value xid=\"24\">6.87</value>\n\t\t\t<value xid=\"25\">7.67</value>\n\t\t\t<value xid=\"26\">8.19</value>\n\t\t\t<value xid=\"27\">8.57</value>\n\t\t\t<value xid=\"28\">9.00</value>\n\t\t\t<value xid=\"29\">12.64</value>\n\t\t\t<value xid=\"30\" description=\"Iranian revolution\" bullet=\"../examples/chart_with_scroller/bomb.swf\">21.59</value>\n\t\t\t<value xid=\"31\">31.77</value>\n\t\t\t<value xid=\"32\">28.52</value>\n\t\t\t<value xid=\"33\">26.19</value>\n\t\t\t<value xid=\"34\">25.88</value>\n\t\t\t<value xid=\"35\">24.09</value>\n\t\t\t<value xid=\"36\">12.51</value>\n\t\t\t<value xid=\"37\">15.40</value>\n\t\t\t<value xid=\"38\">12.58</value>\n\t\t\t<value xid=\"39\">15.86</value>\n\t\t\t<value xid=\"40\" description=\"Gulf war. Click on the bomb to get more info about it\" url=\"http://en.wikipedia.org/wiki/Gulf_war\" bullet=\"../examples/chart_with_scroller/bomb.swf\">20.03</value>\n\t\t\t<value xid=\"41\">16.54</value>\n\t\t\t<value xid=\"42\">15.99</value>\n\t\t\t<value xid=\"43\">14.25</value>\n\t\t\t<value xid=\"44\">13.19</value>\n\t\t\t<value xid=\"45\">14.62</value>\n\t\t\t<value xid=\"46\">18.46</value>\n\t\t\t<value xid=\"47\">17.23</value>\n\t\t\t<value xid=\"48\" description=\"Opec 10% quota increase\" bullet_color=\"#009900\" bullet_size=\"12\">10.87</value>\n\t\t\t<value xid=\"49\">15.56</value>\n\t\t\t<value xid=\"50\">26.72</value>\n\t\t\t<value xid=\"51\" description=\"9/11\">21.84</value>\n\t\t\t<value xid=\"52\">22.51</value>\n\t\t\t<value xid=\"53\" description=\"Iraq war\" bullet=\"../examples/chart_with_scroller/bomb.swf\">27.54</value>\n\t\t\t<value xid=\"54\">38.93</value>\n\t\t\t<value xid=\"55\">46.47</value>\n\t\t\t<value xid=\"56\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">19.73</value>\n\t\t\t<value xid=\"1\">18.43</value>\n\t\t\t<value xid=\"2\">18.08</value>\n\t\t\t<value xid=\"3\">19.01</value>\n\t\t\t<value xid=\"4\">19.57</value>\n\t\t\t<value xid=\"5\">19.58</value>\n\t\t\t<value xid=\"6\">19.43</value>\n\t\t\t<value xid=\"7\">20.83</value>\n\t\t\t<value xid=\"8\">19.73</value>\n\t\t\t<value xid=\"9\">18.87</value>\n\t\t\t<value xid=\"10\">18.43</value>\n\t\t\t<value xid=\"11\">18.31</value>\n\t\t\t<value xid=\"12\">18.19</value>\n\t\t\t<value xid=\"13\">17.89</value>\n\t\t\t<value xid=\"14\">17.60</value>\n\t\t\t<value xid=\"15\">17.20</value>\n\t\t\t<value xid=\"16\">16.84</value>\n\t\t\t<value xid=\"17\">16.56</value>\n\t\t\t<value xid=\"18\">16.00</value>\n\t\t\t<value xid=\"19\">15.95</value>\n\t\t\t<value xid=\"20\">15.52</value>\n\t\t\t<value xid=\"21\">15.85</value>\n\t\t\t<value xid=\"22\">15.36</value>\n\t\t\t<value xid=\"23\">16.59</value>\n\t\t\t<value xid=\"24\">26.39</value>\n\t\t\t<value xid=\"25\">27.00</value>\n\t\t\t<value xid=\"26\">27.26</value>\n\t\t\t<value xid=\"27\">26.78</value>\n\t\t\t<value xid=\"28\">26.14</value>\n\t\t\t<value xid=\"29\">32.98</value>\n\t\t\t<value xid=\"30\">49.63</value>\n\t\t\t<value xid=\"31\">66.20</value>\n\t\t\t<value xid=\"32\">55.98</value>\n\t\t\t<value xid=\"33\">49.80</value>\n\t\t\t<value xid=\"34\">47.18</value>\n\t\t\t<value xid=\"35\">42.40</value>\n\t\t\t<value xid=\"36\">21.62</value>\n\t\t\t<value xid=\"37\">25.68</value>\n\t\t\t<value xid=\"38\">20.14</value>\n\t\t\t<value xid=\"39\">24.22</value>\n\t\t\t<value xid=\"40\">29.03</value>\n\t\t\t<value xid=\"41\">23.00</value>\n\t\t\t<value xid=\"42\">21.59</value>\n\t\t\t<value xid=\"43\">18.68</value>\n\t\t\t<value xid=\"44\">16.86</value>\n\t\t\t<value xid=\"45\">18.17</value>\n\t\t\t<value xid=\"46\">22.40</value>\n\t\t\t<value xid=\"47\">20.39</value>\n\t\t\t<value xid=\"48\">12.66</value>\n\t\t\t<value xid=\"49\">17.78</value>\n\t\t\t<value xid=\"50\">29.54</value>\n\t\t\t<value xid=\"51\">23.39</value>\n\t\t\t<value xid=\"52\">23.78</value>\n\t\t\t<value xid=\"53\">28.42</value>\n\t\t\t<value xid=\"54\">54.93</value>\n\t\t\t<value xid=\"55\">47.97</value>\n\t\t\t<value xid=\"56\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_scroller/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font>Georgia</font>                                        <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n\n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file>../examples/chart_with_scroller/bg.swf</file>            <!-- [] (filename) swf or jpg file of a background. -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>60</left>                                         <!-- [60](Number / Number%) --> \n      <top>0</top>                                            <!-- [60](Number / Number%) --> \n      <right>60</right>                                       <!-- [60](Number / Number%) --> \n      <bottom>142</bottom>                                    <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y>510</y>                                                <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color>#BBBB00</color>                                    <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color>#FFFFFF</bg_color>                              <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha>20</bg_alpha>                                   <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count>10</approx_count>                         <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last>true</skip_last>                             <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit>$</unit>                                          <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position>left</unit_position>                     <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color>#FFFFFF</color>                                  <!-- [#000000] (hex color code) -->\n      <alpha>25</alpha>                                       <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>10</alpha>                                       <!-- [100] (0 - 100) -->\n      <width>1</width>                                        <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color>#000000</selection_color>                <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x>100</x>                                                <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y>180</y>                                                <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width>200</width>                                        <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->     \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover>#000000</text_color_hover>              <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[{value}$]]></text>                       <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x>350</x>                                                <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y>540</y>                                                <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) background alpha -->\n    <text_color>#FFFFFF</text_color>                          <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover>#000000</text_color_hover>              <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha>50</alpha>                                       <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text>                                                  <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[Click on the graph to turn on/off value baloon <br/><br/>Click on legend key to show/hide graph<br/><br/>Mark the area you wish to enlarge]]>\n      </text>\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>98</x>                                               <!-- [0] (Number / Number% / !Number) -->\n      <y>130</y>                                              <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align></align>                                         <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>15</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover>#000000</color_hover>                      <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color>#000000</balloon_text_color>        <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round</bullet>                                  <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->      \n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[<b>${value}</b><br>{description}]]>          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>\n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>\n      <line_alpha>0</line_alpha>              \n      <color>#000000</color>     \n      <bullet>round</bullet>\n      <bullet_alpha>100</bullet_alpha>\n      <balloon_text_color>#FFFFFF</balloon_text_color>                \n      <color_hover>#000000</color_hover>\n      <balloon_text_color>#000000</balloon_text_color>\n      <balloon_text>\n        <![CDATA[<b>${value}</b>]]>                                \n      </balloon_text> \n      <vertical_lines>true</vertical_lines>           \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>\n      \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/chart_with_scroller/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart with scroller</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"800\", \"600\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/data_and_settings_inisde_html/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Data and settings inside HTML</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n  \tso.addVariable(\"chart_data\", encodeURIComponent(\"<chart><series><value xid='0'>2000</value><value xid='1'>2001</value><value xid='2'>2002</value><value xid='3'>2003</value><value xid='4'>2004</value><value xid='5'>2005</value><value xid='6'>2006</value><value xid='7'>2007</value></series><graphs><graph gid='0' title='First title'><value xid='0'>6</value><value xid='1'>36</value><value xid='2'>34</value><value xid='3'>37</value><value xid='4'>48</value><value xid='5'>42</value><value xid='6'>29</value><value xid='7'>43</value></graph><graph gid='1' title='Second title'><value xid='0'>19</value><value xid='1'>6</value><value xid='2'>39</value><value xid='3'>25</value><value xid='4'>8</value><value xid='5'>40</value><value xid='6'>50</value><value xid='7'>10</value></graph></graphs></chart>\"));\n    so.addVariable(\"chart_settings\", encodeURIComponent(\"<settings><background><color>#FFFFFF,#FF9E01</color><alpha>100</alpha></background><labels><label><y>24</y><width>520</width><align>center</align><text><![CDATA[<b>Passing data and settings directly from html file example</b>]]></text></label></labels></settings>\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/javascript_control/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph gid=\"2\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/javascript_control/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal>2</digits_after_decimal>              <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->    \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->    \n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code). Separate color codes with comas for gradient -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value>Wrong zoom values</wrong_zoom_value>    <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->     \n     <menu function_name=\"selectInterval(10)\" title=\"10 years\"></menu>\n     <menu function_name=\"selectInterval(20)\" title=\"20 years\"></menu>\n     <menu function_name=\"showAll\" title=\"Show full\"></menu>\n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title>Nominal</title>                                  <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet>round</bullet>                                  <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[]]>                                          <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n      <clickable_bullets>true</clickable_bullets>             <!-- [false] (true / false) if set to true, hand cursor will be displayed on roll-over the bullet even if it hasn't url property. When clicked or hovered, JS function will be called -->\n    </graph>\n    \n    <graph gid=\"2\">\n                                                            \n      <axis>left</axis>                   \n      <title>Inflation Adjusted 2006</title>              \n      <color>#999999</color>                     \n    </graph>    \n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/javascript_control/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>JavaScript control example</title>\n</head>\n<style>\n  body{\n  \tbackground-color: #FFFFFF;\n  \tfont-family: Arial;\n  \tfont-size: 12px;\n  }\n</style>\n<body>\n<b><font color=\"red\">Attention! Because of security restrictions in most cases this\nexample will work only if you upload files to your web server.</font></b><br><br>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n<script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n<div id=\"flashcontent\">\n\t<strong>You need to upgrade your Flash Player</strong>\n</div>\n\n<script type=\"text/javascript\">\n  var so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n  so.addVariable(\"path\", \"../../amline/\");  \n  so.addVariable(\"chart_id\", \"amline\"); // if you have more then one chart in one page, set different chart_id for each chart\t\n  so.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n  so.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n  so.addVariable(\"preloader_color\", \"#999999\");\n  so.write(\"flashcontent\");\n</script>\n<!-- end of amline script -->\n\n\n<script type=\"text/javascript\">\n//////////////////////////////////////////////////////////////////////////////////////////\n// Functions that control the chart //////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////\n\n// SET DATA //////////////////////////////////////////////////////////////////////////////\n// flashMovie.setData(data, rebuild)\n// This function can be used for setting the chart's data on the fly. \n// Data must be in CSV or XML form, as per the <data_type> setting.\n// The \"rebuild\" parameter is optional and can be \"true\" or \"false\". \"false\" means that \n// the new data will not be applied right after this function is called.   \n\nfunction setData() {\n  // gets data from the text area with id \"data\"\n  var data = document.getElementById(\"data\").value;\n  // sets data\n  flashMovie.setData(data);\n}\n\n// APPEND DATA ///////////////////////////////////////////////////////////////////////////\n// flashMovie.appendData(data[, remove_count])\n// This function can be used to append new data to the existing dataset. \n// The data must be in CSV or XML form, as per the <data_type> setting. \n// The remove_count variable is optional and sets the number of data points\n// that should be removed from the beginning of dataset.\nfunction appendData() {\n  // gets data from the text area with id \"data\"\n  var data = document.getElementById(\"data\").value;\n  // appends data\n  flashMovie.appendData(data, 0);\n}\n\n// SET SETTINGS //////////////////////////////////////////////////////////////////////////\n// flashMove.setSettings(settings[, rebuild])\n// This function can be used to set some part or all the settings. The settings should be\n// in XML format, inside <settings></settings>. The \"rebuild\" parameter is optional and \n// can be \"true\" or \"false\". \"false\" means that the new settings will not be applied right\n// after this function is called. They will can be applied using flashMovie.rebuild()\n// function or by adding some more setings with the \"rebuild\" set to \"true\". The default\n// value of \"rebuild\" is \"true\"  \nfunction setSettings() {\n  var settings = document.getElementById(\"settings\").value;\n  flashMovie.setSettings(settings, true);\n}   \n\n// REBUILD CHART /////////////////////////////////////////////////////////////////////////\n// flashMovie.rebuild();\n// This function might be used to rebuild the chart after several portions of settings were\n// set using setSettings(settings, rebuild) function, with the rebuild set to false\nfunction rebuild() {\n  flashMovie.rebuild();\n}\n\n// RELOAD DATA ///////////////////////////////////////////////////////////////////////////\n// flashMove.reloadData([file_name], [show_all])\n// This function will reload the data. The file_name variable is optional, if you do not\n// set it here, data from the original file will be reloaded. The show_all variable \n// tells the chart whether it should keep the selected period or show full new data\n// the default value of show_all is \"true\"       \nfunction reloadData() {\n  flashMovie.reloadData(); \n}\n\n// RELOAD SETTINGS ///////////////////////////////////////////////////////////////////////\n// flashMovie.reloadSettings([file_name], [show_all])\n// This function will reload the settings. The file_name variable is optional, if you do\n// not set it here, settings from the original file will be reloaded. The show_all variable \n// tells the chart whether it should keep the selected period or show full new data\n// the default value of show_all is \"true\"       \nfunction reloadSettings() {\n  flashMovie.reloadSettings();\n}\n\n// RELOAD ALL ////////////////////////////////////////////////////////////////////////////\n// flashMovie.reloadAll([data_file_name][,settings_file_name])\n// This function will reload both data and settings. The names of the files are optional. \n// If you do not set them, the original file names will be used.\nfunction reloadAll() {\n  flashMovie.reloadAll();\n}\n\n// SET PARAM /////////////////////////////////////////////////////////////////////////////\n// flashMovie.setParam(param, value)\n// This function lets you change a single setting. The parameter names are formed using \n// the section name and the parameter name, separated with a period. For example: \n// background.alpha or labels.label[1].text \nfunction setParam() {\n  // gets param name from a field with id \"param\"\n  var param = document.getElementById(\"param\").value;\n  // gets param value from a field with id \"value\"\n  var value = document.getElementById(\"value\").value;\n  // sets param\n  flashMovie.setParam(param, value);\n}\n      \n// GET PARAM /////////////////////////////////////////////////////////////////////////////\n// flashMovie.getParam(param)\n// This function will ask Flash to return the value of a setting. The parameter name is\n// formed in the same way as the setParam function (described above). When you call this\n// function to return the setting value, Flash will return the value by calling the \n// amReturnParam(chart_id, param_value, param_name) function\nfunction getParam() {\n  // get the param name from a field with id \"getparam\"\n  var param = document.getElementById(\"getparam\").value;            \n  flashMovie.getParam(param);\n} \n\n// GET DATA //////////////////////////////////////////////////////////////////////////////\n// flashMovie.getData()\n// This function will ask Flash to return the whole data. When you call this function to\n// return the data, Flash will call the amReturnData(chart_id, data) function.\nfunction getData() {\n  flashMovie.getData();\n}   \n      \n// GET SETTINGS //////////////////////////////////////////////////////////////////////////\n// flashMovie.getSettings()\n// This function will ask Flash to return the whole settings XML. When you call this \n// function to return the settings, Flash will call the \n// amReturnSettings(chart_id, settings) function. \nfunction getSettings() {\n  flashMovie.getSettings();\n}   \n      \n// EXPORT AS IMAGE ///////////////////////////////////////////////////////////////////////\n// flashMovie.exportImage([file_name]) \n// This function will start the process of exporting the chart as an image. The file_name\n// is a name of a file to which image data will be posted (files provided in the download \n// package are export.php and export.aspx). The file_name is optional and can be set in \n// the <export_as_image><file> setting.\nfunction exportImage() {\n  flashMovie.exportImage('../../amline/export.php');  \n}\n\n// PRINT /////////////////////////////////////////////////////////////////////////////////\n// flashMovie.print()\n// This function will print the chart. Use this print function if you don't have any\n// values rotated by 90 degrees, also if you don't have a custom bitmap background.\nfunction print(){\n  flashMovie.print();\n}\n      \n// PRINT AS BITMAP ///////////////////////////////////////////////////////////////////////\n// flashMovie.printAsBitmap()\n// Use it if you have values rotated by 90 degrees and/or a custom bitmap background.\nfunction printAsBitmap(){\n  flashMovie.printAsBitmap();\n}\n\n// Line chart specific functions //////////////////////////////////////////////////////////\n\n// SHOW GRAPH /////////////////////////////////////////////////////////////////////////////\n// flashMovie.showGraph(index)\n// This function will show the graph (if it is hidden). Index is the sequential number of a\n// graph in your settings, counting from 0.\nfunction showGraph(){\n  var index = document.getElementById(\"graphshow\").value;\n  flashMovie.showGraph(index);\n}\n\n// HIDE GRAPH ////////////////////////////////////////////////////////////////////////////\n// flashMovie.hideGraph(index)\n// This function will hide the graph (if it is visible). Index is the sequential number of\n// a graph in your settings, counting from 0.\nfunction hideGraph(){\n  var index = document.getElementById(\"graphhide\").value;         \n  flashMovie.hideGraph(index);\n}\n\n// SELECT GRAPH //////////////////////////////////////////////////////////////////////////\n// flashMovie.selectGraph(index)\n// This function will select the graph (the value balloon will become visible). Index is \n// the sequential number of a graph in your settings, counting from 0.\nfunction selectGraph(){\n  var index = document.getElementById(\"graphselect\").value;\n  flashMovie.selectGraph(index);\n}\n\n// DESELECT GRAPH ////////////////////////////////////////////////////////////////////////\n// flashMovie.deselectGraph(index)\n// This function will deselect the graph (the value balloon will become invisible). \n// Index is the sequential number of a graph in your settings, counting from 0.\nfunction deselectGraph(){ \n  var index = document.getElementById(\"graphdeselect\").value;\n  flashMovie.deselectGraph(index);\n}  \n// SET ZOOM //////////////////////////////////////////////////////////////////////////////\n// flashMovie.setZoom(from, to)\n// This function will change the selected period. \"From\" and \"to\" values must match the \n// values of the series in the data file, otherwise an error message will be displayed.\nfunction setZoom(){\n  var from = document.getElementById(\"from\").value;\n  var to = document.getElementById(\"to\").value;  \n  flashMovie.setZoom(from, to); \n}\n\n// SHOW ALL //////////////////////////////////////////////////////////////////////////////\n// flashMovie.showAll();\n// This function will show the full chart if some shorter period was previously selected.\nfunction showAll(){\n  flashMovie.showAll(); \n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n// Functions that are called by the chart ////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////\n      \n// CHART INITED //////////////////////////////////////////////////////////////////////////    \n// amChartInited(chart_id)\n// This function is called when the chart is fully loaded and initialized.\nfunction amChartInited(chart_id){\n  // get the flash object into \"flashMovie\" variable   \n  flashMovie = document.getElementById(chart_id);\n  // tell the field with id \"chartfinished\" that this chart was initialized\n  document.getElementById(\"chartfinished\").value = chart_id;           \n}      \n\n// PROCESS COMPLETED //////////////////////////////////////////////////////////////////////////    \n// amProcessCompleted(chart_id, process_name)\n// This function is called when the chart finishes doing some task triggered by another \n// JavaScript function \nfunction amProcessCompleted(chart_id, process_name){\n  document.getElementById(\"processcompleted\").value = process_name;           \n}\n      \n// RETURN DATA ///////////////////////////////////////////////////////////////////////////\n// amReturnData(chart_id, data)\n// This function is called when you request data from a chart \n//  by calling the flashMove.getData() function.\nfunction amReturnData(chart_id, data){\n  document.getElementById(\"data\").value = unescape(data);\n}\n\n// RETURN PARAM //////////////////////////////////////////////////////////////////////////\n// amReturnParam(chart_id, value, param_name)\n// This function is called when you request a setting from a chart  \n// by calling the flashMovie.getParam(param) function.\nfunction amReturnParam(chart_id, value, param_name){\n  document.getElementById(\"returnedparam\").value = unescape(value);\n}\n\n// RETURN SETTINGS ///////////////////////////////////////////////////////////////////////\n// amReturnSettings(chart_id, settings)\n// This function is called when you request settings from a chart \n// by calling flashMovie.getSettings() function.  \nfunction amReturnSettings(chart_id, settings){\n  document.getElementById(\"settings\").value = unescape(settings);\n}      \n\n// RETURN IMAGE DATA /////////////////////////////////////////////////////////////////////\n// amReturnImageData(chart_id, data)\n// This function is called when the export to image process is finished and might be used\n// as alternative way to get image data (instead of posting it to some file)\nfunction amReturnImageData(chart_id, data){\n  // your own functions here\n}   \n\n// ERROR /////////////////////////////////////////////////////////////////////////////////\n// amError(chart_id, message)\n// This function is called when an error occurs, such as no data, or file not found.\nfunction amError(chart_id, message){\n  alert(message);\n}      \n\n// GET ZOOM //////////////////////////////////////////////////////////////////////////////\n// amGetZoom(chart_id, from, to, from_xid, to_xid)\n// This function is called when the selected period is changed.\nfunction amGetZoom(chart_id, from, to, from_xid, to_xid){\n  document.getElementById(\"from\").value = from;\n  document.getElementById(\"to\").value = to;\n}\n\n// FIND OUT WHICH GRAPH WAS SELECTED /////////////////////////////////////////////////////\n// amGraphSelect(chart_id, index, title)\n// This function is called when the viewer selects the graph by clicking on it or on the\n// graph's legend entry. Index is the sequential number of a graph in your settings, \n// counting from 0.\nfunction amGraphSelect(chart_id, index, title){\n  document.getElementById(\"graphselect\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS DESELECTED ///////////////////////////////////////////////////\n// amGraphDeselect(chart_id, index, title)\n// This function is called when the viewer deselects the graph by clicking on it or on the\n// graph's legend entry. Index is the sequential number of a graph in your settings, \n// counting from 0.\nfunction amGraphDeselect(chart_id, index, title){\n  document.getElementById(\"graphdeselect\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS HIDDEN ///////////////////////////////////////////////////////\n// amGraphHide(chart_id, index, title)\n// This function is called when the viewer hides the graph by clicking on the checkbox in\n// the legend. Index is the sequential number of a graph in your settings, counting from 0\nfunction amGraphHide(chart_id, index, title){\n  document.getElementById(\"graphhide\").value = index;\n}\n\n// FIND OUT WHICH GRAPH WAS SHOWN ///////////////////////////////////////////////////////\n// amGraphShow(chart_id, index, title)\n// This function is called when the viewer shows the graph by clicking on the checkbox in\n// the legend. Index is the sequential number of a graph in your settings, counting from 0\nfunction amGraphShow(chart_id, index, title){\n  document.getElementById(\"graphshow\").value = index;\n} \n\n// FIND CURRENTLY HOVERED SERIES ////////////////////////////////////////////////////////           \n// amRolledOverSeries(chart_id, series)\n// This function is called when the viewer moves the mouse over the plot area. It returns\n// the value of the series over which the mouse is currently hovered.\nfunction amRolledOverSeries(chart_id, series){\n  document.getElementById(\"series_hover\").value = series;\n}\n\n// FIND WHICH SERIES WAS CLICKED ////////////////////////////////////////////////////////           \n// amClickedOnSeries(chart_id, series)\n// This function is called when the viewer clicks somewhere on the plot area. It returns \n// the value of the series over which the mouse hovered when it was clicked.\nfunction amClickedOnSeries(chart_id, series){\n  document.getElementById(\"series_clicked\").value = series;\n}\n\n// FIND WHICH BULLET WAS CLICKED ////////////////////////////////////////////////////////\n// amClickedOnBullet(chart_id, graph_index, value, series, url, description)\n// This function is called when the viewer clicks on a graph bullet. It returns the\n// sequential number of a graph (graph_index), the value of the data point (value),\n// the series value (series), the URL and the description attributes.\nfunction amClickedOnBullet(chart_id, graph_index, value, series, url, description){\n  document.getElementById(\"bullet_clicked\").value = value;\n}          \n// FIND WHICH BULLET WAS HOVERED ////////////////////////////////////////////////////////\n// amRolledOverBullet(chart_id, graph_index, value, series, url, description)\n// This function is called when the viewer rolls over a graph bullet. It returns the \n// sequential number of a graph (graph_index), the value of the data point (value), \n// the series value (series), the URL and the description attributes.\nfunction amRolledOverBullet(chart_id, graph_index, value, series, url, description){\n  document.getElementById(\"bullet_hover\").value = value;\n}  \n\n\n//////////////////////////////////////////////////////////////////////////////////////////\n// this is example function which is called from right-click menu ////////////////////////\nfunction selectInterval(interval){\n  flashMovie.setZoom(2006 - interval, 2006);\n}\n\n\n</script>\n\n\n<!-- Buttons and forms -->\n\n<form>\n  <hr noshade size=\"1\">\n  Chart initialized: <input type=\"text\" id=\"chartfinished\">\n  Process completed: <input type=\"text\" id=\"processcompleted\">\n  <hr noshade size=\"1\">\n\n  <input type=\"button\" value=\"reload Data\" onclick=\"reloadData();\" />\n\t<input type=\"button\" value=\"reload Settings\" onclick=\"reloadSettings();\" />\n  <input type=\"button\" value=\"reload All\" onclick=\"reloadAll();\" />\n  <hr noshade size=\"1\">\n  \n  <input type=\"button\" value=\"export image\" onclick=\"exportImage();\" />            \t    \n  <input type=\"button\" value=\"print\" onclick=\"print();\" />\n  <input type=\"button\" value=\"print as bitmap\" onclick=\"printAsBitmap();\" />\n  <hr noshade size=\"1\">\n  \t\n  Indicator is on:<input type=\"text\" id=\"series_hover\">\n  Clicked on series:<input type=\"text\" id=\"series_clicked\">\n  <hr noshade size=\"1\">\n  \t\n  Rolled over bullet:<input type=\"text\" id=\"bullet_hover\">\n  Clicked on bullet:<input type=\"text\" id=\"bullet_clicked\">      \n  <hr noshade size=\"1\">\n  \t\n  <textarea id=\"data\" rows=\"6\" cols=\"62\"></textarea><br>\n  <input type=\"button\" value=\"Get data\" onclick=\"getData();\" />\n  <input type=\"button\" value=\"Set Data\" onclick=\"setData();\" />\n  <input type=\"button\" value=\"Append Data\" onclick=\"appendData();\" />\n  <hr noshade size=\"1\">\n  \t \n  Param: <input type=\"text\" id=\"param\" value=\"graphs.graph[0].hidden\"/>\n  Value: <input type=\"text\" id=\"value\" value=\"true\"/>\n  <input type=\"button\" value=\"set param\" onclick=\"setParam();\" />\n  <hr noshade size=\"1\">\n     \n  Param: <input type=\"text\" id=\"getparam\" value=\"axes.x.width\">   \t\t\n  Value: <input type=\"text\" id=\"returnedparam\" />\n  <input type=\"button\" value=\"get param\" onclick=\"getParam();\" />\n  <hr noshade size=\"1\">\n         \n  Zoom from: <input type=\"text\" id=\"from\"/>\n  to: <input type=\"text\" id=\"to\"/>\n  <input type=\"button\" value=\"set zoom\" onclick=\"setZoom();\" />\n  <input type=\"button\" value=\"show all\" onclick=\"showAll();\" />\n  <hr noshade size=\"1\">\n  \n  Select:<input type=\"text\" id=\"graphselect\" value=\"0\"/>\n  <input type=\"button\" value=\"select\" onclick=\"selectGraph();\" />\n  Deselect:<input type=\"text\" id=\"graphdeselect\" value=\"0\"/>\n  <input type=\"button\" value=\"deselect\" onclick=\"deselectGraph();\" />\n  <hr noshade size=\"1\">\n  \n  Show:<input type=\"text\" id=\"graphshow\" value=\"1\"/>\n  <input type=\"button\" value=\"show\" onclick=\"showGraph();\" />\n  Hide:<input type=\"text\" id=\"graphhide\" value=\"1\"/>\n  <input type=\"button\" value=\"hide\" onclick=\"hideGraph();\" />\n  <hr noshade size=\"1\">\n  \n  <textarea id=\"settings\" rows=\"6\" cols=\"62\"></textarea><br>\n  <input type=\"button\" value=\"Get settings\" onclick=\"getSettings();\" />\n  <input type=\"button\" value=\"Set settings\" onclick=\"setSettings();\" />\n  <input type=\"button\" value=\"Rebuild\" onclick=\"rebuild();\" />  \n  <hr noshade size=\"1\">\n\t\n  </form>\n\nRight-click on the chart - you will see custom menu items. These items are configurable - you can assign custom JavaScript functions to them.\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_data1.txt",
    "content": "2007-01-01;482.5001\n2007-01-02;482.1698\n2007-01-03;482.8384\n2007-01-04;483.1293\n2007-01-05;480.0093\n2007-01-06;485.8954\n2007-01-07;485.8954\n2007-01-08;480.0832\n2007-01-09;479.9077\n2007-01-10;457.0415\n2007-01-11;453.4658\n2007-01-12;462.3433\n2007-01-13;462.3433\n2007-01-14;462.3433\n2007-01-15;461.1270\n2007-01-16;473.3008\n2007-01-17;467.6072\n2007-01-18;465.0783\n2007-01-19;465.2581\n2007-01-20;465.2581\n2007-01-21;465.2581\n2007-01-22;477.1390\n2007-01-23;474.0081\n2007-01-24;478.5857\n2007-01-25;478.5117\n2007-01-26;482.8144\n2007-01-27;482.8144\n2007-01-28;482.8144\n2007-01-29;471.3700\n2007-01-30;471.9759\n2007-01-31;476.1921\n2007-02-01;483.8653\n2007-02-02;485.5800\n2007-02-03;485.5800\n2007-02-04;485.5800\n2007-02-05;488.5777\n2007-02-06;490.0683\n2007-02-07;488.5520\n2007-02-08;477.0283\n2007-02-09;478.6511\n2007-02-10;478.6511\n2007-02-11;478.6511\n2007-02-12;466.9880\n2007-02-13;473.9600\n2007-02-14;481.0963\n2007-02-15;477.8714\n2007-02-16;480.8368\n2007-02-17;479.0914\n2007-02-18;479.0914\n2007-02-19;483.9699\n2007-02-20;479.2478\n2007-02-21;479.0233\n2007-02-22;485.3238\n2007-02-23;483.5882\n2007-02-24;483.1858\n2007-02-25;483.1858\n2007-02-26;488.8680\n2007-02-27;467.0742\n2007-02-28;457.8783\n2007-03-01;442.1513\n2007-03-02;446.9608\n2007-03-03;446.9608\n2007-03-04;446.9608\n2007-03-05;449.4007\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_data2.txt",
    "content": "2007-01-01;1457.7123\n2007-01-02;1460.3290\n2007-01-03;1460.3290\n2007-01-04;1450.1445\n2007-01-05;1452.6525\n2007-01-06;1450.1445\n2007-01-07;1450.1445\n2007-01-08;1450.1445\n2007-01-09;1386.7923\n2007-01-10;1363.9036\n2007-01-11;1391.4589\n2007-01-12;1391.9643\n2007-01-13;1391.9643\n2007-01-14;1391.9643\n2007-01-15;1426.7512\n2007-01-16;1432.1966\n2007-01-17;1403.4244\n2007-01-18;1412.9508\n2007-01-19;1400.9971\n2007-01-20;1400.9971\n2007-01-21;1400.9971\n2007-01-22;1420.1312\n2007-01-23;1422.2775\n2007-01-24;1442.3408\n2007-01-25;1448.7695\n2007-01-26;1445.0007\n2007-01-27;1445.0007\n2007-01-28;1445.0007\n2007-01-29;1427.1455\n2007-01-30;1402.2614\n2007-01-31;1419.1256\n2007-02-01;1452.5094\n2007-02-02;1461.2926\n2007-02-03;1461.2926\n2007-02-04;1461.2926\n2007-02-05;1472.0534\n2007-02-06;1483.1822\n2007-02-07;1476.1499\n2007-02-08;1443.7846\n2007-02-09;1455.9704\n2007-02-10;1455.9704\n2007-02-11;1455.9704\n2007-02-12;1424.6636\n2007-02-13;1430.6200\n2007-02-14;1438.2052\n2007-02-15;1442.4262\n2007-02-16;1444.8812\n2007-02-17;1444.8815\n2007-02-18;1444.8815\n2007-02-19;1455.5794\n2007-02-20;1443.7715\n2007-02-21;1450.9808\n2007-02-22;1474.3134\n2007-02-23;1474.6131\n2007-02-24;1474.3134\n2007-02-25;1474.3134\n2007-02-26;1494.2504\n2007-02-27;1436.3225\n2007-02-28;1399.8188\n2007-03-01;1344.8840\n2007-03-02;1357.7611\n2007-03-03;1357.7611\n2007-03-04;1357.7611\n2007-03-05;1308.1609\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#DADADA</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>5</left>                                          <!-- [60](Number / Number%) --> \n      <top>22</top>                                           <!-- [60](Number / Number%) --> \n      <right>5</right>                                        <!-- [60](Number / Number%) --> \n      <bottom>28</bottom>                                     <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->    \n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->      \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length>5</tick_length>                            <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable>false</zoomable>                                <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Index 1</b>]]>\n      </text>        \n    </label>\n  </labels>\n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"1\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title></title>                                         <!-- [] (graph title) -->\n      <color>#FFCC00</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines></vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->\n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/amline_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->\n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->  \n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color>#DADADA</border_color>                      <!-- [#000000] (hex color code) -->                                        \n    <border_alpha>100</border_alpha>                          <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left>5</left>                                          <!-- [60](Number / Number%) --> \n      <top>22</top>                                           <!-- [60](Number / Number%) --> \n      <right>5</right>                                        <!-- [60](Number / Number%) --> \n      <bottom>28</bottom>                                     <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled>false</enabled>                                <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length>5</tick_length>                            <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha>0</alpha>                                        <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable>false</zoomable>                                <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n\n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                         <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                       <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Index 2</b>]]>\n      </text>        \n    </label>    \n  \n  </labels>\n  \n  \n  <graphs>                                                    <!-- GRAPHS SETTINGS. These settings can also be specified in data file, as attributes of <graph>, in this case you can delete everything from <graphs> to </graphs> (including) -->\n                                                              <!-- It is recommended to have graph settings here if you don't want to mix data with other params -->\n                                                              <!-- copy <graph>...</graph> (including) as many times as many graphs you have and edit settings individually -->\n                                                              <!-- if graph settings are defined both here and in data file, the ones from data file are used -->\n    <graph gid=\"0\">                                           <!-- if you are using XML data file, graph \"gid\" must match graph \"gid\" in data file -->\n                                                            \n      <axis>left</axis>                                       <!-- [left] (left/ right) indicates which y axis should be used -->\n      <title></title>                                         <!-- [] (graph title) -->\n      <color>#CC0000</color>                                  <!-- [] (hex color code) if not defined, uses colors from this array: #FF0000, #0000FF, #00FF00, #FF9900, #CC00CC, #00CCCC, #33FF00, #990000, #000066 -->\n      <color_hover></color_hover>                             <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                               <!-- [100] (0 - 100) -->\n      <line_width></line_width>                               <!-- [0] (Number) 0 for hairline -->                                    \n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) if you want the chart to be area chart, use bigger than 0 value -->\n      <fill_color></fill_color>                               <!-- [grpah.color] (hex color code) Separate color codes with comas for gradient -->\n      <balloon_color></balloon_color>                         <!-- [graph color] (hex color code) leave empty to use the same color as graph -->\n      <balloon_alpha></balloon_alpha>                         <!-- [100] (0 - 100) -->      \n      <balloon_text_color></balloon_text_color>               <!-- [#FFFFFF] (hex color code) -->\n      <bullet></bullet>                                       <!-- [] (square, round, square_outlined, round_outlined, square_outline, round_outline, filename.swf) can be used predefined bullets or loaded custom bullets. Leave empty if you don't want to have bullets at all. Outlined bullets use plot area color for outline color -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n      <bullet_size></bullet_size>                             <!-- [8](Number) affects only predefined bullets, does not change size of custom loaded bullets -->\n      <bullet_color></bullet_color>                           <!-- [graph color] (hex color code) affects only predefined (square and round) bullets, does not change color of custom loaded bullets. Leave empty to use the same color as graph  -->\n      <bullet_alpha></bullet_alpha>                           <!-- [graph alpha] (hex color code) Leave empty to use the same alpha as graph -->\n      <hidden></hidden>                                       <!-- [false] (true / false) vill not be visible until you check corresponding checkbox in the legend -->\n      <selected></selected>                                   <!-- [true] (true / false) if true, balloon indicating value will be visible then roll over plot area -->\n      <balloon_text>\n        <![CDATA[${value}]]>                                  <!-- [<b>{value}</b><br>{description}] ({title} {value} {series} {description} {percents}) You can format any balloon text: {title} will be replaced with real title, {value} - with value and so on. You can add your own text or html code too. -->\n      </balloon_text>      \n      <data_labels>\n        <![CDATA[]]>                                          <!-- [] ({title} {value} {series} {description} {percents}) Data labels can display value (and more) near your point on the plot area. -->\n                                                              <!-- to avoid overlapping, data labels, the same as bullets are not visible if there are more then hide_bullets_count data points on plot area. -->                                                              \n      </data_labels>  \n      <data_labels_text_color></data_labels_text_color>       <!-- [text_color] (hex color code) --> \n      <data_labels_text_size></data_labels_text_size>         <!-- [text_size] (Number) -->\n      <data_labels_position></data_labels_position>           <!-- [above] (below / above) -->            \n      <vertical_lines>true</vertical_lines>                       <!-- [false] (true / false) whether to draw vertical lines or not. If you want to show vertical lines only (without the graph, set line_alpha to 0 -->\n      <visible_in_legend></visible_in_legend>                 <!-- [true] (true / false) whether to show legend entry for this graph or not -->      \n    </graph>\n  </graphs>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>    \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/multiple_charts_on_one_page/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Multiple charts on one page</title>\n</head>\n<body>\n<table width=\"520\" border=\"0\", cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<!-- this id must be unique! -->\n  <div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline1\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data1.txt\"));\t\t\n\t\tso.write(\"flashcontent1\");  // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n\n</td>\n<td>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../amline/swfobject.js\"></script>\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent2\">  \n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline2\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data2.txt\"));\n\t\tso.write(\"flashcontent2\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</td>\n</tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/no_interactivity/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph color=\"#CC0000\" title=\"Nominal\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t\t<graph color=\"#CCBB00\" title=\"Inflation adjusted 2006\">\n\t\t\t<value xid=\"0\">20.21</value>\n\t\t\t<value xid=\"1\">19.73</value>\n\t\t\t<value xid=\"2\">18.43</value>\n\t\t\t<value xid=\"3\">18.08</value>\n\t\t\t<value xid=\"4\">19.01</value>\n\t\t\t<value xid=\"5\">19.57</value>\n\t\t\t<value xid=\"6\">19.58</value>\n\t\t\t<value xid=\"7\">19.43</value>\n\t\t\t<value xid=\"8\">20.83</value>\n\t\t\t<value xid=\"9\">19.73</value>\n\t\t\t<value xid=\"10\">18.87</value>\n\t\t\t<value xid=\"11\">18.43</value>\n\t\t\t<value xid=\"12\">18.31</value>\n\t\t\t<value xid=\"13\">18.19</value>\n\t\t\t<value xid=\"14\">17.89</value>\n\t\t\t<value xid=\"15\">17.60</value>\n\t\t\t<value xid=\"16\">17.20</value>\n\t\t\t<value xid=\"17\">16.84</value>\n\t\t\t<value xid=\"18\">16.56</value>\n\t\t\t<value xid=\"19\">16.00</value>\n\t\t\t<value xid=\"20\">15.95</value>\n\t\t\t<value xid=\"21\">15.52</value>\n\t\t\t<value xid=\"22\">15.85</value>\n\t\t\t<value xid=\"23\">15.36</value>\n\t\t\t<value xid=\"24\">16.59</value>\n\t\t\t<value xid=\"25\">26.39</value>\n\t\t\t<value xid=\"26\">27.00</value>\n\t\t\t<value xid=\"27\">27.26</value>\n\t\t\t<value xid=\"28\">26.78</value>\n\t\t\t<value xid=\"29\">26.14</value>\n\t\t\t<value xid=\"30\">32.98</value>\n\t\t\t<value xid=\"31\">49.63</value>\n\t\t\t<value xid=\"32\">66.20</value>\n\t\t\t<value xid=\"33\">55.98</value>\n\t\t\t<value xid=\"34\">49.80</value>\n\t\t\t<value xid=\"35\">47.18</value>\n\t\t\t<value xid=\"36\">42.40</value>\n\t\t\t<value xid=\"37\">21.62</value>\n\t\t\t<value xid=\"38\">25.68</value>\n\t\t\t<value xid=\"39\">20.14</value>\n\t\t\t<value xid=\"40\">24.22</value>\n\t\t\t<value xid=\"41\">29.03</value>\n\t\t\t<value xid=\"42\">23.00</value>\n\t\t\t<value xid=\"43\">21.59</value>\n\t\t\t<value xid=\"44\">18.68</value>\n\t\t\t<value xid=\"45\">16.86</value>\n\t\t\t<value xid=\"46\">18.17</value>\n\t\t\t<value xid=\"47\">22.40</value>\n\t\t\t<value xid=\"48\">20.39</value>\n\t\t\t<value xid=\"49\">12.66</value>\n\t\t\t<value xid=\"50\">17.78</value>\n\t\t\t<value xid=\"51\">29.54</value>\n\t\t\t<value xid=\"52\">23.39</value>\n\t\t\t<value xid=\"53\">23.78</value>\n\t\t\t<value xid=\"54\">28.42</value>\n\t\t\t<value xid=\"55\">54.93</value>\n\t\t\t<value xid=\"56\">47.97</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/no_interactivity/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                     \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count>10</approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate>45</rotate>                                     <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>      \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off>false</graph_on_off>                        <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->\n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->        \n  </strings>\n  \n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>  \n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>15</text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Historical Crude Oil Prices</b>]]>\n      </text>        \n    </label>    \n  </labels>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis>right</axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/no_interactivity/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Chart without interactivity</title>\n</head>\n<body>\n\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/stacked_area_chart/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">2007 07 01</value>\n\t\t<value xid=\"1\">2007 07 02</value>\n\t\t<value xid=\"2\">2007 07 03</value>\n\t\t<value xid=\"3\">2007 07 04</value>\n\t\t<value xid=\"4\">2007 07 05</value>\n\t\t<value xid=\"5\">2007 07 06</value>\n\t\t<value xid=\"6\">2007 07 07</value>\n\t\t<value xid=\"7\">2007 07 08</value>\n\t\t<value xid=\"8\">2007 07 09</value>\n\t\t<value xid=\"9\">2007 07 10</value>\n\n\t</series>\n\t<graphs>\n\t\t<graph title=\"One\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#FCD202\">\n\t\t\t<value xid=\"0\">5</value>\n\t\t\t<value xid=\"1\">5.2</value>\n\t\t\t<value xid=\"2\">4.9</value>\n\t\t\t<value xid=\"3\">6.3</value>\n\t\t\t<value xid=\"4\">6.5</value>\n\t\t\t<value xid=\"5\">7.1</value>\n\t\t\t<value xid=\"6\">7.8</value>\n\t\t\t<value xid=\"7\">8.6</value>\n\t\t\t<value xid=\"8\">8.2</value>\n\t\t\t<value xid=\"9\">8</value>\n\t\t\t<value xid=\"10\">8</value>\n\t\t</graph>\n\t\t<graph title=\"Two\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#FF9E01\">\n\t\t\t<value xid=\"0\">7.1</value>\n\t\t\t<value xid=\"1\">8.3</value>\n\t\t\t<value xid=\"2\">8.3</value>\n\t\t\t<value xid=\"3\">8.8</value>\n\t\t\t<value xid=\"4\">9.1</value>\n\t\t\t<value xid=\"5\">9.7</value>\n\t\t\t<value xid=\"6\">9.8</value>\n\t\t\t<value xid=\"7\">9.3</value>\n\t\t\t<value xid=\"8\">10.3</value>\n\t\t\t<value xid=\"9\">9.3</value>\n\t\t\t<value xid=\"10\">8.7</value>\t\t\t\n\t\t</graph>\n\t\t<graph title=\"Three\" fill_alpha=\"60\" line_width=\"2\" bullet=\"round\" color=\"#0D8ECF\">\n\t\t\t<value xid=\"0\">3.1</value>\n\t\t\t<value xid=\"1\">2.3</value>\n\t\t\t<value xid=\"2\">2.3</value>\n\t\t\t<value xid=\"3\">2.8</value>\n\t\t\t<value xid=\"4\">1.1</value>\n\t\t\t<value xid=\"5\">1.7</value>\n\t\t\t<value xid=\"6\">1.8</value>\n\t\t\t<value xid=\"7\">2.3</value>\n\t\t\t<value xid=\"8\">1.3</value>\n\t\t\t<value xid=\"9\">1.3</value>\n\t\t\t<value xid=\"10\">0.7</value>\t\t\t\n\t\t</graph>\t\t\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/stacked_area_chart/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->\n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->       \n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n                                                              <!-- Legend, buttons labels will not be repositioned if you set your x and y values for these objects -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) If you are using this feature I strongly recommend to turn off zoom function (set <zoomable>false</zoomable>) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval >0 -->\n \n  <connect></connect>                                         <!-- [false] (true / false) whether to connect points if y data is missing -->\n  <hide_bullets_count></hide_bullets_count>                   <!-- [] (Number) if there are more then hideBulletsCount points on the screen, bullets can be hidden, to avoid mess. Leave empty, or 0 to show bullets all the time. This rule doesn't influence if custom bullet is defined near y value, in data file -->\n  <link_target></link_target>                                 <!-- [] (_blank, _top ...) -->\n  <start_on_axis></start_on_axis>                             <!-- [true] (true / false) if set to false, graph is moved 1/2 of one series interval from Y axis -->\n  <colors></colors>                                           <!-- [#FF0000,#0000FF,#00FF00,#FF9900,#CC00CC,#00CCCC,#33FF00,#990000,#000066,#555555] Colors of graphs. if the graph color is not set, color from this array will be used -->  \n  <rescale_on_hide></rescale_on_hide>                         <!-- [true] (true/false) When you show or hide graphs, the chart recalculates min and max values (rescales the chart). If you don't want this, set this to false. -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n  \n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in \"path\" folder (\"path\" is set in HTML) -->\n  </background>\n     \n  <plot_area>                                                 <!-- PLOT AREA (the area between axes) -->\n    <color></color>                                           <!-- [#FFFFFF](hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) if you want it to be different than background color, use bigger than 0 value -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->                                        \n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <margins>                                                 <!-- plot area margins -->\n      <left></left>                                           <!-- [60](Number / Number%) --> \n      <top></top>                                             <!-- [60](Number / Number%) --> \n      <right></right>                                         <!-- [60](Number / Number%) --> \n      <bottom></bottom>                                       <!-- [80](Number / Number%) --> \n    </margins>\n  </plot_area>\n  \n  <scroller>\n    <enabled></enabled>                                       <!-- [true] (true / false) whether to show scroller when chart is zoomed or not -->\n    <y></y>                                                   <!-- [] (Number) Y position of scroller. If not set here, will be displayed above plot area -->    \n    <color></color>                                           <!-- [#DADADA] (hex color code) scrollbar color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (Number) scrollbar alpha -->\n    <bg_color></bg_color>                                     <!-- [#F0F0F0] (hex color code) scroller background color. Separate color codes with comas for gradient -->\n    <bg_alpha></bg_alpha>                                     <!-- [100] (Number) scroller background alpha -->\n    <height></height>                                         <!-- [10] (Number) scroller height -->    \n  </scroller>  \n  \n  <grid>                                                      <!-- GRID -->\n    <x>                                                       <!-- vertical grid -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->                                                         \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false](true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->  \n      <approx_count></approx_count>                           <!-- [4] (Number) approximate number of gridlines -->\n    </x>\n    <y_left>                                                  <!-- horizontal grid, Y left axis. Visible only if there is at least one graph assigned to left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_left>\n    <y_right>                                                 <!-- horizontal grid, Y right axis. Visible only if there is at least one graph assigned to right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->          \n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [15] (0 - 100) -->\n      <dashed></dashed>                                       <!-- [false] (true / false) -->\n      <dash_length></dash_length>                             <!-- [5] (Number) -->\n      <approx_count></approx_count>                           <!-- [10] (Number) approximate number of gridlines -->\n      <fill_color></fill_color>                               <!-- [#FFFFFF] (hex color code) every second area between gridlines will be filled with this color (you will need to set fill_alpha > 0) -->\n      <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of fill -->      \n    </y_right>        \n  </grid>\n  \n  <values>                                                    <!-- VALUES -->\n    <x>                                                       <!-- x axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->      \n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [false] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->          \n    </x>\n    <y_left>                                                  <!-- y left axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically. -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->\n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) --> \n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->            \n    </y_left>\n    <y_right>                                                 <!-- y right axis -->\n      <enabled></enabled>                                     <!-- [true] (true / false) -->\n      <reverse></reverse>                                     <!-- [false] (true / false) whether to reverse this axis values or not. If set to true, values will start from biggest number and will end with a smallest number -->    \n      <rotate></rotate>                                       <!-- [0] (0 - 90) angle of rotation. If you want to rotate by degree from 1 to 89, you must have font.swf file in fonts folder -->\n      <min></min>                                             <!-- [] (Number) minimum value of this axis. If empty, this value will be calculated automatically -->\n      <max></max>                                             <!-- [] (Number) maximum value of this axis. If empty, this value will be calculated automatically -->    \n      <strict_min_max></strict_min_max>                       <!-- [false] (true / false) by default, if your values are bigger then defined max (or smaller then defined min), max and min is changed so that all the chart would fit to chart area. If you don't want this, set this option to true. -->\n      <frequency></frequency>                                 <!-- [1] (Number) how often values should be placed, 1 - near every gridline, 2 - near every second gridline... -->\n      <skip_first></skip_first>                               <!-- [true] (true / false) to skip or not first value -->\n      <skip_last></skip_last>                                 <!-- [false] (true / false) to skip or not last value -->\n      <color></color>                                         <!-- [text_color] (hex color code) -->\n      <text_size></text_size>                                 <!-- [text_size] (Number) -->\n      <unit></unit>                                           <!-- [] (text) unit which will be added to values on y axis-->\n      <unit_position></unit_position>                         <!-- [right] (left / right) -->\n      <integers_only></integers_only>                         <!-- [false] (true / false) if set to true, values with decimals will be omitted -->\n      <inside></inside>                                       <!-- [false] (true / false) if set to true, axis values will be displayed inside plot area. This setting will not work for values rotated by 1-89 degrees (0 and 90 only) -->\n      <duration></duration>                                   <!-- [] (ss/mm/hh/DD) In case you want your axis to display formatted durations instead of numbers, you have to set the unit of the duration in your data file. For example, if your values in data file represents seconds, set \"ss\" here.-->                  \n    </y_right>\n  </values>\n  \n  <axes>                                                      <!-- axes -->\n    <x>                                                       <!-- X axis -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n    </x>\n    <y_left>                                                  <!-- Y left axis, visible only if at least one graph is assigned to this axis -->\n      <type>stacked</type>                                    <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_left>\n    <y_right>                                                 <!-- Y right axis, visible only if at least one graph is assigned to this axis -->\n      <type></type>                                           <!-- [line] (line, stacked, 100% stacked) -->\n      <color></color>                                         <!-- [#000000] (hex color code) -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) -->\n      <width></width>                                         <!-- [2] (Number) line width, 0 for hairline -->\n      <tick_length></tick_length>                             <!-- [7] (Number) -->\n      <logarithmic></logarithmic>                             <!-- [false] (true / false) If set to true, this axis will use logarithmic scale instead of linear -->\n    </y_right>\n  </axes>  \n  \n  <indicator>                                                 <!-- INDICATOR -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <zoomable></zoomable>                                     <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) line and x balloon background color -->\n    <line_alpha></line_alpha>                                 <!-- [100] (0 - 100) -->\n    <selection_color></selection_color>                       <!-- [#BBBB00] (hex color code) -->\n    <selection_alpha></selection_alpha>                       <!-- [25] (0 - 100) -->\n    <x_balloon_enabled></x_balloon_enabled>                   <!-- [true] (true / false) -->\n    <x_balloon_text_color></x_balloon_text_color>             <!-- [text_color] (hex color code) -->\n  </indicator>\n    \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <only_one></only_one>                                     <!-- [false] (true / false) if set to true, only one balloon at a time will be displayed -->\n    <on_off></on_off>                                         <!-- [true] (true/false) whether it will be possible to turn on or off y balloons by clicking on a legend or on a graph -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If not set, graph.balloon_color will be used.  -->\n    <alpha></alpha>                                           <!-- [] (0 - 100) balloon background opacity. If not set, graph.balloon_alpha will be used. -->\n    <text_color></text_color>                                 <!-- [] (hex color code) baloon text color. If not set, graph.balloon_text_color will be used -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [] (Number) The maximum width of a balloon. If not set, half width of plot area will be used -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->\n  </balloon>        \n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) if empty, will be equal to left margin -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be 20px below x axis values -->\n    <width></width>                                           <!-- [] (Number / Number%) if empty, will be equal to plot area width -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend --> \n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->    \n    <graph_on_off></graph_on_off>                             <!-- [true] (true / false) if true, color box gains \"checkbox\" function - it is possible to make graphs visible/invisible by clicking on this checkbox -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border-->\n      <key_mark_color></key_mark_color>                       <!-- [#FFFFFF] (hex color code) key tick mark color -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [80] (Number) width of text field for value -->\n      <align></align>                                         <!-- [right] (right / left) -->\n      <text><![CDATA[]]></text>                               <!-- [{value}] ({title} {value} {series} {description} {percents}) You can format any text: {value} will be replaced with value, {description} - with description and so on. You can add your own text or html code too. -->\n     </values>    \n  </legend>  \n  \n  <zoom_out_button>\n    <x></x>                                                   <!-- [] (Number) x position of zoom out button, if not defined, will be aligned to right of plot area -->\n    <y></y>                                                   <!-- [] (Number) y position of zoom out button, if not defined, will be aligned to top of plot area -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) button text and magnifying glass icon color -->\n    <text_color_hover></text_color_hover>                     <!-- [#BBBB00] (hex color code) button text and magnifying glass icon roll over color -->    \n    <text_size></text_size>                                   <!-- [text_size] (Number) button text size -->\n    <text></text>                                             <!-- [Show all] (text) -->    \n  </zoom_out_button> \n   \n  <help>                                                      <!-- HELP button and balloon -->  \n    <button>                                                  <!-- help button is only visible if balloon text is defined -->\n      <x></x>                                                 <!-- [] (Number / Number% / !Number) x position of help button, if not defined, will be aligned to right of chart area -->\n      <y></y>                                                 <!-- [] (Number / Number% / !Number) y position of help button, if not defined, will be aligned to top of chart area -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_color_hover></text_color_hover>                   <!-- [#BBBB00](hex color code) button text roll over color -->    \n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text></text>                                           <!-- [?] (text) -->                                 \n    </button>    \n    <balloon>                                                 <!-- help balloon -->\n      <color></color>                                         <!-- [#000000] (hex color code) background color -->\n      <alpha></alpha>                                         <!-- [100] (0 - 100) background alpha -->\n      <width></width>                                         <!-- [300] (Number) -->\n      <text_color></text_color>                               <!-- [#FFFFFF] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [] (Number) button text size -->\n      <text><![CDATA[]]></text>                               <!-- [] (text) some html tags may be used (supports <b>, <i>, <u>, <font>, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n    </balloon>    \n  </help> \n\n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use amline/export.php or amline/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>  \n    \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data for selected period is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <error_in_data_file></error_in_data_file>                 <!-- [Error in data file] (text) this text is displayed if there is an error in data file or there is no data in file. \"There is no data\" means that there should actually be at least one space in data file. If data file will be completly empty, it will display \"error loading file\" text -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n    <wrong_zoom_value></wrong_zoom_value>                     <!-- [Incorrect values] (text) this text is displayed if you set zoom through JavaScript and entered from or to value was not find between series -->    \n    <!-- the strings below are only important if you format your axis values as durations -->\n    <ss></ss>                                                <!-- [] unit of seconds -->\n    <mm></mm>                                                <!-- [:] unit of minutes -->\n    <hh></hh>                                                <!-- [:] unit of hours -->\n    <DD></DD>                                                <!-- [d. ] unit of days -->    \n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu>\n  \n  <vertical_lines>                                            <!-- line chart can also display vertical lines/columns (set <vertical_lines>true</vertical_lines> in graph settings for that). If you also set <line_alpha>0</line_alpha> your line chart will become column chart -->\n    <width></width>                                           <!-- [0] (0 - 100) width of vertical line in percents. 0 for hairline. Set > 0 if you want to have column -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) -->\n    <clustered></clustered>                                   <!-- [false] in case you have more then one graph with vertical lines enabled, you might want to place your columns next to each other, set true for that. -->\n    <mask></mask>                                             <!-- [true] (true / false) as line chart by default starts on axis, and your column width is >0, then some part of first and last column will be outside plot area (incase you don't set <start_on_axis>false</false> Mask will cut off the part outside the plot area. Set to false if you don't want this. -->\n  </vertical_lines>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want. Some html tags supported: <b>, <i>, <u>, <font>, <a href=\"\"> -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x></x>                                                 <!-- [0] (Number / Number% / !Number) -->\n      <y>20</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate></rotate>                                       <!-- [false] (true / false) -->\n      <width>520</width>                                      <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size></text_size>                                 <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Stacked area chart example</b>]]>\n      </text>        \n    </label>    \n  </labels>\n  \n\t<guides>\t                                                 <!-- guides are straight lines drawn through all plot area at a give value. Can also be filled with color -->\n\t <max_min></max_min>                                       <!-- [false] (true / false) whether to include guides' values when calculating min and max of a chart -->\t\n\t <guide>                                                   <!-- there can be any number of quides. guides can also be set in data xml file, using the same syntax as here -->\n\t   <axis></axis>                                           <!-- [left] (left / right) y axis of a guide. There should be at least one graph assigned to this axis in order guide to be visible --> \n\t   <start_value></start_value>                             <!-- (Number) value at which guide should be placed -->\n\t   <end_value></end_value>                                 <!-- (Number) if you set value here too, another quide will be drawn. If you set fill alpha > 0, then the area between these quides will be filled with color -->\n\t   <title></title>                                         <!-- [] (String) text which will be displayed near the guide -->\n\t   <width></width>                                         <!-- [0] (Number) width of a guide line (0 for hairline) -->\n\t   <color></color>                                         <!-- [#000000] (hex color code) color of guide line -->   \n\t   <alpha></alpha>                                         <!-- [100] (0 - 100) opacity of guide line -->\n\t   <fill_color></fill_color>                               <!-- [guide.color] (hex color code) fill color. If not defined, color of a guide will be used. Separate color codes with comas for gradient -->\n\t   <fill_alpha></fill_alpha>                               <!-- [0] (0 - 100) opacity of a fill -->                                  \n\t   <inside></inside>                                       <!-- [values.y_{axis}.inside] whether to place title inside plot area -->\n\t   <centered></centered>                                   <!-- [true] (true / false) if you have start and end values defined, title can be placed in the middle between these values. If false, it will be placed near start_value -->\n\t   <rotate></rotate>                                       <!-- [values.y_{axis}.rotate](0 - 90) angle of rotation of title -->\n\t   <text_size></text_size>                                 <!-- [values.y_{axis}.text_size] (Number) -->\n\t   <text_color></text_color>                               <!-- [values.y_{axis}.color](hex color code) -->\n     <dashed></dashed>                                       <!-- [false] (true / false) -->\n     <dash_length></dash_length>                             <!-- [5] (Number) -->     \t   \n\t </guide>  \n\t</guides>  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/stacked_area_chart/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>amline</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/amline_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chart>\n\t<series>\n\t\t<value xid=\"0\">1949</value>\n\t\t<value xid=\"1\">1950</value>\n\t\t<value xid=\"2\">1951</value>\n\t\t<value xid=\"3\">1952</value>\n\t\t<value xid=\"4\">1953</value>\n\t\t<value xid=\"5\">1954</value>\n\t\t<value xid=\"6\">1955</value>\n\t\t<value xid=\"7\">1956</value>\n\t\t<value xid=\"8\">1957</value>\n\t\t<value xid=\"9\">1958</value>\n\t\t<value xid=\"10\">1959</value>\n\t\t<value xid=\"11\">1960</value>\n\t\t<value xid=\"12\">1961</value>\n\t\t<value xid=\"13\">1962</value>\n\t\t<value xid=\"14\">1963</value>\n\t\t<value xid=\"15\">1964</value>\n\t\t<value xid=\"16\">1965</value>\n\t\t<value xid=\"17\">1966</value>\n\t\t<value xid=\"18\">1967</value>\n\t\t<value xid=\"19\">1968</value>\n\t\t<value xid=\"20\">1969</value>\n\t\t<value xid=\"21\">1970</value>\n\t\t<value xid=\"22\">1971</value>\n\t\t<value xid=\"23\">1972</value>\n\t\t<value xid=\"24\">1973</value>\n\t\t<value xid=\"25\">1974</value>\n\t\t<value xid=\"26\">1975</value>\n\t\t<value xid=\"27\">1976</value>\n\t\t<value xid=\"28\">1977</value>\n\t\t<value xid=\"29\">1978</value>\n\t\t<value xid=\"30\">1979</value>\n\t\t<value xid=\"31\">1980</value>\n\t\t<value xid=\"32\">1981</value>\n\t\t<value xid=\"33\">1982</value>\n\t\t<value xid=\"34\">1983</value>\n\t\t<value xid=\"35\">1984</value>\n\t\t<value xid=\"36\">1985</value>\n\t\t<value xid=\"37\">1986</value>\n\t\t<value xid=\"38\">1987</value>\n\t\t<value xid=\"39\">1988</value>\n\t\t<value xid=\"40\">1989</value>\n\t\t<value xid=\"41\">1990</value>\n\t\t<value xid=\"42\">1991</value>\n\t\t<value xid=\"43\">1992</value>\n\t\t<value xid=\"44\">1993</value>\n\t\t<value xid=\"45\">1994</value>\n\t\t<value xid=\"46\">1995</value>\n\t\t<value xid=\"47\">1996</value>\n\t\t<value xid=\"48\">1997</value>\n\t\t<value xid=\"49\">1998</value>\n\t\t<value xid=\"50\">1999</value>\n\t\t<value xid=\"51\">2000</value>\n\t\t<value xid=\"52\">2001</value>\n\t\t<value xid=\"53\">2002</value>\n\t\t<value xid=\"54\">2003</value>\n\t\t<value xid=\"55\">2004</value>\n\t\t<value xid=\"56\">2005</value>\n\t\t<value xid=\"57\">2006</value>\n\t</series>\n\t<graphs>\n\t\t<graph gid=\"1\">\n\t\t\t<value xid=\"0\">2.54</value>\n\t\t\t<value xid=\"1\">2.51</value>\n\t\t\t<value xid=\"2\">2.53</value>\n\t\t\t<value xid=\"3\">2.53</value>\n\t\t\t<value xid=\"4\">2.68</value>\n\t\t\t<value xid=\"5\">2.78</value>\n\t\t\t<value xid=\"6\">2.77</value>\n\t\t\t<value xid=\"7\">2.79</value>\n\t\t\t<value xid=\"8\">3.09</value>\n\t\t\t<value xid=\"9\">3.01</value>\n\t\t\t<value xid=\"10\">2.90</value>\n\t\t\t<value xid=\"11\">2.88</value>\n\t\t\t<value xid=\"12\">2.89</value>\n\t\t\t<value xid=\"13\">2.90</value>\n\t\t\t<value xid=\"14\">2.89</value>\n\t\t\t<value xid=\"15\">2.88</value>\n\t\t\t<value xid=\"16\">2.86</value>\n\t\t\t<value xid=\"17\">2.88</value>\n\t\t\t<value xid=\"18\">2.92</value>\n\t\t\t<value xid=\"19\">2.94</value>\n\t\t\t<value xid=\"20\">3.09</value>\n\t\t\t<value xid=\"21\">3.18</value>\n\t\t\t<value xid=\"22\">3.39</value>\n\t\t\t<value xid=\"23\">3.39</value>\n\t\t\t<value xid=\"24\">3.89</value>\n\t\t\t<value xid=\"25\">6.87</value>\n\t\t\t<value xid=\"26\">7.67</value>\n\t\t\t<value xid=\"27\">8.19</value>\n\t\t\t<value xid=\"28\">8.57</value>\n\t\t\t<value xid=\"29\">9.00</value>\n\t\t\t<value xid=\"30\">12.64</value>\n\t\t\t<value xid=\"31\">21.59</value>\n\t\t\t<value xid=\"32\">31.77</value>\n\t\t\t<value xid=\"33\">28.52</value>\n\t\t\t<value xid=\"34\">26.19</value>\n\t\t\t<value xid=\"35\">25.88</value>\n\t\t\t<value xid=\"36\">24.09</value>\n\t\t\t<value xid=\"37\">12.51</value>\n\t\t\t<value xid=\"38\">15.40</value>\n\t\t\t<value xid=\"39\">12.58</value>\n\t\t\t<value xid=\"40\">15.86</value>\n\t\t\t<value xid=\"41\">20.03</value>\n\t\t\t<value xid=\"42\">16.54</value>\n\t\t\t<value xid=\"43\">15.99</value>\n\t\t\t<value xid=\"44\">14.25</value>\n\t\t\t<value xid=\"45\">13.19</value>\n\t\t\t<value xid=\"46\">14.62</value>\n\t\t\t<value xid=\"47\">18.46</value>\n\t\t\t<value xid=\"48\">17.23</value>\n\t\t\t<value xid=\"49\">10.87</value>\n\t\t\t<value xid=\"50\">15.56</value>\n\t\t\t<value xid=\"51\">26.72</value>\n\t\t\t<value xid=\"52\">21.84</value>\n\t\t\t<value xid=\"53\">22.51</value>\n\t\t\t<value xid=\"54\">27.54</value>\n\t\t\t<value xid=\"55\">38.93</value>\n\t\t\t<value xid=\"56\">46.47</value>\n\t\t\t<value xid=\"57\">58.30</value>\n\t\t</graph>\n\t</graphs>\n</chart>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/amline_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<settings>\n   <!-- chart config -->\n   <legend>\n      <enabled>false</enabled>\n   </legend>\n   \n   \n   <!-- plugin config -->   \n   <plugins>\n    <!-- value indicator plugin is suitable for line chart, column chart & xy chart -->\n    <plugin file=\"../amline/plugins/value_indicator.swf\" position=\"above\">      <!-- file should be located in \"path\" folder. position can be \"behind\" or \"above\". \"behind\" means that the plugin will be loaded behind graphs -->\n      <chart_type>line</chart_type>                                             <!-- [line] (line / column / xy) this plugin can be used with line or with column chart -->\n      <axis>left</axis>                                                         <!-- [left] (left / right / x / y) if used with line chat use left or right, if used with xy chart, use x or y -->\n      <line_color>#BBBB00</line_color>                                          <!-- [#BBBB00] (hex color code) -->\n      <line_alpha></line_alpha>                                                 <!-- [100] (0 - 100) -->\n      <text_color>#000000</text_color>                                          <!-- [settings.text_color] -->\n      <text_size>13</text_size>                                                 <!-- [settings.tex_size] -->\n      <precision>2</precision>                                                  <!-- [0] (Number) how many numbers after comma should be shown -->\n    </plugin>\n  </plugins>\n  \n  \n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/examples/value_indicator_plugin/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>amline</title>\n</head>\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- amline script-->\n  <script type=\"text/javascript\" src=\"../../amline/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../amline/amline.swf\", \"amline\", \"100%\", \"100%\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../amline/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"amline_settings.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"amline_data.xml\"));\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of amline script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/licence.txt",
    "content": "*********************************************************************************\nThis AmCharts software, Line&Area chart is free under a linkware license\n\nThis means you may not remove or hide in any other way link to amcharts\nweb site - www.amcharts.com.\n\nIf you wish to remove the link, you should purchase commercial license.\n\nYou may not redistribute, sublicense or sell this program without written\npermission of Antanas Marcelionis, the author of amcharts software.\n\nThis software is provided without warranty.\n*********************************************************************************\nA commercial version (without link) is available at amCharts's website: \nhttp://www.amcharts.com/buy/\n\nPlease use amCharts Support Forum for any support queries:\nhttp://www.amcharts.com/forum\n*********************************************************************************\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/amline_1.6.4.1/readme.txt",
    "content": "********************************************************************************\nCheck documentation for help on all topics:\nhttp://www.amcharts.com/docs/\n\nIncase you don't find something, post your questions to support forum:\nhttp://www.amcharts.com/forum/\n\nYou can use amCharts visual editor to configure your charts:\nhttp://extra.amcharts.com/editor/ \n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/amcharts_key.txt",
    "content": "-www.cnhys.com-1422-7223-www.cnhys.com-"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/ampie_data.txt",
    "content": "[title];[value];[pull_out];[color];[url];[description];[alpha];[label_radius]\nChina;1314.4;;;http://www.interactivemaps.org\nIndia;1120.4 \nUnited States;300.38\nIndonesia;233.52 \nBrazil;187.67 \nPakistan;158.85 \nBangladesh;148.9\nOther Countries;3007.5;true;;http://www.amcharts.com;Click to find out more\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Twice a day\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\">258</slice>\n  <slice title=\"Once a week\">154</slice>\n  <slice title=\"Never\" url=\"http://www.interactivemaps.org\" description=\"Click on the slice to find more information\" alpha=\"50\">114</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>1</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator></thousands_separator>                 <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes --> \n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y></y>                                                   <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>90</radius>                                       <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha></start_alpha>                               <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>0</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} ({percents}%)]]>              <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha>20</border_alpha>                           <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing>9</spacing>                                      <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins>5</margins>                                      <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>  \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How often do you brush your teeth?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/export.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\"  CodeFile=\"export.aspx.cs\" Inherits=\"_export\" %>"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/export.aspx.cs",
    "content": "using System;\nusing System.Web;\nusing System.Drawing;\nusing System.Drawing.Imaging;\n\npublic partial class _export : System.Web.UI.Page \n{\n    protected void Page_Load(object sender, EventArgs e)\n    {\n        if (Request.Form[\"width\"] != null && Request.Form[\"width\"] != String.Empty)\n        {\n            // image dimensions\n            int width = Int32.Parse((Request.Form[\"width\"].IndexOf('.') != -1) ? Request.Form[\"width\"].Substring(0, Request.Form[\"width\"].IndexOf('.')) : Request.Form[\"width\"]);\n            int height = Int32.Parse((Request.Form[\"height\"].IndexOf('.') != -1) ? Request.Form[\"height\"].Substring(0, Request.Form[\"height\"].IndexOf('.')) : Request.Form[\"height\"]);\n\n            // image\n            Bitmap result = new Bitmap(width, height);\n\n            // set pixel colors\n            for (int y = 0; y < height; y++)\n            {\n                // column counter for the row\n                int x = 0;\n                // get current row data\n                string[] row = Request.Form[\"r\" + y].Split(new char[] { ',' });\n                // set pixels in the row\n                for (int c = 0; c < row.Length; c++)\n                {\n                    // get pixel color and repeat count\n                    string[] pixel = row[c].Split(new char[] { ':' });\n                    Color current_color = ColorTranslator.FromHtml(\"#\" + pixel[0]);\n                    int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;\n\n                    // set pixel(s)\n                    for (int l = 0; l < repeat; l++)\n                    {\n                        result.SetPixel(x, y, current_color);\n                        x++;\n                    }\n                }\n            }\n\n            // output image\n\n            // image type\n            Response.ContentType = \"image/jpeg\";\n            Response.AddHeader(\"Content-Disposition\", \"attachment; filename=\\\"amchart.jpg\\\"\");\n\n            // find image encoder for selected type\n            ImageCodecInfo[] encoders;\n            ImageCodecInfo img_encoder = null;\n            encoders = ImageCodecInfo.GetImageEncoders();\n            foreach (ImageCodecInfo codec in encoders)\n                if (codec.MimeType == Response.ContentType)\n                {\n                    img_encoder = codec;\n                    break;\n                }\n\n            // image parameters\n            EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only\n            EncoderParameters enc_params = new EncoderParameters(1);\n            enc_params.Param[0] = jpeg_quality;\n\n            result.Save(Response.OutputStream, img_encoder, enc_params);\n        }\n        else\n        {\n            // invalid post\n            Response.Write(\"Invalid post\");\n        }\n    }\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/export.php",
    "content": "<?php\n// amcharts.com export to image utility\n// set image type (gif/png/jpeg)\n$imgtype = 'jpeg';\n\n// set image quality (from 0 to 100, not applicable to gif)\n$imgquality = 100;\n\n// get data from $_POST or $_GET ?\n$data = &$_POST;\n\n// get image dimensions\n$width  = (int) $data['width'];\n$height = (int) $data['height'];\n\n// create image object\n$img = imagecreatetruecolor($width, $height);\n\n// populate image with pixels\nfor ($y = 0; $y < $height; $y++) {\n  // innitialize\n  $x = 0;\n  \n  // get row data\n  $row = explode(',', $data['r'.$y]);\n  \n  // place row pixels\n  $cnt = sizeof($row);\n  for ($r = 0; $r < $cnt; $r++) {\n    // get pixel(s) data\n    $pixel = explode(':', $row[$r]);\n    \n    // get color\n    $pixel[0] = str_pad($pixel[0], 6, '0', STR_PAD_LEFT);\n    $cr = hexdec(substr($pixel[0], 0, 2));\n    $cg = hexdec(substr($pixel[0], 2, 2));\n    $cb = hexdec(substr($pixel[0], 4, 2));\n    \n    // allocate color\n    $color = imagecolorallocate($img, $cr, $cg, $cb);\n    \n    // place repeating pixels\n    $repeat = isset($pixel[1]) ? (int) $pixel[1] : 1;\n    for ($c = 0; $c < $repeat; $c++) {\n      // place pixel\n      imagesetpixel($img, $x, $y, $color);\n      \n      // iterate column\n      $x++;\n    }\n  }\n}\n\n// set proper content type\nheader('Content-type: image/'.$imgtype);\nheader('Content-Disposition: attachment; filename=\"chart.'.$imgtype.'\"');\n\n// stream image\n$function = 'image'.$imgtype;\nif ($imgtype == 'gif') {\n  $function($img);\n}\nelse {\n  $function($img, null, $imgquality);\n}\n\n// destroy\nimagedestroy($img);\n?>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/swfobject.js",
    "content": "/**\n * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\n *\n * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\nif(typeof deconcept==\"undefined\"){var deconcept=new Object();}if(typeof deconcept.util==\"undefined\"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil==\"undefined\"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:\"detectflash\";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute(\"swf\",_1);}if(id){this.setAttribute(\"id\",id);}if(w){this.setAttribute(\"width\",w);}if(h){this.setAttribute(\"height\",h);}if(_5){this.setAttribute(\"version\",new deconcept.PlayerVersion(_5.toString().split(\".\")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam(\"bgcolor\",c);}var q=_7?_7:\"high\";this.addParam(\"quality\",q);this.setAttribute(\"useExpressInstall\",false);this.setAttribute(\"doExpressInstall\",false);var _c=(_8)?_8:window.location;this.setAttribute(\"xiRedirectUrl\",_c);this.setAttribute(\"redirectUrl\",\"\");if(_9){this.setAttribute(\"redirectUrl\",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?\"expressinstall.swf\":_d;this.setAttribute(\"useExpressInstall\",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+\"=\"+_18[key];}return _16;},getSWFHTML:function(){var _19=\"\";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"PlugIn\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<embed type=\\\"application/x-shockwave-flash\\\" src=\\\"\"+this.getAttribute(\"swf\")+\"\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\"\";_19+=\" id=\\\"\"+this.getAttribute(\"id\")+\"\\\" name=\\\"\"+this.getAttribute(\"id\")+\"\\\" \";var _1a=this.getParams();for(var key in _1a){_19+=[key]+\"=\\\"\"+_1a[key]+\"\\\" \";}var _1c=this.getVariablePairs().join(\"&\");if(_1c.length>0){_19+=\"flashvars=\\\"\"+_1c+\"\\\"\";}_19+=\"/>\";}else{if(this.getAttribute(\"doExpressInstall\")){this.addVariable(\"MMplayerType\",\"ActiveX\");this.setAttribute(\"swf\",this.xiSWFPath);}_19=\"<object id=\\\"\"+this.getAttribute(\"id\")+\"\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"\"+this.getAttribute(\"width\")+\"\\\" height=\\\"\"+this.getAttribute(\"height\")+\"\\\" style=\\\"\"+this.getAttribute(\"style\")+\"\\\">\";_19+=\"<param name=\\\"movie\\\" value=\\\"\"+this.getAttribute(\"swf\")+\"\\\" />\";var _1d=this.getParams();for(var key in _1d){_19+=\"<param name=\\\"\"+key+\"\\\" value=\\\"\"+_1d[key]+\"\\\" />\";}var _1f=this.getVariablePairs().join(\"&\");if(_1f.length>0){_19+=\"<param name=\\\"flashvars\\\" value=\\\"\"+_1f+\"\\\" />\";}_19+=\"</object>\";}return _19;},write:function(_20){if(this.getAttribute(\"useExpressInstall\")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute(\"version\"))){this.setAttribute(\"doExpressInstall\",true);this.addVariable(\"MMredirectURL\",escape(this.getAttribute(\"xiRedirectUrl\")));document.title=document.title.slice(0,47)+\" - Flash Player Installation\";this.addVariable(\"MMdoctitle\",document.title);}}if(this.skipDetect||this.getAttribute(\"doExpressInstall\")||this.installedVer.versionIsValid(this.getAttribute(\"version\"))){var n=(typeof _20==\"string\")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins && navigator.mimeTypes.length)) window[this.getAttribute('id')] = document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute(\"redirectUrl\")!=\"\"){document.location.replace(this.getAttribute(\"redirectUrl\"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins[\"Shockwave Flash\"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\\s)+/,\"\").replace(/(\\s+r|\\s+b[0-9]+)/,\".\").split(\".\"));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf(\"Windows CE\")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\"+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");}catch(e){try{var axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=\"always\";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable(\"$version\").split(\" \")[1].split(\",\"));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split(\"&\");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf(\"=\"))==_2b){return _2d[i].substring((_2d[i].indexOf(\"=\")+1));}}}return \"\";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName(\"OBJECT\");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display=\"none\";for(var x in _2f[i]){if(typeof _2f[i][x]==\"function\"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent(\"onunload\",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent(\"onbeforeunload\",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie/xx.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <!--\n  <message bg_color=\"#CCBB00\" text_color=\"#FFFFFF\">\n    <![CDATA[You can broadcast any message to chart from data XML file]]>\n  </message>\n  -->\n  <slice title=\"\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\">258</slice>\n  <slice title=\"Once a week\">154</slice>\n  <slice title=\"Never\" url=\"http://www.interactivemaps.org\" description=\"Click on the slice to find more information\" alpha=\"50\">114</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/ampie.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n  <script type=\"text/javascript\" src=\"ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie_settings.xml\"));       // you can set two or more different settings files here (separated by commas)\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie_data.xml\"));\t\t\n//\tso.addVariable(\"chart_data\", \"\");                                          // you can pass chart data as a string directly from this file\n//\tso.addVariable(\"chart_settings\", \"\");                                      // you can pass chart settings as a string directly from this file\n//\tso.addVariable(\"additional_chart_settings\", \"<settings></settings>\");      // you append some chart settings to the loaded ones\n//  so.addVariable(\"loading_settings\", \"LOADING SETTINGS\");                    // you can set custom \"loading settings\" text here\n//  so.addVariable(\"loading_data\", \"LOADING DATA\");                            // you can set custom \"loading data\" text here\n    so.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/changelog.txt",
    "content": "*** CHANGE LOG *****************************************************************\n*** 1.6.4.0 ********************************************************************\nFEATURE ADDED\namReturnParam function also returns the param name:\namReturnParam(chart_id, value, param);\n*** 1.6.3.0 ********************************************************************\nFEATURE ADDED:\nNew settings <scientific_min> and <scientific_max> added. If absolute value of \nyour number is equal or bigger then scientific_max or equal or less then \nscientific_min, this number will be formatted using scientific notation, for\nexample:\n\n15000000000000000 -> 1.5e16\n0.0000023 -> 2.3e-6\n*** 1.6.1.4 ********************************************************************\nFEATURE ADDED:\na new setting, <js_enabled> was added. It allows disabling all javascript-html\ncommunication. Id you set this to false, then the chart won't listen and won't\ncall any JavaScript functions. This will also disable the security warning\nmessage when opening the chart from your hard drive or CD.\n*** 1.6.1.2 ********************************************************************\nFIX: The chart didn't accept new JS functions if error, such as no data occurred\n*** 1.6.1.0 ********************************************************************\n\nFEATURE ADDED: PATTERNS\nSlices can be filled with patterns now. Check examples/patterns/ example to see\nhow it is done. The pattern is set in the data xml file, for example: \n\n<slice title=\"ABC\" pattern_color=\"#FFEE2E\" pattern=\"patterns/diagonal.swf\">120</slice>\n\nYou can use swf, jpg, gif or png files for patterns. Some default patterns were\nadded in the ampie/patterns/ folder. \n\nFEATURE ADDED: JavaScript functions are cued now - previously you could call one\nJS function at a time and call another only after the chart finished the\nprevious process. Now, you can call several functions one after another, without\nwaiting for the chart to finish doing something. The functions are cued and all\nof them will be executed.\n\n\nFEATURE ADDED: New JavaScript function amProcessCompleted(chart_id, process) \nThis function is called after some process initialized by some JS function is\nfinished. For example, if you make the chart to reload data by calling reloadData\nfunction, after the data is reloaded, the chart will call amProcessCompleted \nfunction and the \"process\" parameter will be \"reloadData\" - the same as the \nfunction name you called. Check examples/javascript_control example to see this\nin action.\n\nFIX: label_radius setting was ignored in previous version (after the avoid \nlabel overlapping feature was added).\n\nFIX: If the chart has more then 220 slices, and the grouping feature was on, the\nchart wasn't displayed.\n\nFIX: If the animation time (<start_time>) was set to 0, the <pie><alpha> setting\nwas ingored.\n\nFIX: chart_id was lost after the use of setSettings JS function.\n\nFIX: when <redraw> was set to true, and the window size is changed, the pulled-out\nslices used to go back to initial stage and animate again.\n\n*** 1.6.0.0 ********************************************************************\n\nFEATURE ADDED: DATA LABELS NO LONGER OVERLAP\n\nThe chart now automatically avoids data label overlapping by adjusting label\nposition. You can turn this off by setting <data_labels><avoid_overlapping>\nto \"false\".\n\n\nFEATURE ADDED: AUTO-FITTING OF THE LEGEND\n\nThe legend now automatically adjusts it's position to fit to the flash object's \narea. In order this to work, you have to leave <legend><y> setting empty.\n\n\nFEATURE ADDED: GRADIENT PIES\n\nYou can have linear or radial gradients now by setting the gradient type in\n<pie><gradient> setting. The gradient ratio is defined in <pie><gradient_ratio>\nsetting. IT accepts any number of numbers from -255 (dark)) to 255 (light),\nseparated by commas. \n\n\nFEATURE ADDED: SEQUENCED ANIMATION\n\nIf you set <animation><sequenced> to \"true\" the slices will appear one after\nanother, not all at the same time.\n\n\nFEATURE ADDED: DARKEN/LIGHTEN SLICES ON ROLL-OVER\n\nUsing <pie><hover_brightness> setting you can make your slices lighter or \ndarker when the user roll-overs them.  \n\nFEATURE ADDED: MORE SETTINGS FOR THE BALLOON\n\nNew balloon settings allows you to have balloon border and rounded corners:\n\n   <balloon>\n     <max_width></max_width>\n     <corner_radius></corner_radius>\n     <border_width></border_width>  \n     <border_alpha></border_alpha>  \n     <border_color></border_color>      \n   </balloon>\n   \nFEATURE ADDED: CHANGE MULTIPLE SETTINGS WITH JAVASCRIPT\n\nUsing new function, flashMovie.setSettings(settings, rebuild) You can control\nmultiple settings.  It is recommended to use this new function even for one \nsetting, instead of setParam() function. The \"rebuild\" option might be \"true\" \nor \"false\" (the default is \"true\"). If you set it to \"false\", then the settings\nwill not be applied until you call another new JS function: flashMovie.rebuild()\nor pass another set of settings with the \"rebuild\" set to \"true\". \n\nA new function flashMovie.getSettings() will return the full settings \nXML by calling amReturnSettings(chart_id, settings) function. \n\n\nFEATURE ADDED: IMAGE DATA IS PASSED TO JAVASCRIPT\n\nWhen exporting chart as an image, the chart passes image data to JavaScript \nfunction: amReturnImageData(chart_id, data) \n\n\nFEATURE ADDED: FONT COLOR AND SIZE OF A LABEL TEXT\n\n<labels> Can accept  font color and font size HTML tags now, for example:\n<text><![CDATA[Source: <font color=\"#CC0000\" size=\"14\">amCharts</font>]]></text>\n\n\nCHANGE OF THE DEFAULTS\n\n<context_menu><default_items><zoom> default value was changed to \"false\"\n\nSome more colors where added to the default <colors> array.\n\nDescription can be displayed in the data labels now. You can add {description}\ntag to the <data_labels><show> setting. description is not added automatically \nto the balloon any more. You have to add {description} tag to the the \n<balloon><show> setting if you want it to be displayed. \n\n\nFIXES:\nWhen adding some settings using additional_chart_settings variable, you don't \nneed to set all the <graph> or <label> settings anymore. When \nchanging some <label> property using additional_chart_settings, in order to\nidentify <label>, the labels id (lid) must be added, for example: <label lid=\"0\">\n\n\n\n*** 1.5.2.0 ********************************************************************\n\n\nNew features:\n\nJavaScript function amError(chart_id, error_message) is called when one of the\nknown errors occurs.\n\nYou can \"click\" or \"roll-over\" the slice with JavaScript functions:\n\nflashMovie.clickSlice(index)\nflashMovie.rollOverSlice(index)\nflashMovie.rollOutSlice()\n\nBug fix:\nWhen <pull_out_time> was set to 0, the pie label didn't move on click. Fixed.\n\n\n*** 1.5.1.0 ********************************************************************\n\n\nBug fix: When reloading settings with reloadSettings() function, if settings\nfile contained data, the data wasn't refreshed. This is fixed in this version.\n********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie1/ampie_data.txt",
    "content": "China;1314.4;;;http://en.wikipedia.org/wiki/China;Click on the slice to find more information about China\nIndia;1120.4;;;http://en.wikipedia.org/wiki/India;Click on the slice to find more information about India\nUnited States;300.38;;;http://en.wikipedia.org/wiki/Usa;Click on the slice to find more information about USA\nIndonesia;233.52 \nBrazil;187.67 \nPakistan;158.85 \nBangladesh;148.9\nOther Countries;3007.5;true\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie1/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->  \n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y></y>                                                   <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file>../ampie/export.php</file>                          <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n\n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>World population</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie3/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Twice a day\" pull_out=\"true\">358</slice>\n  <slice title=\"Once a day\" pull_out=\"false\">241</slice>\n  <slice title=\"Once a week\" pull_out=\"false\">58</slice>\n  <slice title=\"Never\" pull_out=\"false\">120</slice>\n  <slice title=\"After every meal\" alpha=\"30\">50</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie3/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>1</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>200</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>20</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>30</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->  \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>bounce</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one>true</pull_out_only_one>               <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>80</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color>#FFFFFF</line_color>                          <!-- [#000000] (hex color code) -->\n    <line_alpha>40</line_alpha>                               <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>40</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How Often do you brush your teeth?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_data1.txt",
    "content": "Yes;40;true\nNo;30;true\nDivorced;30;true\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_data2.txt",
    "content": "Zero; 30\nOne;40\nTwo;15\nMore;15\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>110</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius></radius>                                         <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#FF0000</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>70</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>25</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Are you married?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie4/ampie_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>120</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius></radius>                                         <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#00CC00</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>25</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How many children do you have?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie5/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"Asia\">44.579</slice>\n  <slice title=\"Africa\">30.065</slice>\n  <slice title=\"North America\">24.256</slice>\n  <slice title=\"South America\" pull_out=\"true\" color=\"#FCD202\">17.819</slice>\n  <slice title=\"Antarctica\">13.209</slice>\n  <slice title=\"Europe\">9.938</slice>\n  <slice title=\"Australia\">7.687</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/ampie5/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type></data_type>                                     <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#FFFFFF</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>1</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x>380</x>                                                <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>190</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>80</radius>                                       <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>10</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>20</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#B0DE09</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-10</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>bounce</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>20</radius>                                       <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>80</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}]]>                                    <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color>#FFFFFF</line_color>                          <!-- [#000000] (hex color code) -->\n    <line_alpha>40</line_alpha>                               <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file>../examples/ampie/ampie5/bg.swf</file>              <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>true</enabled>                                   <!-- [true] (true / false) -->\n    <x>20</x>                                                 <!-- [40] (Number) -->\n    <y>60</y>                                                 <!-- [] (Number) if empty, will be below the pie -->\n    <width>160</width>                                        <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns>1</max_columns>                              <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color>#FFFFFF</border_color>                      <!-- [#000000] (hex color code) border color -->\n    <border_alpha>15</border_alpha>                           <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins>10</margins>                                     <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled>true</enabled>                                 <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width>40</width>                                       <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>40</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Size of continents</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/js/ampie_data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<pie>\n  <slice title=\"What is Christmas?\">10</slice>\n  <slice title=\"Yes\">70</slice>\n  <slice title=\"No\">20</slice>\n</pie>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie/js/ampie_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n\n<settings> \n  <data_type>xml</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [](Number) If left empty, will be positioned in the center -->\n    <y>235</y>                                                <!-- [](Number) If left empty, will be positioned in the center - 20px -->\n    <radius>100</radius>                                      <!-- [] (Number) If left empty, will be 25% of your chart smaller side -->\n    <inner_radius>40</inner_radius>                           <!-- [0] (Number) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>10</height>                                       <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>10</angle>                                         <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color></base_color>                                 <!-- [] (hex color code) color of first slice -->\n    <brightness_step></brightness_step>                       <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF,0x0D52D1,0x2A0CD0,0x8A0CCF,0xCD0D74] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [] (Number) if left empty, will use pie.radius * 5 -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->                \n    <pull_out_on_click></pull_out_on_click>                   <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [] (Number) how far pie slices should be pulled-out then user clicks on them (if left empty, uses 20% of pie radius) -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius></radius>                                         <!-- [30] (Number) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>140</max_width>                                <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines></show_lines>                                 <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) -->\n    <alpha>100</alpha>                                        <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [0xFFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [40] (Number) -->\n    <y></y>                                                   <!-- [] (Number) if empty, will be below the pie -->\n    <width></width>                                           <!-- [] (Number) if empty, will be equal to flash width-80 -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->        \n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label>\n      <x>0</x>                                                <!-- [0] (Number) -->\n      <y>10</y>                                               <!-- [0] (Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Do you celebrate christmas?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie1.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"380\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie1/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie1/ampie_data.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie2.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"chart_settings\", escape(\"<settings><data_type>csv</data_type><pie><radius>130</radius><inner_radius>0</inner_radius><height>20</height><angle>45</angle></pie><animation><start_time>2</start_time><start_effect>strong</start_effect><pull_out_time>1.5</pull_out_time></animation><data_labels><radius>-50</radius><text_color>#FFFFFF</text_color><show><![CDATA[{title}: {percents}%]]></show></data_labels><legend><enabled>false</enabled></legend><labels><label><x>0</x><y>30</y><align>center</align><text_size>15</text_size><text><![CDATA[<b>Setting data and settings directly from html example</b>]]></text></label></labels></settings>\"));\n\t\tso.addVariable(\"chart_data\", escape(\"Yes;45;false;CC33FF\\nSeldom;35;false;6666FF\\nNo;20;false;FFCC00\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie3.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"500\", \"400\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie3/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie3/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#ffffff\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie4.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie1\", \"260\", \"200\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie4/ampie_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie4/ampie_data1.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent1\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n\n<!-- ampie script-->\n\t<div id=\"flashcontent2\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie2\", \"260\", \"200\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie4/ampie_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie4/ampie_data2.txt\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent2\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/ampie5.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"340\", \"8\", \"#000000\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/ampie5/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/ampie5/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#000000\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/js_example.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<title>ampie</title>\n</head>\n<body>\n<b><font color=\"red\">Attention! Because of security restrictions in most cases this example will work only if you upload files to your web server.</font></b><br><br>\n<!-- saved from url=(0013)about:internet -->\n\n<script type=\"text/javascript\" src=\"../ampie/swfobject.js\"></script>\n\n<script type=\"text/javascript\">\n      // get flash movie object\n      var flashMovie;\n      function init() {\n         if (document.getElementById) {\n            flashMovie = document.getElementById(\"ampie\");\n         }\n      }\n      // wait for the page to fully load before initializing\n      window.onload = init;\n\n      // chart control functions ///////////////////////////////////\n      // set data\n      function setData() {\n         if (flashMovie) {            \n            var txt = document.getElementById(\"data\").value;\n            flashMovie.setData(txt);\n         }\n      }\n      // reload data\n      function reloadData() {\n         if (flashMovie) {            \n            flashMovie.reloadData();       // you can pass new data file name: reloadData(new_data_file_name)\n         }\n      }\n      // reload settings\n      function reloadSettings() {\n         if (flashMovie) {            \n            flashMovie.reloadSettings();   // you can pass new settings file name: reloadSettings(new_settings_file_name)\n         }\n      }\n      // reload all\n      function reloadAll() {\n         if (flashMovie) {            \n            flashMovie.reloadAll();        // reloadAll(new_data_file_name, new_settings_file_name)\n         }\n      }\n      // set param\n      function setParam() {\n         if (flashMovie) {\n            var param = document.getElementById(\"param\").value;\n            var value = document.getElementById(\"value\").value;\n            flashMovie.setParam(param, value);\n         }\n      }\n      // get param\n      function getParam() {\n         if (flashMovie) {\n            var param = document.getElementById(\"getparam\").value;            \n            flashMovie.getParam(param);\n         }\n      } \n      // get data\n      function getData() {\n         if (flashMovie) {\n            flashMovie.getData();\n         }\n      }   \n      // export image\n      function exportImage() {\n         if (flashMovie) {\n            flashMovie.exportImage('../ampie/export.php'); // it is not required to pass filename here if you set it in settings file) \n         }\n      }    \n      // print chart\n      function print(){\n         if (flashMovie) {\n            flashMovie.print();\n         }\n      }\n      // print chart as bitmap\n      function printAsBitmap(){\n         if (flashMovie) {\n            flashMovie.printAsBitmap();\n         }\n      }\n      \n              \n      // functions called from flash /////////////////////////////////////////\n      // this function is called then chart is finished\n      function amChartInited(chart_id){\n          document.getElementById(\"chartfinished\").value = \"chart \" + chart_id + \" is finished\";           \n      }      \n      // return data \n      function amReturnData(chart_id, param){\n          document.getElementById(\"data\").value = unescape(param);\n      }\n      // return param     \n      function amReturnParam(chart_id, param){\n          document.getElementById(\"returnedparam\").value = unescape(param);\n      }          \n      // mouse over slice           \n      function amSliceOver(chart_id, id, title, value, percents, color, description){\n          document.getElementById(\"sliceover\").value = title + \"(\" + percents + \"%)\";\n      }\n      // mouse out           \n      function amSliceOut(chart_id){\n          document.getElementById(\"sliceover\").value = \"none\";\n      }                  \n      // click slice           \n      function amSliceClick(chart_id, id, title, value, percents, color, description){\n          document.getElementById(\"sliceclick\").value = title;\n      }          \n\n   // ]]>\n</script>\n\n\n<!-- ampie script-->\n\t<div id=\"flashcontent\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../ampie/ampie.swf\", \"ampie\", \"520\", \"400\", \"7\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../ampie/\");\n\t\tso.addVariable(\"chart_id\", \"ampie\");\n\t\tso.addVariable(\"settings_file\", escape(\"ampie/js/ampie_settings.xml\"));\n\t\tso.addVariable(\"data_file\", escape(\"ampie/js/ampie_data.xml\"));\n\t\tso.addVariable(\"preloader_color\", \"#999999\");\n\t\tso.write(\"flashcontent\");\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n\n\t\t<form action=\"\" id=\"myform\">\n      <input type=\"text\" id=\"chartfinished\">\t\t\t\t\n      <input type=\"button\" value=\"reload Data\" onclick=\"reloadData();\" />\n\t    <input type=\"button\" value=\"reload Settings\" onclick=\"reloadSettings();\" />\n      <input type=\"button\" value=\"reload All\" onclick=\"reloadAll();\" />\n    \t<hr noshade size=\"1\">\n      <input type=\"button\" value=\"export image\" onclick=\"exportImage();\" />            \t    \n      <input type=\"button\" value=\"print\" onclick=\"print();\" />\n      <input type=\"button\" value=\"print as bitmap\" onclick=\"printAsBitmap();\" />\n    \t<hr noshade size=\"1\">\t\n      <textarea id=\"data\" rows=\"6\" cols=\"62\"></textarea><br>\n   \t   <input type=\"button\" value=\"Get data\" onclick=\"getData();\" />\n       <input type=\"button\" value=\"Set Data\" onclick=\"setData();\" />\n   \t\t<hr noshade size=\"1\">\t \n  \t  Param: <input type=\"text\" id=\"param\" value=\"background.color\"/> Value: <input type=\"text\" id=\"value\" value=\"0xBBBB00\"/>\n      <input type=\"button\" value=\"set param\" onclick=\"setParam();\" />\n   \t\t<hr noshade size=\"1\">   \n   \t  Param: <input type=\"text\" id=\"getparam\" value=\"pie.angle\">\n   \t\tValue: <input type=\"text\" id=\"returnedparam\" />\n   \t\t<input type=\"button\" value=\"get param\" onclick=\"getParam();\" />\n   \t\t<hr noshade size=\"1\">   \n   \t\tMouse is over slice: <input type=\"text\" id=\"sliceover\" />\n      Clicked on slice: <input type=\"text\" id=\"sliceclick\" />\n   \t\t</p>\n\t\t</form>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_data1.txt",
    "content": "Yes;40;true\nNo;30;true\nDivorced;30;true\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_data2.txt",
    "content": "Zero; 30\nOne;40\nTwo;15\nMore;15\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_settings1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator></csv_separator>                             <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows></skip_rows>                                     <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font></font>                                               <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size></text_size>                                     <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color></text_color>                                   <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator></decimals_separator>                   <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp></add_time_stamp>                           <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision></precision>                                     <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n                                                                \n  <pie>\n    <x></x>                                                   <!-- [50%](Number / Number% / !Number) -->\n    <y>110</y>                                                <!-- [45%](Number / Number% / !Number) -->\n    <radius>50</radius>                                         <!-- [25%] (Number / Number%)  -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number / Number%) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <start_angle></start_angle>                               <!-- [90] (0-360) angle of a first slice. This will work properly only if <pie><height> is set to 0. If height is > 0, then there can be two angles only: 90 and 270 -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#FF0000</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [#FF0F00,#FF6600,#FF9E01,#FCD202,#F8FF01,#B0DE09,#04D215,#0D8ECF,#0D52D1,#2A0CD0,#8A0CCF,#CD0D74,#754DEB,#DDDDDD,#999999,#333333,#990000] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n    <hover_brightness>20</hover_brightness>                   <!-- [0] (from -255 to 255) The pie slice may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <gradient></gradient>                                     <!-- [] (linear/radial) Allows slices to be filled with gradient colors -->\n    <gradient_ratio></gradient_ratio>                         <!-- [0,-40] (Numbers from (-255 to 255) separated by commas) Controls the gradient ratio -->    \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [500%] (Number / Number%) -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->\n    <sequenced></sequenced>                                   <!-- [false] (true / false) Whether the slices should appear all together or one after another -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [20%] (Number / Number%) how far pie slices should be pulled-out then user clicks on them  -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [20%] (Number / Number%) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width>70</max_width>                                 <!-- [120] (Number) -->\n    <show>\n       <![CDATA[]]>                                           <!-- [{title}: {percents}%] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->                                       \n    <avoid_overlapping></avoid_overlapping>                   <!-- [true] (true / false) Whether to change data labels positions so that they wouldn't overlap or not -->\n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha></alpha>                                           <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [{title}: {percents}% ({value}) <br>{description}] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->    \n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [5%] (Number / Number% / !Number) -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be placed below the pie -->\n    <width></width>                                           <!-- [90%] (Number / Number%) -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu> \n  \n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>0</x>                                                <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>Are you married?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/ampie_settings2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Value between [] brackets, for example [#FFFFFF] shows default value which is used if this parameter is not set -->\n<!-- This means, that if you are happy with this value, you can delete this line at all and reduce file size         -->\n<!-- value or explanation between () brackets shows the range or type of values you should use for this parameter    -->\n<!-- the top left corner has coordinates x = 0, y = 0                                                                -->\n<!-- \"!\" before x or y position (for example: <x>!20</x>) means that the coordinate will be calculated from the right side or the bottom -->\n\n<settings> \n  <data_type>csv</data_type>                                  <!-- [xml] (xml / csv) -->\n  <csv_separator>;</csv_separator>                            <!-- [;] (string) csv file data separator (you need it only if you are using csv file for your data) -->     \n  <skip_rows>0</skip_rows>                                    <!-- [0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here -->\n  <font>Arial</font>                                          <!-- [Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... -->\n  <text_size>11</text_size>                                   <!-- [11] (Number) text size of all texts. Every text size can be set individually in the settings below -->\n  <text_color>#000000</text_color>                            <!-- [#000000] (hex color code) main text color. Every text color can be set individually in the settings below-->\n  <decimals_separator>,</decimals_separator>                  <!-- [,] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot -->\n  <thousands_separator> </thousands_separator>                <!-- [ ] (string) thousand separator. use \"none\" if you don't want to separate -->\n  <digits_after_decimal></digits_after_decimal>               <!-- [] (Number) if your value has less digits after decimal then is set here, zeroes will be added -->\n  <scientific_min></scientific_min>                           <!-- [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be formatted using scientific notation, for example: 0.0000023 -> 2.3e-6 -->\n  <scientific_max></scientific_max>                           <!-- [1000000000000000] If absolute value of your number is equal or bigger then scientific_max, this number will be formatted using scientific notation, for example: 15000000000000000 -> 1.5e16 -->\n  <redraw></redraw>                                           <!-- [false] (true / false) if your chart's width or height is set in percents, and redraw is set to true, the chart will be redrawn then screen size changes -->\n  <reload_data_interval></reload_data_interval>               <!-- [0] (Number) how often data should be reloaded (time in seconds) -->\n  <preloader_on_reload></preloader_on_reload>                 <!-- [false] (true / false) Whether to show preloaded when data or settings are reloaded -->\n  <add_time_stamp>false</add_time_stamp>                      <!-- [false] (true / false) if true, a unique number will be added every time flash loads data. Mainly this feature is useful if you set reload _data_interval -->\n  <precision>2</precision>                                    <!-- [2] (Number) shows how many numbers should be shown after comma for calculated values (percents) -->\n  <exclude_invisible></exclude_invisible>                     <!-- [false] (true / false) whether to exclude invisible slices (where alpha=0) then calculating percent values or not -->\n  <js_enabled></js_enabled>                                   <!-- [true] (true / false) In case you don't use any flash - JavaScript communication, you shuold set this setting to false - this will save some CPU and will disable the security warning message which appears when opening the chart from hard drive. -->\n                                                                  \n  <pie>\n    <x></x>                                                   <!-- [50%](Number / Number% / !Number) -->\n    <y>120</y>                                                <!-- [45%](Number / Number% / !Number) -->\n    <radius>50</radius>                                       <!-- [25%] (Number / Number%)  -->\n    <inner_radius></inner_radius>                             <!-- [0] (Number / Number%) the radius of the hole (if you want to have donut, use > 0) -->\n    <height>2</height>                                        <!-- [0] (Number) pie height (for 3D effect) -->\n    <start_angle></start_angle>                               <!-- [90] (0-360) angle of a first slice. This will work properly only if <pie><height> is set to 0. If height is > 0, then there can be two angles only: 90 and 270 -->\n    <angle>0</angle>                                          <!-- [0] (0 - 90) lean angle (for 3D effect) -->\n    <outline_color></outline_color>                           <!-- [#FFFFFF] (hex color code) -->    \n    <outline_alpha></outline_alpha>                           <!-- [0] (Number) -->\n    <base_color>#00CC00</base_color>                          <!-- [] (hex color code) color of first slice -->\n    <brightness_step>-25</brightness_step>                    <!-- [20] (-100 - 100) if base_color is used, every next slice is filled with lighter by brightnessStep % color. Use negative value if you want to get darker colors -->\n    <colors></colors>                                         <!-- [#FF0F00,#FF6600,#FF9E01,#FCD202,#F8FF01,#B0DE09,#04D215,#0D8ECF,#0D52D1,#2A0CD0,#8A0CCF,#CD0D74,#754DEB,#DDDDDD,#999999,#333333,#990000] (hex color codes separated by comas) -->\n    <link_target></link_target>                               <!-- [] (_blank, _top...) If pie slice has a link this is link target -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) slices alpha. You can set individual alphas for every slice in data file. If you set alpha to 0 the slice will be inactive for mouse events and data labels will be hidden. This allows you to make not full pies and donuts. -->\n    <hover_brightness>20</hover_brightness>                   <!-- [0] (from -255 to 255) The pie slice may darken/lighten when the use rolls over it. The intensity may be set here -->\n    <gradient></gradient>                                     <!-- [] (linear/radial) Allows slices to be filled with gradient colors -->\n    <gradient_ratio></gradient_ratio>                         <!-- [0,-40] (Numbers from (-255 to 255) separated by commas) Controls the gradient ratio -->    \n  </pie>\n  \n  <animation>\n    <start_time>2</start_time>                                <!-- [0] (Number) fly-in time in seconds. Leave 0 to appear instantly -->\n    <start_effect>strong</start_effect>                       <!-- [bounce] (bounce, regular, strong) -->\n    <start_radius></start_radius>                             <!-- [500%] (Number / Number%) -->\n    <start_alpha>0</start_alpha>                              <!-- [0] (Number) -->\n    <sequenced></sequenced>                                   <!-- [false] (true / false) Whether the slices should appear all together or one after another -->                \n    <pull_out_on_click>false</pull_out_on_click>              <!-- [true] (true / false) whether to pull out slices when user clicks on them (or on legend entry) -->\n    <pull_out_time>1.5</pull_out_time>                        <!-- [0] (number) pull-out time (then user clicks on the slice) -->\n    <pull_out_effect>Bounce</pull_out_effect>                 <!-- [bounce] (bounce, regular, strong) -->\n    <pull_out_radius></pull_out_radius>                       <!-- [20%] (Number / Number%) how far pie slices should be pulled-out then user clicks on them -->\n    <pull_out_only_one></pull_out_only_one>                   <!-- [false] (true / false) if set to true, when you click on any slice, all other slices will be pushed in -->        \n  </animation>\n  \n  <data_labels>\n    <radius>10</radius>                                       <!-- [20%] (Number / Number%) distance of the labels from the pie. Use negative value to place labels on the pie -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <max_width></max_width>                                   <!-- [120] (Number) -->\n    <show>\n       <![CDATA[{title}: {percents}%]]>                       <!-- [] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <show_lines>false</show_lines>                            <!-- [true] (true / false) whether to show lines from slices to data labels or not -->                                                                                              \n    <line_color></line_color>                                 <!-- [#000000] (hex color code) -->\n    <line_alpha></line_alpha>                                 <!-- [15] (Number) -->\n    <hide_labels_percent>3</hide_labels_percent>              <!-- [0] data labels of slices less then skip_labels_percent% will be hidden (to avoid label overlapping if there are many small pie slices)-->\n    <avoid_overlapping></avoid_overlapping>                   <!-- [true] (true / false) Whether to change data labels positions so that they wouldn't overlap or not -->                                       \n  </data_labels>\n\n  <group>\n    <percent></percent>                                       <!-- [0] (Number) if the calculated percent value of a slice is less than specified here, and there are more than one such slices, they can be grouped to \"The others\" slice-->\n    <color></color>                                           <!-- [] (hex color code) color of \"The others\" slice -->                                       \n    <title></title>                                           <!-- [Others] title of \"The others\" slice -->\n    <url></url>                                               <!-- [] url of \"The others\" slice -->\n    <description></description>                               <!-- [] description of \"The others\" slice -->        \n    <pull_out></pull_out>                                     <!-- [false] (true / false) whether to pull out the other slice or not --> \n  </group>\n\n  <background>                                                <!-- BACKGROUND -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) Separate color codes with comas for gradient-->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) use 0 if you are using custom swf or jpg for background -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) -->\n    <file></file>                                             <!-- [] (filename) swf or jpg file of a background. Do not use progressive jpg file, it will be not visible with flash player 7 -->\n                                                              <!-- The chart will look for this file in path folder (path is set in HTML) -->\n  </background>\n  \n  <balloon>                                                   <!-- BALLOON -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <color></color>                                           <!-- [] (hex color code) balloon background color. If empty, slightly darker then current slice color will be used -->\n    <alpha>80</alpha>                                         <!-- [80] (0 - 100) -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->    \n    <show>\n       <![CDATA[{title}: {value} mln. ({percents}%)]]>        <!-- [{title}: {percents}% ({value}) <br>{description}] ({value} {title} {percents} {description}) You can format any data label: {value} - will be replaced with value and so on. You can add your own text or html code too. -->\n    </show>\n    <max_width></max_width>                                   <!-- [220] (Number) The maximum width of a balloon -->\n    <corner_radius></corner_radius>                           <!-- [0] (Number) Corner radius of a balloon. If you set it > 0, the balloon will not display arrow -->\n    <border_width></border_width>                             <!-- [0] (Number) -->\n    <border_alpha></border_alpha>                             <!-- [balloon.alpha] (Number) -->\n    <border_color></border_color>                             <!-- [balloon.color] (hex color code) -->    \n  </balloon>\n    \n  <legend>                                                    <!-- LEGEND -->\n    <enabled>false</enabled>                                  <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [5%] (Number / Number% / !Number) -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) if empty, will be placed below the pie -->\n    <width></width>                                           <!-- [90%] (Number / Number%) -->\n    <color></color>                                           <!-- [#FFFFFF] (hex color code) background color. Separate color codes with comas for gradient -->\n    <max_columns></max_columns>                               <!-- [] (Number) the maximum number of columns in the legend -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <border_color></border_color>                             <!-- [#000000] (hex color code) border color -->\n    <border_alpha></border_alpha>                             <!-- [0] (0 - 100) border alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->   \n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n    <spacing></spacing>                                       <!-- [10] (Number) vertical and horizontal gap between legend entries -->\n    <margins></margins>                                       <!-- [0] (Number) legend margins (space between legend border and legend entries, recommended to use only if legend border is visible or background color is different from chart area background color) -->\n    <reverse_order></reverse_order>                           <!-- [false] (true / false) whether to sort legend entries in a reverse order -->    \n    <align></align>                                           <!-- [left] (left / center / right) alignment of legend entries -->\n    <key>                                                     <!-- KEY (the color box near every legend entry) -->\n      <size></size>                                           <!-- [16] (Number) key size-->\n      <border_color></border_color>                           <!-- [] (hex color code) leave empty if you don't want to have border -->\n    </key>\n    <values>                                                  <!-- VALUES -->          \n      <enabled></enabled>                                     <!-- [false] (true / false) whether to show values near legend entries or not -->\n      <width></width>                                         <!-- [] (Number) width of value text (use it if you want to align all values to the right, othervise leave empty) -->\n      <text><![CDATA[]]></text>                               <!-- [{percents}%] ({value} {percents}) -->\n     </values>    \n  </legend>  \n  \n  <export_as_image>                                           <!-- export_as_image feature works only on a web server -->\n    <file></file>                                             <!-- [] (filename) if you set filename here, context menu (then user right clicks on flash movie) \"Export as image\" will appear. This will allow user to export chart as an image. Collected image data will be posted to this file name (use ampie/export.php or ampie/export.aspx) -->\n    <target></target>                                         <!-- [] (_blank, _top ...) target of a window in which export file must be called -->\n    <x></x>                                                   <!-- [0] (Number / Number% / !Number) x position of \"Collecting data\" text -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of \"Collecting data\" text. If not set, will be aligned to the bottom of flash movie -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of \"Collecting data\" text -->\n    <alpha></alpha>                                           <!-- [0] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [text_color] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </export_as_image>\n  \n  <error_messages>                                            <!-- \"error_messages\" settings will be applied for all error messages except the one which is showed if settings file wasn't found -->\n    <enabled></enabled>                                       <!-- [true] (true / false) -->\n    <x></x>                                                   <!-- [] (Number / Number% / !Number) x position of error message. If not set, will be aligned to the center -->\n    <y></y>                                                   <!-- [] (Number / Number% / !Number) y position of error message. If not set, will be aligned to the center -->\n    <color></color>                                           <!-- [#BBBB00] (hex color code) background color of error message. Separate color codes with comas for gradient -->\n    <alpha></alpha>                                           <!-- [100] (0 - 100) background alpha -->\n    <text_color></text_color>                                 <!-- [#FFFFFF] (hex color code) -->\n    <text_size></text_size>                                   <!-- [text_size] (Number) -->\n  </error_messages>    \n  \n  <strings>\n    <no_data></no_data>                                       <!-- [No data for selected period] (text) if data is missing, this message will be displayed -->\n    <export_as_image></export_as_image>                       <!-- [Export as image] (text) text for right click menu -->\n    <collecting_data></collecting_data>                       <!-- [Collecting data] (text) this text is displayed while exporting chart to an image -->\n  </strings>\n\n  <context_menu>                                              <!-- context menu allows you to controll right-click menu items. You can add custom menu items to create custom controls -->                                                              \n                                                              <!-- \"function_name\" specifies JavaScript function which will be called when user clicks on this menu. You can pass variables, for example: function_name=\"alert('something')\" -->\n                                                              <!-- \"title\" sets menu item text. Do not use for title: Show all, Zoom in, Zoom out, Print, Settings... -->\n                                                              <!-- you can have any number of custom menus. Uncomment the line below to enable this menu and add apropriate JS function to your html file. -->\n     \n     <!-- <menu function_name=\"printChart\" title=\"Print chart\"></menu> -->\n     \n     <default_items>\n       <zoom></zoom>                                          <!-- [false] (true / false) to show or not flash players zoom menu -->\n       <print></print>                                        <!-- [true] (true / false) to show or not flash players print menu -->\n     </default_items>\n  </context_menu> \n\n  <labels>                                                    <!-- LABELS -->\n                                                              <!-- you can add as many labels as you want -->\n                                                              <!-- labels can also be added in data xml file, using exactly the same structure like it is here -->\n    <label lid=\"0\">\n      <x>0</x>                                                <!-- [0] (Number / Number% / !Number) -->\n      <y>25</y>                                               <!-- [0] (Number / Number% / !Number) -->\n      <rotate>false</rotate>                                  <!-- [false] (true / false) -->\n      <width></width>                                         <!-- [] (Number / Number%) if empty, will stretch from left to right untill label fits -->\n      <align>center</align>                                   <!-- [left] (left / center / right) -->  \n      <text_color></text_color>                               <!-- [text_color] (hex color code) button text color -->\n      <text_size>12</text_size>                               <!-- [text_size](Number) button text size -->\n      <text>                                                  <!-- [] (text) html tags may be used (supports <b>, <i>, <u>, <font>, <a href=\"\">, <br/>. Enter text between []: <![CDATA[your <b>bold</b> and <i>italic</i> text]]>-->\n        <![CDATA[<b>How many children do you have?</b>]]>\n      </text>        \n    </label>\n  </labels>\n</settings>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/examples/multiple_charts_on_one_page/index.html",
    "content": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Multiple charts on one page</title>\n</head>\n\n<body>\n<!-- saved from url=(0013)about:internet -->\n<!-- ampie script-->\n<script type=\"text/javascript\" src=\"../../ampie/swfobject.js\"></script>\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent1\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../ampie/ampie.swf\", \"ampie1\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../ampie/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"ampie_settings1.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"ampie_data1.txt\"));\n\t\tso.write(\"flashcontent1\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n\n  <!-- this id must be unique! -->\n\t<div id=\"flashcontent2\">\n\t\t<strong>You need to upgrade your Flash Player</strong>\n\t</div>\n\t<script type=\"text/javascript\">\n\t\t// <![CDATA[\t\t\n\t\tvar so = new SWFObject(\"../../ampie/ampie.swf\", \"ampie2\", \"360\", \"300\", \"8\", \"#FFFFFF\");\n\t\tso.addVariable(\"path\", \"../../ampie/\");\n\t\tso.addVariable(\"settings_file\", encodeURIComponent(\"ampie_settings2.xml\"));\n\t\tso.addVariable(\"data_file\", encodeURIComponent(\"ampie_data2.txt\"));\n\t\tso.write(\"flashcontent2\");   // this id must match the div id above\n\t\t// ]]>\n\t</script>\n<!-- end of ampie script -->\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/licence.txt",
    "content": "*********************************************************************************\nThis AmCharts software, Pie&Donut chart is free under a linkware license\n\nThis means you may not remove or hide in any other way link to amcharts\nweb site - www.amcharts.com.\n\nIf you wish to remove the link, you should purchase commercial license.\n\nYou may not redistribute, sublicense or sell this program without written\npermission of Antanas Marcelionis, the author of amcharts software.\n\nThis software is provided without warranty.\n*********************************************************************************\nA commercial version (without link) is available at amCharts's website: \nhttp://www.amcharts.com/buy/\n\nPlease use amCharts Support Forum for any support queries:\nhttp://www.amcharts.com/forum\n*********************************************************************************"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/chart/ampie_1.6.4.1/readme.txt",
    "content": "**********************************************************************\nCheck documentation for help on all topics:\nhttp://www.amcharts.com/docs/\n\nIncase you don't find something, post your questions to support forum:\nhttp://www.amcharts.com/forum/\n**********************************************************************"
  },
  {
    "path": "Check Maven Webapp/target/Check/components/jquery-ui/jquery-1.2.6.js",
    "content": "(function(){\n/*\n * jQuery 1.2.6 - New Wave Javascript\n *\n * Copyright (c) 2008 John Resig (jquery.com)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * $Date: 2009/05/06 03:35:07 $\n * $Rev: 5685 $\n */\n\n// Map over jQuery in case of overwrite\nvar _jQuery = window.jQuery,\n// Map over the $ in case of overwrite\n\t_$ = window.$;\n\nvar jQuery = window.jQuery = window.$ = function( selector, context ) {\n\t// The jQuery object is actually just the init constructor 'enhanced'\n\treturn new jQuery.fn.init( selector, context );\n};\n\n// A simple way to check for HTML strings or ID strings\n// (both of which we optimize for)\nvar quickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,\n\n// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.]*$/,\n\n// Will speed up references to undefined, and allows munging its name.\n\tundefined;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector == \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Make sure an element was located\n\t\t\t\t\tif ( elem ){\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id != match[3] )\n\t\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\treturn jQuery( elem );\n\t\t\t\t\t}\n\t\t\t\t\tselector = [];\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document )[ jQuery.fn.ready ? \"ready\" : \"load\" ]( selector );\n\n\t\treturn this.setArray(jQuery.makeArray(selector));\n\t},\n\n\t// The current version of jQuery being used\n\tjquery: \"1.2.6\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// The number of elements contained in the matched element set\n\tlength: 0,\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tjQuery.makeArray( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tvar ret = -1;\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( name.constructor == String )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text != \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] )\n\t\t\t// The elements to wrap the target around\n\t\t\tjQuery( html, this[0].ownerDocument )\n\t\t\t\t.clone()\n\t\t\t\t.insertBefore( this[0] )\n\t\t\t\t.map(function(){\n\t\t\t\t\tvar elem = this;\n\n\t\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\t\treturn elem;\n\t\t\t\t})\n\t\t\t\t.append(this);\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, false, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, true, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\tfind: function( selector ) {\n\t\tvar elems = jQuery.map(this, function(elem){\n\t\t\treturn jQuery.find( selector, elem );\n\t\t});\n\n\t\treturn this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf(\"..\") > -1 ?\n\t\t\tjQuery.unique( elems ) :\n\t\t\telems );\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar clone = this.cloneNode(true),\n\t\t\t\t\tcontainer = document.createElement(\"div\");\n\t\t\t\tcontainer.appendChild(clone);\n\t\t\t\treturn jQuery.clean([container.innerHTML])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Need to set the expando to null on the cloned set if it exists\n\t\t// removeData doesn't work here, IE removes it from the original as well\n\t\t// this is primarily for IE but the data expando shouldn't be copied over in any browser\n\t\tvar clone = ret.find(\"*\").andSelf().each(function(){\n\t\t\tif ( this[ expando ] != undefined )\n\t\t\t\tthis[ expando ] = null;\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true )\n\t\t\tthis.find(\"*\").andSelf().each(function(i){\n\t\t\t\tif (this.nodeType == 3)\n\t\t\t\t\treturn;\n\t\t\t\tvar events = jQuery.data( this, \"events\" );\n\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tfor ( var handler in events[ type ] )\n\t\t\t\t\t\tjQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t});\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, this ) );\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( selector.constructor == String )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ) );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector == 'string' ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value == undefined ) {\n\n\t\t\tif ( this.length ) {\n\t\t\t\tvar elem = this[0];\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\t} else\n\t\t\t\t\treturn (this[0].value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif( value.constructor == Number )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( value.constructor == Array && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value == undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ) );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\n\tdomManip: function( args, table, reverse, callback ) {\n\t\tvar clone = this.length > 1, elems;\n\n\t\treturn this.each(function(){\n\t\t\tif ( !elems ) {\n\t\t\t\telems = jQuery.clean( args, this.ownerDocument );\n\n\t\t\t\tif ( reverse )\n\t\t\t\t\telems.reverse();\n\t\t\t}\n\n\t\t\tvar obj = this;\n\n\t\t\tif ( table && jQuery.nodeName( this, \"table\" ) && jQuery.nodeName( elems[0], \"tr\" ) )\n\t\t\t\tobj = this.getElementsByTagName(\"tbody\")[0] || this.appendChild( this.ownerDocument.createElement(\"tbody\") );\n\n\t\t\tvar scripts = jQuery( [] );\n\n\t\t\tjQuery.each(elems, function(){\n\t\t\t\tvar elem = clone ?\n\t\t\t\t\tjQuery( this ).clone( true )[0] :\n\t\t\t\t\tthis;\n\n\t\t\t\t// execute all scripts after the elements have been injected\n\t\t\t\tif ( jQuery.nodeName( elem, \"script\" ) )\n\t\t\t\t\tscripts = scripts.add( elem );\n\t\t\t\telse {\n\t\t\t\t\t// Remove any inner scripts for later evaluation\n\t\t\t\t\tif ( elem.nodeType == 1 )\n\t\t\t\t\t\tscripts = scripts.add( jQuery( \"script\", elem ).remove() );\n\n\t\t\t\t\t// Inject the elements into the document\n\t\t\t\t\tcallback.call( obj, elem );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscripts.each( evalScript );\n\t\t});\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( target.constructor == Boolean ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target != \"object\" && typeof target != \"function\" )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy == \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {},\n\t// exclude the following css properties to add px\n\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning this function.\n\tisFunction: function( fn ) {\n\t\treturn !!fn && typeof fn != \"string\" && !fn.nodeName &&\n\t\t\tfn.constructor != Array && /^[\\s[]?function/.test( fn + \"\" );\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.documentElement && !elem.body ||\n\t\t\telem.tagName && elem.ownerDocument && !elem.ownerDocument.body;\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tdata = jQuery.trim( data );\n\n\t\tif ( data ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.browser.msie )\n\t\t\t\tscript.text = data;\n\t\t\telse\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length == undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length == undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn value && value.constructor == Number && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames != undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\t\t\t\tvar padding = 0, border = 0;\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tpadding += parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tborder += parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t\tval -= Math.round(padding + border);\n\t\t\t}\n\n\t\t\tif ( jQuery(elem).is(\":visible\") )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, val);\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// A helper method for determining if an element's values are broken\n\t\tfunction color( elem ) {\n\t\t\tif ( !jQuery.browser.safari )\n\t\t\t\treturn false;\n\n\t\t\t// defaultView is cached\n\t\t\tvar ret = defaultView.getComputedStyle( elem, null );\n\t\t\treturn !ret || ret.getPropertyValue(\"color\") == \"\";\n\t\t}\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && jQuery.browser.msie ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\t\t// Opera sometimes will give the wrong display answer, this fixes it, see #2037\n\t\tif ( jQuery.browser.opera && name == \"display\" ) {\n\t\t\tvar save = style.outline;\n\t\t\tstyle.outline = \"0 solid black\";\n\t\t\tstyle.outline = save;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle && !color( elem ) )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// If the element isn't reporting its values properly in Safari\n\t\t\t// then some display: none elements are involved\n\t\t\telse {\n\t\t\t\tvar swap = [], stack = [], a = elem, i = 0;\n\n\t\t\t\t// Locate all of the parent display: none elements\n\t\t\t\tfor ( ; a && color(a); a = a.parentNode )\n\t\t\t\t\tstack.unshift(a);\n\n\t\t\t\t// Go through and make them visible, but in reverse\n\t\t\t\t// (It would be better if we knew the exact display type that they had)\n\t\t\t\tfor ( ; i < stack.length; i++ )\n\t\t\t\t\tif ( color( stack[ i ] ) ) {\n\t\t\t\t\t\tswap[ i ] = stack[ i ].style.display;\n\t\t\t\t\t\tstack[ i ].style.display = \"block\";\n\t\t\t\t\t}\n\n\t\t\t\t// Since we flip the display style, we have to handle that\n\t\t\t\t// one special, otherwise get the value\n\t\t\t\tret = name == \"display\" && swap[ stack.length - 1 ] != null ?\n\t\t\t\t\t\"none\" :\n\t\t\t\t\t( computedStyle && computedStyle.getPropertyValue( name ) ) || \"\";\n\n\t\t\t\t// Finally, revert the display styles back\n\t\t\t\tfor ( i = 0; i < swap.length; i++ )\n\t\t\t\t\tif ( swap[ i ] != null )\n\t\t\t\t\t\tstack[ i ].style.display = swap[ i ];\n\t\t\t}\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context ) {\n\t\tvar ret = [];\n\t\tcontext = context || document;\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif (typeof context.createElement == 'undefined')\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\tif ( elem.constructor == Number )\n\t\t\t\telem += '';\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem == \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement(\"div\");\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\tjQuery.browser.msie &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( jQuery.browser.msie ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar tbody = !tags.indexOf(\"<table\") && tags.indexOf(\"<tbody\") < 0 ?\n\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && tags.indexOf(\"<tbody\") < 0 ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( /^\\s/.test( elem ) )\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\n\t\t\t\t}\n\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.length === 0 && (!jQuery.nodeName( elem, \"form\" ) && !jQuery.nodeName( elem, \"select\" )) )\n\t\t\t\treturn;\n\n\t\t\tif ( elem[0] == undefined || jQuery.nodeName( elem, \"form\" ) || elem.options )\n\t\t\t\tret.push( elem );\n\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined,\n\t\t\tmsie = jQuery.browser.msie;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && jQuery.browser.safari )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( msie && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = msie && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( msie && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t//the window, strings and functions also have 'length'\n\t\t\tif( i == null || array.split || array.setInterval || array.call )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( jQuery.browser.msie ) {\n\t\t\twhile ( elem = second[ i++ ] )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( elem = second[ i++ ] )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\nvar styleFloat = jQuery.browser.msie ?\n\t\"styleFloat\" :\n\t\"cssFloat\";\n\njQuery.extend({\n\t// Check to see if the W3C box model is being used\n\tboxModel: !jQuery.browser.msie || document.compatMode == \"CSS1Compat\",\n\n\tprops: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\t\"float\": styleFloat,\n\t\tcssFloat: styleFloat,\n\t\tstyleFloat: styleFloat,\n\t\treadonly: \"readOnly\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\"\n\t}\n});\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ) );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function() {\n\t\tvar args = arguments;\n\n\t\treturn this.each(function(){\n\t\t\tfor ( var i = 0, length = args.length; i < length; i++ )\n\t\t\t\tjQuery( args[ i ] )[ original ]( this );\n\t\t});\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames ) {\n\t\tjQuery.className[ jQuery.className.has( this, classNames ) ? \"remove\" : \"add\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).r.length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add(this).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery( \">*\", this ).remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Opera reports document.body.client[Width/Height] properly in both quirks and standards\n\t\t\tjQuery.browser.opera && document.body[ \"client\" + name ] ||\n\n\t\t\t// Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)\n\t\t\tjQuery.browser.safari && window[ \"inner\" + name ] ||\n\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] || document.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tMath.max(document.body[\"scroll\" + name], document.documentElement[\"scroll\" + name]),\n\t\t\t\t\tMath.max(document.body[\"offset\" + name], document.documentElement[\"offset\" + name])\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize == undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, size.constructor == String ? size : size + \"px\" );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?\n\t\t\"(?:[\\\\w*_-]|\\\\\\\\.)\" :\n\t\t\"(?:[\\\\w\\u0128-\\uFFFF*_-]|\\\\\\\\.)\",\n\tquickChild = new RegExp(\"^>\\\\s*(\" + chars + \"+)\"),\n\tquickID = new RegExp(\"^(\" + chars + \"+)(#)(\" + chars + \"+)\"),\n\tquickClass = new RegExp(\"^([#.]?)(\" + chars + \"*)\");\n\njQuery.extend({\n\texpr: {\n\t\t\"\": function(a,i,m){return m[2]==\"*\"||jQuery.nodeName(a,m[2]);},\n\t\t\"#\": function(a,i,m){return a.getAttribute(\"id\")==m[2];},\n\t\t\":\": {\n\t\t\t// Position Checks\n\t\t\tlt: function(a,i,m){return i<m[3]-0;},\n\t\t\tgt: function(a,i,m){return i>m[3]-0;},\n\t\t\tnth: function(a,i,m){return m[3]-0==i;},\n\t\t\teq: function(a,i,m){return m[3]-0==i;},\n\t\t\tfirst: function(a,i){return i==0;},\n\t\t\tlast: function(a,i,m,r){return i==r.length-1;},\n\t\t\teven: function(a,i){return i%2==0;},\n\t\t\todd: function(a,i){return i%2;},\n\n\t\t\t// Child Checks\n\t\t\t\"first-child\": function(a){return a.parentNode.getElementsByTagName(\"*\")[0]==a;},\n\t\t\t\"last-child\": function(a){return jQuery.nth(a.parentNode.lastChild,1,\"previousSibling\")==a;},\n\t\t\t\"only-child\": function(a){return !jQuery.nth(a.parentNode.lastChild,2,\"previousSibling\");},\n\n\t\t\t// Parent Checks\n\t\t\tparent: function(a){return a.firstChild;},\n\t\t\tempty: function(a){return !a.firstChild;},\n\n\t\t\t// Text Check\n\t\t\tcontains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||\"\").indexOf(m[3])>=0;},\n\n\t\t\t// Visibility\n\t\t\tvisible: function(a){return \"hidden\"!=a.type&&jQuery.css(a,\"display\")!=\"none\"&&jQuery.css(a,\"visibility\")!=\"hidden\";},\n\t\t\thidden: function(a){return \"hidden\"==a.type||jQuery.css(a,\"display\")==\"none\"||jQuery.css(a,\"visibility\")==\"hidden\";},\n\n\t\t\t// Form attributes\n\t\t\tenabled: function(a){return !a.disabled;},\n\t\t\tdisabled: function(a){return a.disabled;},\n\t\t\tchecked: function(a){return a.checked;},\n\t\t\tselected: function(a){return a.selected||jQuery.attr(a,\"selected\");},\n\n\t\t\t// Form elements\n\t\t\ttext: function(a){return \"text\"==a.type;},\n\t\t\tradio: function(a){return \"radio\"==a.type;},\n\t\t\tcheckbox: function(a){return \"checkbox\"==a.type;},\n\t\t\tfile: function(a){return \"file\"==a.type;},\n\t\t\tpassword: function(a){return \"password\"==a.type;},\n\t\t\tsubmit: function(a){return \"submit\"==a.type;},\n\t\t\timage: function(a){return \"image\"==a.type;},\n\t\t\treset: function(a){return \"reset\"==a.type;},\n\t\t\tbutton: function(a){return \"button\"==a.type||jQuery.nodeName(a,\"button\");},\n\t\t\tinput: function(a){return /input|select|textarea|button/i.test(a.nodeName);},\n\n\t\t\t// :has()\n\t\t\thas: function(a,i,m){return jQuery.find(m[3],a).length;},\n\n\t\t\t// :header\n\t\t\theader: function(a){return /h\\d/i.test(a.nodeName);},\n\n\t\t\t// :animated\n\t\t\tanimated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}\n\t\t}\n\t},\n\n\t// The regular expressions that power the parsing engine\n\tparse: [\n\t\t// Match: [@value='test'], [@foo]\n\t\t/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *('?\"?)(.*?)\\4 *\\]/,\n\n\t\t// Match: :contains('foo')\n\t\t/^(:)([\\w-]+)\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)/,\n\n\t\t// Match: :even, :last-child, #id, .class\n\t\tnew RegExp(\"^([:.#]*)(\" + chars + \"+)\")\n\t],\n\n\tmultiFilter: function( expr, elems, not ) {\n\t\tvar old, cur = [];\n\n\t\twhile ( expr && expr != old ) {\n\t\t\told = expr;\n\t\t\tvar f = jQuery.filter( expr, elems, not );\n\t\t\texpr = f.t.replace(/^\\s*,\\s*/, \"\" );\n\t\t\tcur = not ? elems = f.r : jQuery.merge( cur, f.r );\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tfind: function( t, context ) {\n\t\t// Quickly handle non-string expressions\n\t\tif ( typeof t != \"string\" )\n\t\t\treturn [ t ];\n\n\t\t// check to make sure context is a DOM element or a document\n\t\tif ( context && context.nodeType != 1 && context.nodeType != 9)\n\t\t\treturn [ ];\n\n\t\t// Set the correct context (if none is provided)\n\t\tcontext = context || document;\n\n\t\t// Initialize the search\n\t\tvar ret = [context], done = [], last, nodeName;\n\n\t\t// Continue while a selector expression exists, and while\n\t\t// we're no longer looping upon ourselves\n\t\twhile ( t && last != t ) {\n\t\t\tvar r = [];\n\t\t\tlast = t;\n\n\t\t\tt = jQuery.trim(t);\n\n\t\t\tvar foundToken = false,\n\n\t\t\t// An attempt at speeding up child selectors that\n\t\t\t// point to a specific element tag\n\t\t\t\tre = quickChild,\n\n\t\t\t\tm = re.exec(t);\n\n\t\t\tif ( m ) {\n\t\t\t\tnodeName = m[1].toUpperCase();\n\n\t\t\t\t// Perform our own iteration and filter\n\t\t\t\tfor ( var i = 0; ret[i]; i++ )\n\t\t\t\t\tfor ( var c = ret[i].firstChild; c; c = c.nextSibling )\n\t\t\t\t\t\tif ( c.nodeType == 1 && (nodeName == \"*\" || c.nodeName.toUpperCase() == nodeName) )\n\t\t\t\t\t\t\tr.push( c );\n\n\t\t\t\tret = r;\n\t\t\t\tt = t.replace( re, \"\" );\n\t\t\t\tif ( t.indexOf(\" \") == 0 ) continue;\n\t\t\t\tfoundToken = true;\n\t\t\t} else {\n\t\t\t\tre = /^([>+~])\\s*(\\w*)/i;\n\n\t\t\t\tif ( (m = re.exec(t)) != null ) {\n\t\t\t\t\tr = [];\n\n\t\t\t\t\tvar merge = {};\n\t\t\t\t\tnodeName = m[2].toUpperCase();\n\t\t\t\t\tm = m[1];\n\n\t\t\t\t\tfor ( var j = 0, rl = ret.length; j < rl; j++ ) {\n\t\t\t\t\t\tvar n = m == \"~\" || m == \"+\" ? ret[j].nextSibling : ret[j].firstChild;\n\t\t\t\t\t\tfor ( ; n; n = n.nextSibling )\n\t\t\t\t\t\t\tif ( n.nodeType == 1 ) {\n\t\t\t\t\t\t\t\tvar id = jQuery.data(n);\n\n\t\t\t\t\t\t\t\tif ( m == \"~\" && merge[id] ) break;\n\n\t\t\t\t\t\t\t\tif (!nodeName || n.nodeName.toUpperCase() == nodeName ) {\n\t\t\t\t\t\t\t\t\tif ( m == \"~\" ) merge[id] = true;\n\t\t\t\t\t\t\t\t\tr.push( n );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( m == \"+\" ) break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret = r;\n\n\t\t\t\t\t// And remove the token\n\t\t\t\t\tt = jQuery.trim( t.replace( re, \"\" ) );\n\t\t\t\t\tfoundToken = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// See if there's still an expression, and that we haven't already\n\t\t\t// matched a token\n\t\t\tif ( t && !foundToken ) {\n\t\t\t\t// Handle multiple expressions\n\t\t\t\tif ( !t.indexOf(\",\") ) {\n\t\t\t\t\t// Clean the result set\n\t\t\t\t\tif ( context == ret[0] ) ret.shift();\n\n\t\t\t\t\t// Merge the result sets\n\t\t\t\t\tdone = jQuery.merge( done, ret );\n\n\t\t\t\t\t// Reset the context\n\t\t\t\t\tr = ret = [context];\n\n\t\t\t\t\t// Touch up the selector string\n\t\t\t\t\tt = \" \" + t.substr(1,t.length);\n\n\t\t\t\t} else {\n\t\t\t\t\t// Optimize for the case nodeName#idName\n\t\t\t\t\tvar re2 = quickID;\n\t\t\t\t\tvar m = re2.exec(t);\n\n\t\t\t\t\t// Re-organize the results, so that they're consistent\n\t\t\t\t\tif ( m ) {\n\t\t\t\t\t\tm = [ 0, m[2], m[3], m[1] ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, do a traditional filter check for\n\t\t\t\t\t\t// ID, class, and element selectors\n\t\t\t\t\t\tre2 = quickClass;\n\t\t\t\t\t\tm = re2.exec(t);\n\t\t\t\t\t}\n\n\t\t\t\t\tm[2] = m[2].replace(/\\\\/g, \"\");\n\n\t\t\t\t\tvar elem = ret[ret.length-1];\n\n\t\t\t\t\t// Try to do a global search by ID, where we can\n\t\t\t\t\tif ( m[1] == \"#\" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {\n\t\t\t\t\t\t// Optimization for HTML document case\n\t\t\t\t\t\tvar oid = elem.getElementById(m[2]);\n\n\t\t\t\t\t\t// Do a quick check for the existence of the actual ID attribute\n\t\t\t\t\t\t// to avoid selecting by the name attribute in IE\n\t\t\t\t\t\t// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form\n\t\t\t\t\t\tif ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == \"string\" && oid.id != m[2] )\n\t\t\t\t\t\t\toid = jQuery('[@id=\"'+m[2]+'\"]', elem)[0];\n\n\t\t\t\t\t\t// Do a quick check for node name (where applicable) so\n\t\t\t\t\t\t// that div#foo searches will be really fast\n\t\t\t\t\t\tret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We need to find all descendant elements\n\t\t\t\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\t\t\t\t// Grab the tag name being searched for\n\t\t\t\t\t\t\tvar tag = m[1] == \"#\" && m[3] ? m[3] : m[1] != \"\" || m[0] == \"\" ? \"*\" : m[2];\n\n\t\t\t\t\t\t\t// Handle IE7 being really dumb about <object>s\n\t\t\t\t\t\t\tif ( tag == \"*\" && ret[i].nodeName.toLowerCase() == \"object\" )\n\t\t\t\t\t\t\t\ttag = \"param\";\n\n\t\t\t\t\t\t\tr = jQuery.merge( r, ret[i].getElementsByTagName( tag ));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// It's faster to filter by class and be done with it\n\t\t\t\t\t\tif ( m[1] == \".\" )\n\t\t\t\t\t\t\tr = jQuery.classFilter( r, m[2] );\n\n\t\t\t\t\t\t// Same with ID filtering\n\t\t\t\t\t\tif ( m[1] == \"#\" ) {\n\t\t\t\t\t\t\tvar tmp = [];\n\n\t\t\t\t\t\t\t// Try to find the element with the ID\n\t\t\t\t\t\t\tfor ( var i = 0; r[i]; i++ )\n\t\t\t\t\t\t\t\tif ( r[i].getAttribute(\"id\") == m[2] ) {\n\t\t\t\t\t\t\t\t\ttmp = [ r[i] ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tr = tmp;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret = r;\n\t\t\t\t\t}\n\n\t\t\t\t\tt = t.replace( re2, \"\" );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// If a selector string still exists\n\t\t\tif ( t ) {\n\t\t\t\t// Attempt to filter it\n\t\t\t\tvar val = jQuery.filter(t,r);\n\t\t\t\tret = r = val.r;\n\t\t\t\tt = jQuery.trim(val.t);\n\t\t\t}\n\t\t}\n\n\t\t// An error occurred with the selector;\n\t\t// just return an empty set instead\n\t\tif ( t )\n\t\t\tret = [];\n\n\t\t// Remove the root context\n\t\tif ( ret && context == ret[0] )\n\t\t\tret.shift();\n\n\t\t// And combine the results\n\t\tdone = jQuery.merge( done, ret );\n\n\t\treturn done;\n\t},\n\n\tclassFilter: function(r,m,not){\n\t\tm = \" \" + m + \" \";\n\t\tvar tmp = [];\n\t\tfor ( var i = 0; r[i]; i++ ) {\n\t\t\tvar pass = (\" \" + r[i].className + \" \").indexOf( m ) >= 0;\n\t\t\tif ( !not && pass || not && !pass )\n\t\t\t\ttmp.push( r[i] );\n\t\t}\n\t\treturn tmp;\n\t},\n\n\tfilter: function(t,r,not) {\n\t\tvar last;\n\n\t\t// Look for common filter expressions\n\t\twhile ( t && t != last ) {\n\t\t\tlast = t;\n\n\t\t\tvar p = jQuery.parse, m;\n\n\t\t\tfor ( var i = 0; p[i]; i++ ) {\n\t\t\t\tm = p[i].exec( t );\n\n\t\t\t\tif ( m ) {\n\t\t\t\t\t// Remove what we just matched\n\t\t\t\t\tt = t.substring( m[0].length );\n\n\t\t\t\t\tm[2] = m[2].replace(/\\\\/g, \"\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !m )\n\t\t\t\tbreak;\n\n\t\t\t// :not() is a special case that can be optimized by\n\t\t\t// keeping it out of the expression list\n\t\t\tif ( m[1] == \":\" && m[2] == \"not\" )\n\t\t\t\t// optimize if only one selector found (most common case)\n\t\t\t\tr = isSimple.test( m[3] ) ?\n\t\t\t\t\tjQuery.filter(m[3], r, true).r :\n\t\t\t\t\tjQuery( r ).not( m[3] );\n\n\t\t\t// We can get a big speed boost by filtering by class here\n\t\t\telse if ( m[1] == \".\" )\n\t\t\t\tr = jQuery.classFilter(r, m[2], not);\n\n\t\t\telse if ( m[1] == \"[\" ) {\n\t\t\t\tvar tmp = [], type = m[3];\n\n\t\t\t\tfor ( var i = 0, rl = r.length; i < rl; i++ ) {\n\t\t\t\t\tvar a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];\n\n\t\t\t\t\tif ( z == null || /href|src|selected/.test(m[2]) )\n\t\t\t\t\t\tz = jQuery.attr(a,m[2]) || '';\n\n\t\t\t\t\tif ( (type == \"\" && !!z ||\n\t\t\t\t\t\t type == \"=\" && z == m[5] ||\n\t\t\t\t\t\t type == \"!=\" && z != m[5] ||\n\t\t\t\t\t\t type == \"^=\" && z && !z.indexOf(m[5]) ||\n\t\t\t\t\t\t type == \"$=\" && z.substr(z.length - m[5].length) == m[5] ||\n\t\t\t\t\t\t (type == \"*=\" || type == \"~=\") && z.indexOf(m[5]) >= 0) ^ not )\n\t\t\t\t\t\t\ttmp.push( a );\n\t\t\t\t}\n\n\t\t\t\tr = tmp;\n\n\t\t\t// We can get a speed boost by handling nth-child here\n\t\t\t} else if ( m[1] == \":\" && m[2] == \"nth-child\" ) {\n\t\t\t\tvar merge = {}, tmp = [],\n\t\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\t\ttest = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\t\tm[3] == \"even\" && \"2n\" || m[3] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t\t!/\\D/.test(m[3]) && \"0n+\" + m[3] || m[3]),\n\t\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\t\tfirst = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;\n\n\t\t\t\t// loop through all the elements left in the jQuery object\n\t\t\t\tfor ( var i = 0, rl = r.length; i < rl; i++ ) {\n\t\t\t\t\tvar node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);\n\n\t\t\t\t\tif ( !merge[id] ) {\n\t\t\t\t\t\tvar c = 1;\n\n\t\t\t\t\t\tfor ( var n = parentNode.firstChild; n; n = n.nextSibling )\n\t\t\t\t\t\t\tif ( n.nodeType == 1 )\n\t\t\t\t\t\t\t\tn.nodeIndex = c++;\n\n\t\t\t\t\t\tmerge[id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar add = false;\n\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\tif ( node.nodeIndex == last )\n\t\t\t\t\t\t\tadd = true;\n\t\t\t\t\t} else if ( (node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0 )\n\t\t\t\t\t\tadd = true;\n\n\t\t\t\t\tif ( add ^ not )\n\t\t\t\t\t\ttmp.push( node );\n\t\t\t\t}\n\n\t\t\t\tr = tmp;\n\n\t\t\t// Otherwise, find the expression to execute\n\t\t\t} else {\n\t\t\t\tvar fn = jQuery.expr[ m[1] ];\n\t\t\t\tif ( typeof fn == \"object\" )\n\t\t\t\t\tfn = fn[ m[2] ];\n\n\t\t\t\tif ( typeof fn == \"string\" )\n\t\t\t\t\tfn = eval(\"false||function(a,i){return \" + fn + \";}\");\n\n\t\t\t\t// Execute it against the current filter\n\t\t\t\tr = jQuery.grep( r, function(elem, i){\n\t\t\t\t\treturn fn(elem, i, m, r);\n\t\t\t\t}, not );\n\t\t\t}\n\t\t}\n\n\t\t// Return an array of filtered elements (r)\n\t\t// and the modified expression string (t)\n\t\treturn { r: r, t: t };\n\t},\n\n\tdir: function( elem, dir ){\n\t\tvar matched = [],\n\t\t\tcur = elem[dir];\n\t\twhile ( cur && cur != document ) {\n\t\t\tif ( cur.nodeType == 1 )\n\t\t\t\tmatched.push( cur );\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function(cur,result,dir,elem){\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] )\n\t\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\t\tbreak;\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\t\tr.push( n );\n\t\t}\n\n\t\treturn r;\n\t}\n});\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code orignated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( jQuery.browser.msie && elem.setInterval )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif( data != undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn, function() {\n\t\t\t\t// Pass arguments and context to original handler\n\t\t\t\treturn fn.apply(this, arguments);\n\t\t\t});\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\tif ( typeof jQuery != \"undefined\" && !jQuery.event.triggered )\n\t\t\t\t\treturn jQuery.event.handle.apply(arguments.callee.elem, arguments);\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar parts = type.split(\".\");\n\t\t\ttype = parts[0];\n\t\t\thandler.type = parts[1];\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types == undefined || (typeof types == \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar parts = type.split(\".\");\n\t\t\t\t\ttype = parts[0];\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( handler in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( !parts[1] || events[type][handler].type == parts[1] )\n\t\t\t\t\t\t\t\t\tdelete events[type][handler];\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\ttrigger: function(type, data, elem, donative, extra) {\n\t\t// Clone the incoming data, if any\n\t\tdata = jQuery.makeArray(data);\n\n\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\ttype = type.slice(0, -1);\n\t\t\tvar exclusive = true;\n\t\t}\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\tif ( this.global[type] )\n\t\t\t\tjQuery(\"*\").add([window, document]).trigger(type, data);\n\n\t\t// Handle triggering a single element\n\t\t} else {\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\n\t\t\tvar val, ret, fn = jQuery.isFunction( elem[ type ] || null ),\n\t\t\t\t// Check to see if we need to provide a fake event, or not\n\t\t\t\tevent = !data[0] || !data[0].preventDefault;\n\n\t\t\t// Pass along a fake event\n\t\t\tif ( event ) {\n\t\t\t\tdata.unshift({\n\t\t\t\t\ttype: type,\n\t\t\t\t\ttarget: elem,\n\t\t\t\t\tpreventDefault: function(){},\n\t\t\t\t\tstopPropagation: function(){},\n\t\t\t\t\ttimeStamp: now()\n\t\t\t\t});\n\t\t\t\tdata[0][expando] = true; // no need to fix fake event\n\t\t\t}\n\n\t\t\t// Enforce the right trigger type\n\t\t\tdata[0].type = type;\n\t\t\tif ( exclusive )\n\t\t\t\tdata[0].exclusive = true;\n\n\t\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\t\tif ( handle )\n\t\t\t\tval = handle.apply( elem, data );\n\n\t\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\t\tif ( (!fn || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\t\tval = false;\n\n\t\t\t// Extra functions don't get the custom event object\n\t\t\tif ( event )\n\t\t\t\tdata.shift();\n\n\t\t\t// Handle triggering of extra function\n\t\t\tif ( extra && jQuery.isFunction( extra ) ) {\n\t\t\t\t// call the extra function and tack the current return value on the end for possible inspection\n\t\t\t\tret = extra.apply( elem, val == null ? data : data.concat( val ) );\n\t\t\t\t// if anything is returned, give it precedence and have it overwrite the previous value\n\t\t\t\tif (ret !== undefined)\n\t\t\t\t\tval = ret;\n\t\t\t}\n\n\t\t\t// Trigger the native events (except for clicks on links)\n\t\t\tif ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\t\tthis.triggered = true;\n\t\t\t\ttry {\n\t\t\t\t\telem[ type ]();\n\t\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\tthis.triggered = false;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar val, ret, namespace, all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\n\t\t// Namespaced event handlers\n\t\tnamespace = event.type.split(\".\");\n\t\tevent.type = namespace[0];\n\t\tnamespace = namespace[1];\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespace && !event.exclusive;\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || handler.type == namespace ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tret = handler.apply( this, arguments );\n\n\t\t\t\tif ( val !== false )\n\t\t\t\t\tval = ret;\n\n\t\t\t\tif ( ret === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val;\n\t},\n\n\tfix: function(event) {\n\t\tif ( event[expando] == true )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = { originalEvent: originalEvent };\n\t\tvar props = \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which\".split(\" \");\n\t\tfor ( var i=props.length; i; i-- )\n\t\t\tevent[ props[i] ] = originalEvent[ props[i] ];\n\n\t\t// Mark it as fixed\n\t\tevent[expando] = true;\n\n\t\t// add preventDefault and stopPropagation since\n\t\t// they will not work on the clone\n\t\tevent.preventDefault = function() {\n\t\t\t// if preventDefault exists run it on the original event\n\t\t\tif (originalEvent.preventDefault)\n\t\t\t\toriginalEvent.preventDefault();\n\t\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t\toriginalEvent.returnValue = false;\n\t\t};\n\t\tevent.stopPropagation = function() {\n\t\t\t// if stopPropagation exists run it on the original event\n\t\t\tif (originalEvent.stopPropagation)\n\t\t\t\toriginalEvent.stopPropagation();\n\t\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\t\toriginalEvent.cancelBubble = true;\n\t\t};\n\n\t\t// Fix timeStamp\n\t\tevent.timeStamp = event.timeStamp || now();\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\tsetup: function() {\n\t\t\t\t// Make sure the ready event is setup\n\t\t\t\tbindReady();\n\t\t\t\treturn;\n\t\t\t},\n\n\t\t\tteardown: function() { return; }\n\t\t},\n\n\t\tmouseenter: {\n\t\t\tsetup: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).bind(\"mouseover\", jQuery.event.special.mouseenter.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tteardown: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).unbind(\"mouseover\", jQuery.event.special.mouseenter.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\thandler: function(event) {\n\t\t\t\t// If we actually just moused on to a sub-element, ignore it\n\t\t\t\tif ( withinElement(event, this) ) return true;\n\t\t\t\t// Execute the right handlers by setting the event type to mouseenter\n\t\t\t\tevent.type = \"mouseenter\";\n\t\t\t\treturn jQuery.event.handle.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tmouseleave: {\n\t\t\tsetup: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).bind(\"mouseout\", jQuery.event.special.mouseleave.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tteardown: function() {\n\t\t\t\tif ( jQuery.browser.msie ) return false;\n\t\t\t\tjQuery(this).unbind(\"mouseout\", jQuery.event.special.mouseleave.handler);\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\thandler: function(event) {\n\t\t\t\t// If we actually just moused on to a sub-element, ignore it\n\t\t\t\tif ( withinElement(event, this) ) return true;\n\t\t\t\t// Execute the right handlers by setting the event type to mouseleave\n\t\t\t\tevent.type = \"mouseleave\";\n\t\t\t\treturn jQuery.event.handle.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this, true, fn );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data, fn ) {\n\t\treturn this[0] && jQuery.event.trigger( type, data, this[0], false, fn );\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( function() { return fn.call(this, jQuery); } );\n\n\t\treturn this;\n\t}\n});\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera (see further below for it) and webkit nightlies currently support this event\n\tif ( document.addEventListener && !jQuery.browser.opera)\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", jQuery.ready, false );\n\n\t// If IE is used and is not in a frame\n\t// Continually check to see if the document is ready\n\tif ( jQuery.browser.msie && window == top ) (function(){\n\t\tif (jQuery.isReady) return;\n\t\ttry {\n\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t} catch( error ) {\n\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\treturn;\n\t\t}\n\t\t// and execute any waiting functions\n\t\tjQuery.ready();\n\t})();\n\n\tif ( jQuery.browser.opera )\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function () {\n\t\t\tif (jQuery.isReady) return;\n\t\t\tfor (var i = 0; i < document.styleSheets.length; i++)\n\t\t\t\tif (document.styleSheets[i].disabled) {\n\t\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t}, false);\n\n\tif ( jQuery.browser.safari ) {\n\t\tvar numStyles;\n\t\t(function(){\n\t\t\tif (jQuery.isReady) return;\n\t\t\tif ( document.readyState != \"loaded\" && document.readyState != \"complete\" ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( numStyles === undefined )\n\t\t\t\tnumStyles = jQuery(\"style, link[rel=stylesheet]\").length;\n\t\t\tif ( document.styleSheets.length != numStyles ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,\" +\n\t\"submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event, elem) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem; }\n\t// Return true if we actually just moused on to a sub-element\n\treturn parent == elem;\n};\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery(window).bind(\"unload\", function() {\n\tjQuery(\"*\").add(document).unbind();\n});\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url != 'string' )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\tcallback = callback || function(){};\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn jQuery.nodeName(this, \"form\") ?\n\t\t\t\tjQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tval.constructor == Array ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\ttimeout: 0,\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data != \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar remote = /^(?:\\w+:)?\\/\\/([^\\/?#]+)/;\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\"\n\t\t\t\t&& remote.test(s.url) && remote.exec(s.url)[1] != location.host ){\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\tvar xhr = window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// cleanup active request counter\n\t\t\ts.global && jQuery.active--;\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\tif ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" && \"timeout\" ||\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) && \"error\" ||\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) && \"notmodified\" ||\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s.dataFilter );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr ) {\n\t\t\t\t\t\t// Cancel the request\n\t\t\t\t\t\txhr.abort();\n\n\t\t\t\t\t\tif( !requestDone )\n\t\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t\t}\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223 ||\n\t\t\t\tjQuery.browser.safari && xhr.status == undefined;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url] ||\n\t\t\t\tjQuery.browser.safari && xhr.status == undefined;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, filter ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\tif( filter )\n\t\t\tdata = filter( data, type );\n\n\t\t// If the type is \"script\", eval it in global context\n\t\tif ( type == \"script\" )\n\t\t\tjQuery.globalEval( data );\n\n\t\t// Get the JavaScript object, if JSON is used.\n\t\tif ( type == \"json\" )\n\t\t\tdata = eval(\"(\" + data + \")\");\n\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [];\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( a.constructor == Array || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\ts.push( encodeURIComponent(this.name) + \"=\" + encodeURIComponent( this.value ) );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( a[j] && a[j].constructor == Array )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\ts.push( encodeURIComponent(j) + \"=\" + encodeURIComponent( this ) );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\ts.push( encodeURIComponent(j) + \"=\" + encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] ) );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\treturn speed ?\n\t\t\tthis.animate({\n\t\t\t\theight: \"show\", width: \"show\", opacity: \"show\"\n\t\t\t}, speed, callback) :\n\n\t\t\tthis.filter(\":hidden\").each(function(){\n\t\t\t\tthis.style.display = this.oldblock || \"\";\n\t\t\t\tif ( jQuery.css(this,\"display\") == \"none\" ) {\n\t\t\t\t\tvar elem = jQuery(\"<\" + this.tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\tthis.style.display = elem.css(\"display\");\n\t\t\t\t\t// handle an edge condition where css is - div { display:none; } or similar\n\t\t\t\t\tif (this.style.display == \"none\")\n\t\t\t\t\t\tthis.style.display = \"block\";\n\t\t\t\t\telem.remove();\n\t\t\t\t}\n\t\t\t}).end();\n\t},\n\n\thide: function(speed,callback){\n\t\treturn speed ?\n\t\t\tthis.animate({\n\t\t\t\theight: \"hide\", width: \"hide\", opacity: \"hide\"\n\t\t\t}, speed, callback) :\n\n\t\t\tthis.filter(\":visible\").each(function(){\n\t\t\t\tthis.oldblock = this.oldblock || jQuery.css(this,\"display\");\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t}).end();\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn ?\n\t\t\t\tthis.animate({\n\t\t\t\t\theight: \"toggle\", width: \"toggle\", opacity: \"toggle\"\n\t\t\t\t}, fn, fn2) :\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tjQuery(this)[ jQuery(this).is(\":hidden\") ? \"show\" : \"hide\" ]();\n\t\t\t\t});\n\t},\n\n\tslideDown: function(speed,callback){\n\t\treturn this.animate({height: \"show\"}, speed, callback);\n\t},\n\n\tslideUp: function(speed,callback){\n\t\treturn this.animate({height: \"hide\"}, speed, callback);\n\t},\n\n\tslideToggle: function(speed, callback){\n\t\treturn this.animate({height: \"toggle\"}, speed, callback);\n\t},\n\n\tfadeIn: function(speed, callback){\n\t\treturn this.animate({opacity: \"show\"}, speed, callback);\n\t},\n\n\tfadeOut: function(speed, callback){\n\t\treturn this.animate({opacity: \"hide\"}, speed, callback);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\tif ( this.nodeType != 1)\n\t\t\t\treturn false;\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = jQuery(this).is(\":hidden\"), self = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( p == \"height\" || p == \"width\" ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tqueue: function(type, fn){\n\t\tif ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {\n\t\t\tfn = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( !type || (typeof type == \"string\" && !fn) )\n\t\t\treturn queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tif ( fn.constructor == Array )\n\t\t\t\tqueue(this, type, fn);\n\t\t\telse {\n\t\t\t\tqueue(this, type).push( fn );\n\n\t\t\t\tif ( queue(this, type).length == 1 )\n\t\t\t\t\tfn.call(this);\n\t\t\t}\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\nvar queue = function( elem, type, array ) {\n\tif ( elem ){\n\n\t\ttype = type || \"fx\";\n\n\t\tvar q = jQuery.data( elem, type + \"queue\" );\n\n\t\tif ( !q || array )\n\t\t\tq = jQuery.data( elem, type + \"queue\", jQuery.makeArray(array) );\n\n\t}\n\treturn q;\n};\n\njQuery.fn.dequeue = function(type){\n\ttype = type || \"fx\";\n\n\treturn this.each(function(){\n\t\tvar q = queue(this, type);\n\n\t\tq.shift();\n\n\t\tif ( q.length )\n\t\t\tq[0].call( this );\n\t});\n};\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = speed && speed.constructor == Object ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && easing.constructor != Function && easing\n\t\t};\n\n\t\topt.duration = (opt.duration && opt.duration.constructor == Number ?\n\t\t\topt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\ttimerId: null,\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( this.prop == \"height\" || this.prop == \"width\" )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && this.elem.style[this.prop] == null )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\t\tthis.update();\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tjQuery.timers.push(t);\n\n\t\tif ( jQuery.timerId == null ) {\n\t\t\tjQuery.timerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( jQuery.timerId );\n\t\t\t\t\tjQuery.timerId = null;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(0, this.cur());\n\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tif ( this.prop == \"width\" || this.prop == \"height\" )\n\t\t\tthis.elem.style[this.prop] = \"1px\";\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t > this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tthis.elem.style.display = \"none\";\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t}\n\n\t\t\tif ( done )\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\tdef: 400\n\t},\n\tstep: {\n\t\tscrollLeft: function(fx){\n\t\t\tfx.elem.scrollLeft = fx.now;\n\t\t},\n\n\t\tscrollTop: function(fx){\n\t\t\tfx.elem.scrollTop = fx.now;\n\t\t},\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t}\n\t}\n});\n// The Offset Method\n// Originally By Brandon Aaron, part of the Dimension Plugin\n// http://jquery.com/plugins/project/dimensions\njQuery.fn.offset = function() {\n\tvar left = 0, top = 0, elem = this[0], results;\n\n\tif ( elem ) with ( jQuery.browser ) {\n\t\tvar parent       = elem.parentNode,\n\t\t    offsetChild  = elem,\n\t\t    offsetParent = elem.offsetParent,\n\t\t    doc          = elem.ownerDocument,\n\t\t    safari2      = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),\n\t\t    css          = jQuery.curCSS,\n\t\t    fixed        = css(elem, \"position\") == \"fixed\";\n\n\t\t// Use getBoundingClientRect if available\n\t\tif ( elem.getBoundingClientRect ) {\n\t\t\tvar box = elem.getBoundingClientRect();\n\n\t\t\t// Add the document scroll offsets\n\t\t\tadd(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),\n\t\t\t\tbox.top  + Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));\n\n\t\t\t// IE adds the HTML element's border, by default it is medium which is 2px\n\t\t\t// IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }\n\t\t\t// IE 7 standards mode, the border is always 2px\n\t\t\t// This border/offset is typically represented by the clientLeft and clientTop properties\n\t\t\t// However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS\n\t\t\t// Therefore this method will be off by 2px in IE while in quirksmode\n\t\t\tadd( -doc.documentElement.clientLeft, -doc.documentElement.clientTop );\n\n\t\t// Otherwise loop through the offsetParents and parentNodes\n\t\t} else {\n\n\t\t\t// Initial element offsets\n\t\t\tadd( elem.offsetLeft, elem.offsetTop );\n\n\t\t\t// Get parent offsets\n\t\t\twhile ( offsetParent ) {\n\t\t\t\t// Add offsetParent offsets\n\t\t\t\tadd( offsetParent.offsetLeft, offsetParent.offsetTop );\n\n\t\t\t\t// Mozilla and Safari > 2 does not include the border on offset parents\n\t\t\t\t// However Mozilla adds the border for table or table cells\n\t\t\t\tif ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )\n\t\t\t\t\tborder( offsetParent );\n\n\t\t\t\t// Add the document scroll offsets if position is fixed on any offsetParent\n\t\t\t\tif ( !fixed && css(offsetParent, \"position\") == \"fixed\" )\n\t\t\t\t\tfixed = true;\n\n\t\t\t\t// Set offsetChild to previous offsetParent unless it is the body element\n\t\t\t\toffsetChild  = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;\n\t\t\t\t// Get next offsetParent\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\t// Get parent scroll offsets\n\t\t\twhile ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) {\n\t\t\t\t// Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug\n\t\t\t\tif ( !/^inline|table.*$/i.test(css(parent, \"display\")) )\n\t\t\t\t\t// Subtract parent scroll offsets\n\t\t\t\t\tadd( -parent.scrollLeft, -parent.scrollTop );\n\n\t\t\t\t// Mozilla does not add the border for a parent that has overflow != visible\n\t\t\t\tif ( mozilla && css(parent, \"overflow\") != \"visible\" )\n\t\t\t\t\tborder( parent );\n\n\t\t\t\t// Get next parent\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\t// Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild\n\t\t\t// Mozilla doubles body offsets with a non-absolutely positioned offsetChild\n\t\t\tif ( (safari2 && (fixed || css(offsetChild, \"position\") == \"absolute\")) ||\n\t\t\t\t(mozilla && css(offsetChild, \"position\") != \"absolute\") )\n\t\t\t\t\tadd( -doc.body.offsetLeft, -doc.body.offsetTop );\n\n\t\t\t// Add the document scroll offsets if position is fixed\n\t\t\tif ( fixed )\n\t\t\t\tadd(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),\n\t\t\t\t\tMath.max(doc.documentElement.scrollTop,  doc.body.scrollTop));\n\t\t}\n\n\t\t// Return an object with top and left properties\n\t\tresults = { top: top, left: left };\n\t}\n\n\tfunction border(elem) {\n\t\tadd( jQuery.curCSS(elem, \"borderLeftWidth\", true), jQuery.curCSS(elem, \"borderTopWidth\", true) );\n\t}\n\n\tfunction add(l, t) {\n\t\tleft += parseInt(l, 10) || 0;\n\t\ttop += parseInt(t, 10) || 0;\n\t}\n\n\treturn results;\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop' );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth' );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return;\n\n\t\treturn val != undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\"; // bottom or right\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[ name.toLowerCase() ]() +\n\t\t\tnum(this, \"padding\" + tl) +\n\t\t\tnum(this, \"padding\" + br);\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[\"inner\" + name]() +\n\t\t\tnum(this, \"border\" + tl + \"Width\") +\n\t\t\tnum(this, \"border\" + br + \"Width\") +\n\t\t\t(margin ?\n\t\t\t\tnum(this, \"margin\" + tl) + num(this, \"margin\" + br) : 0);\n\t};\n\n});})();\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/base.css",
    "content": "/*css reset*/\nhtml, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td , i{\n\tmargin:0;\n\tpadding:0;\n\tborder:0;\n\tfont-weight:inherit;\n\tfont-style:inherit;\n\tfont-size:100%;\n\tfont-family:inherit;\n\tvertical-align:baseline;\n}\nbody {line-height:1.5;}\ntable {border-collapse: collapse;border-spacing:0;}\ncaption, th, td ,b,strong{text-align:left;font-weight:normal;}\ntable, td, th {vertical-align:middle;}\t\nblockquote:before, blockquote:after, q:before, q:after {content:\"\";}\nblockquote, q {quotes:\"\" \"\";}\na img {border:none;}\nem,cite{font-style:normal;}\n\n\nbody { background:#fff; font: 12px/1.5 Tahoma,'宋体';color:#000;}\nh1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}\na {text-decoration:none;cursor:pointer;}\ndl, dt, dd, ol, ul, li{ list-style:none;}\n\n/*some common class*/\n.left{float:left;}\n.right{float:right;}\n\n/*clear*/\n.ue-clear:after{content: \"\";display:block;height:0;clear:both;visibility:hidden;}\n.ue-clear{display:inline-block;}\n*html .ue-clear{height:1%;}\n.ue-clear{display:block; overflow:hidden;}\n\n.placeholder{color:#ddd;}\n\n/*====================================\n  分页信息（表格依赖样式）\n  ===================================*/\n.pagination a {text-decoration: none;border: solid 1px;\t}\n.pagination .pxofy{float:left;margin-left: 5px;height:25px;*padding-top:1px;}\t\n.pagination a, .pagination span {display: block;float: left;line-height:24px;padding:0 9px;border-radius:2px;margin-right: 5px;font-family:Arial, Helvetica, sans-serif !important;}\n.pagination .current {cursor:default;border: solid 1px ;}\n.pagination .prev, .pagination .next{*line-height:22px;}\n\n/*分页样式*/\n.pagination a{color: #000000;border-color:#8EB2D2; background:#eaf4fa;}\n.pagination a:hover{color:#023054;border-color:#8EB2D2;background:#B8DFFB;}\n.pagination .current{color:#fff;border-color:#4ea052;background:#5ebc62;}\n.pagination .current.prev, .pagination .current.next{color:#B9B9B9;border-color:#D3D3D3;background:#fff;}\n.pagination .pxofy{color: #023054;}\n\n\n.button{display:inline-block;width:135px; height:35px; background:url(../images/dialog_btnbg.png);border:none; border-radius:3px;color:#fff; font-size:16px; cursor:pointer; font-family:'Microsoft Yahei','微软雅黑';outline:none;}\n.button.normal{width:133px; height:33px;background:url(../images/dialogbtn.png);color:#000;border:1px solid #c0c0c0;}\n.button:active{}\n.button.long2{width:100px;}\n\n.select-wrap ul{ display:none; background:#fff;position:absolute; left:0; top:30px;  width:260px; border:1px solid #c5d6e0;border-top:none;z-index: 222;}\n.select-wrap ul li{ padding-left:10px; line-height:28px; cursor:pointer;}\n.select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/bootstrap.css",
    "content": "html {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n  padding-top: 20px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 30%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px 15px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding: 48px 0;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-weight: normal;\n  line-height: 1.4;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000;\n            perspective: 1000;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/extreme/extremecomponents.css",
    "content": ".eXtremeTable {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable select {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: solid 1px #EEE;\n\twidth: 75px;\n}\n\n.eXtremeTable .tableRegion {\n\tborder: 1px solid #c1e1dd;\n\tpadding: 2px;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tmargin-top: 7px;\n}\n\n.eXtremeTable .filter {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .filter td {\n\tpadding: 1px;\n}\n\n.eXtremeTable .title {\n\tcolor: #444444;\n\tfont-weight: bold;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 15px;\n\tvertical-align: middle;\n}\n\n.eXtremeTable .titleRow {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .titleRow td {\n\tborder-bottom: 1px solid #308dbb;\n\tpadding-top: 2px;\n\tpadding-bottom: 2px;\n\tvertical-align: middle;\n\ttext-align: center;\n}\n\n.eXtremeTable .titleRow span {\n\tcolor: #444444;\n\tfont-weight: bold;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .filter input {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\twidth: 100%;\n}\n\n.eXtremeTable .filter select {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: solid 1px #EEE;\n\twidth: 100%;\n}\n\n.eXtremeTable .tableHeader {\n\tbackground:#daf2ef;\n\tfilter:progid:DXImageTransform.Microsoft.gradient(enabled='ture',startColorstr=#effaf9, endColorstr='#daf2ef');\n\tborder-top:1px solid #b7dad6;\n    border-bottom:1px solid #c1e1dd;\n\tcolor: #00554a;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tfont-weight: bold;\n\ttext-align: left;\n    padding:6px;\n\tmargin: 0px;\n}\n\n.eXtremeTable .tableHeader input{\n\tborder:0;\n}\n\n.eXtremeTable .tableHeaderSort {\n\tbackground-color: #3a95c2;\n\tcolor: white;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tfont-weight: bold;\n\ttext-align: left;\n\tpadding-right: 3px;\n\tpadding-left: 3px;\n\tpadding-top: 4px;\n\tpadding-bottom: 4px;\n\tborder-right-style: solid;\n\tborder-right-width: 1px;\n\tborder-color: white;\n}\n\n.eXtremeTable .odd a, .eXtremeTable .even a, .eXtremeTable .odd a:hover, .eXtremeTable .even a:hover, .eXtremeTable .odd a:VISITED, .eXtremeTable .even a:VISITED{\n\tcolor: #333;\n\tfont-size: 9pt;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\ttext-decoration: none;\n}\n\n.eXtremeTable .odd td, .eXtremeTable .even td {\n\tpadding-top: 6px;\n\tpadding-right: 3px;\n\tpadding-bottom: 4px;\n\tpadding-left: 3px;\n\tvertical-align: middle;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\t\n\tborder-bottom:1px solid #c1e1dd;\n}\n.eXtremeTable .odd input{\n    border:0\n\t}\n.eXtremeTable .even input{\n    border:0\n\t}\n\n.eXtremeTable .odd {\n\tbackground-color: #FFFFFF;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .even {\n  \tbackground-color: #f0fcfa;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .highlight td {\n\tcolor: black;\n\tfont-size: 9pt;\n\tpadding-top: 6px;\n\tpadding-right: 3px;\n\tpadding-bottom: 4px;\n\tpadding-left: 3px;\n\tvertical-align: middle;\n\tbackground-color: #e1f1ef;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.eXtremeTable .highlight input{\n    border:0\n\t}\n\n.eXtremeTable .highlight a, .eXtremeTable .highlight a, .eXtremeTable .highlight A:HOVER, .eXtremeTable .highlight A:HOVER, .eXtremeTable .highlight A:VISITED {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tcolor: black;\n\tfont-size: 9pt;\n\ttext-decoration: none;\n}\n\n.eXtremeTable .compactToolbar {\n\tbackground-color: #f0fcfa;\n}\n.eXtremeTable .compactToolbar td{\n\tbackground:none;\n\t}\n.eXtremeTable .toolbar {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tborder: 1px solid #c1e1dd;\n}\n\n.eXtremeTable .toolbar td {\n\tcolor: #444444;\n\tpadding: 0px 3px 0px 3px;\n\ttext-align:center;\n}\n\n.eXtremeTable .separator {\n\twidth: 7px;\n}\n\n.eXtremeTable .statusBar {\n\tbackground-color: #f0fcfa;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 9pt;\n\tpadding:5px;\n\n}\n\n.eXtremeTable .filterButtons {\n\tbackground-color: #F4F4F4;\n\ttext-align: right;\n}\n\n.eXtremeTable .title span {\n\tmargin-left: 7px;\n}\n\n.eXtremeTable .formButtons {\n\tdisplay: block;\n\tmargin-top: 10px;\n\tmargin-left: 5px;\n}\n\n.eXtremeTable .formButton {\n\tcursor: pointer;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size:9pt;\n\tfont-weight: bold;\n\tbackground-color: #308dbb;\n\tcolor: white;\n\tmargin-top: 5px;\n\tborder: outset 1px #333;\n\tvertical-align: middle;\n}\n\n.eXtremeTable .calcRow {\n\tbackground-color: #F4F4F4;\n}\n\n.eXtremeTable .calcTitle {\n\tbackground-color: #F4F4F4;\n\tcolor: black;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-weight: bold;\n\tfont-size: 9pt;\n}\n\n.eXtremeTable .calcResult {\n\tbackground-color: #F4F4F4;\n\tcolor: black;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n}\n\n\n.eXtremeTable .nameWidth {\n\twidth: 80px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/extreme/extremesite.css",
    "content": "html, body {\n\tmargin:0;\n\tpadding:0;\n\theight:100%;\n\tborder:none\n}\n\nimg {\n\tborder:0;\t\n}\n\na {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\tcolor:black;\n}\n\npre {\n\tfont: 12px verdana, arial, helvetica, sans-serif;\n    padding: 5px;\n    border-style: solid;\n    border-width: 1px;\n    border-color: #CCCCCC;\n    background-color: #F4F4F4;\n}\n\nh4 h3 {\n\tcolor: #e75a08;\n}\n   \n#bodyMenu {\n\twidth: 160px;\n\tvertical-align:top;\n}\n\n#bodyContent {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\tpadding:10px;\n\tvertical-align:top;\n}\n\n#header {\n\tdisplay:block;\n\theight:75px;\n\twidth:100%;\n\tborder: 0;\n}\n\n#email {\n\tdisplay: block;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px; \n\ttext-align: center;\n\twidth: 100%;\n\tmargin-top: 20px;\n}\n\n#sidelinks a {\n\tdisplay: block;\n\tmargin: 0 3px 0 0;\n\tpadding: 1px 10px 1px 5px;\n\tfont: bold 12px arial, verdana, sans-serif;\n\ttext-decoration: none;\n\tborder-right: 1px solid #b7bcc3;\n\tcolor: rgb(55%,55%,60%);\n\tbackground-color: transparent;\n}\n\n#sidelinks a:visited {\n\tcolor: rgb(55%,55%,60%);\n}\n\n#sidelinks a:hover {\n\tbackground-color: #308dbb;\n\tcolor: #fff;\n}\n\t\t\n#sidelinks h4 {\n\tbackground-color: transparent;\n\tcolor: #086c9f;\n\tmargin: 0 3px 0 0;\n\tpadding: 1em 0 0;\n\tfont: bold 100% Arial, Verdana, sans-serif;\n\tborder-right: 1px solid #b7bcc3;\n\tborder-bottom: 2px solid #b7bcc3;\n}\n\n.button {\n\tcursor: pointer;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size:12px;\n\tfont-weight: bold;\n\tbackground-color: #308dbb;\n\tcolor: white;\n\tmargin-top: 5px;\n\tborder: outset 1px #333;\n\tvertical-align: middle;\n}\n\n#google {\n\tmargin-top: 20px;\n\tmargin-bottom: 5px;\n}\n\n#google input {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px;\n}\n\n#google span {\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tfont-size: 12px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/home.css",
    "content": "﻿body{ font-family:'微软雅黑';}\n/*主体*/\n.article{ float:left; margin-top:6px; width:100%;}\n.article:first-child{ margin-top:0;}\n.half{ width:50%;*width: 49.999%;}\n.article .wrap-l{ margin-right:3px;}\n.article .wrap-r{ margin-left:3px;}\n\n/*标题*/\n.article .title{ position:relative; line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.article .title h2{ float:left; margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n.article .title h2.title-list{ top:-1px; left:-1px; z-index:1; position:absolute; background:none; margin-left:0; padding:0;}\n.article .title h2 ul{}\n.article .title h2 ul li{ width:98px;  border-left:1px solid transparent; border-right:1px solid transparent;float:left; padding-left:8px;}\n.article .title h2 ul li a{ display:block;line-height:35px; padding-left:22px; color:#000; font-size:14px; font-weight:normal;}\n.article .title h2 ul li.current{ border-left:1px solid #c1d3de; border-right:1px solid #c1d3de; background:url(../images/titlebg01.png) repeat-x;}\n.article .title h2 ul li.current a{ background:url(../images/titleico.png) no-repeat left center; font-weight:bold;}\n.article .title .more{ font-size:12px; float:right; margin-right:12px; color:#000; width:33px; background:url(../images/more.png) no-repeat right center;}\n.article .title .more:hover{ text-decoration:underline;}\n\n/*内容*/\n.article .content{ border:1px solid #c1d3de; border-top:none;}\n.article .content .toollist li{ margin:20px 0 12px 42px; float:left; width:52px; text-align:center;}\n.article .content .toollist li:first-child{ margin-left:33px;}\n.article .content .toollist li a.img{ display:block; width:48px; height:48px;}\n.article .content .toollist li p a{ display:block; line-height:24px; font-size:13px; color:#000;}\n.article .content .toollist li.add-btn{ height:72px; margin-left:22px; text-align:center; cursor:pointer;}\n.article .content .toollist li.add-btn img{ margin-top:18px;}\n\n/*通知公告*/\n.notice .content, .matter .content{ padding-top:11px; height:138px;}\n.notice .content .notice-list li{ line-height:25px;}\n.notice .content .notice-list li .notice-title{ float:left; margin-left:14px; padding-left:17px; color:#000000; font-size:12px; background:url(../images/listico.png) no-repeat left center;}\n.notice .content .notice-list li .notice-title:hover{ text-decoration:underline;}\n.notice .content .notice-list li .notice-time{ float:right; margin-right:16px; color:#969696;}\n\n/*待办事项/已办事项*/\n.matter .content .matter-content{ display:none;}\n.matter .content .current{ display:block;}\n.matter .content .matter-content .today{ float:left; margin:6px 25px 0 17px; width:110px; background:url(../images/date.png) no-repeat;}\n.matter .content .matter-content .today .year{ line-height:33px; font-size:13px; color:#ffffff; text-align:center;}\n.matter .content .matter-content .today .date{ text-align:center;line-height:82px; color:#e22f1d; font-size:48px;}\n.matter .content .matter-content .matter-list li{ line-height:25px;}\n.matter .content .matter-content .matter-list li .matter-time{ float:left; padding-left:16px; width:36px; background:url(../images/listico.png) no-repeat left center; color:#969696;}\n.matter .content .matter-content .matter-list li .matter-title{ float:left; margin-left:18px; color:#000;}\n.matter .content .matter-content .matter-list li .matter-title:hover{ text-decoration:underline;}\n\n/*领导值岗*/\n.duty .content{ padding:8px 8px 0; height:190px;}\n.duty .content table{ width:100%;}\n.duty .content table tr{ line-height:30px;}\n.duty .content table thead th{ font-weight:bold;}\n.duty .content table .date{ width:55px; text-align:center;}\n.duty .content table td.week{ width:82px; text-align:center;}\n.duty .content table th.week{ padding-left:24px;}\n.duty .content table .leader{ width:54px; padding-left:16px;}\n.duty .content table .contact{ width:120px; padding-left:42px;}\n.duty .content table .remark{ padding-left:33px; width:76px;}\n\n/*邮件*/\n.email .content{ height:198px;}\n.email .content table{ width:100%;}\n.email .content table thead tr{ line-height:24px; background:#f1f8fc; border-top:1px solid #fff; border-bottom:1px solid #d1e1ea;}\n.email .content table thead tr th{ border-left:1px solid #fff; border-right:1px solid #c3d4de;}\n.email .content table thead tr th:first-child{ border-left:none;}\n.email .content table thead tr th.last-item{ border-right:none;}\n.email .content table thead tr th.icon{ width:27px;}\n.email .content table thead tr th.sender{ padding-left:9px; width:65px;}\n.email .content table thead tr th.subject{ padding-left:5px; width:278px;}\n.email .content table thead tr th.time{ padding-left:8px; width:96px;}\n.email .content table tbody{}\n.email .content table tbody tr{}\n.email .content table tbody tr.tody td{ border-bottom:none;}\n.email .content table tbody tr.tody td .td-wrap{ margin-right:6px; padding-top:8px; border-bottom:1px solid #c9d7df; line-height:22px;}\n.email .content table tbody tr.tody td .td-wrap em{ margin-left:5px; font-weight:bold;}\n.email .content table tbody tr.tody td .td-wrap a{ color:#0d6ba1;}\n.email .content table tbody tr td{ height:24px;line-height:24px;}\n.email .content table tbody tr td .td-wrap{border-bottom:1px dotted #b9ccd6;}\n.email .content table tbody tr td:first-child .td-wrap{ margin-left:6px; }\n.email .content table tbody tr td.time .td-wrap{ margin-right:6px;}\n.email .content table tbody tr td.icon .td-wrap{ height:24px; background:url(../images/rmail.png) no-repeat center center;}\n.email .content table tbody tr.open td.icon .td-wrap{height:24px; background:url(../images/rmail1.png) no-repeat center center;}\n.email .content table tbody tr td.sender .td-wrap{ margin-left:9px;}\n.email .content table tbody tr td.subject .td-wrap{ margin-left:4px;}\n.email .content table tbody tr td.subject .td-wrap a{ color:#000;}\n.email .content table tbody tr td.subject .td-wrap a:hover{ text-decoration:underline;}\n.email .content table tbody tr td.time .td-wrap{ margin-left:10px; color:#969696;}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/index.css",
    "content": "﻿html{*overflow:auto;min-width: 1020px;}\nbody{ font-family:'微软雅黑';background:#2a83cf;}\n\n/*页面头部*/\n#hd{  height:74px;background:url(../images/topbg.png) repeat-x;}\n#hd .hd-wrap{ position:relative;height:74px; background:url(../images/topline.png) no-repeat left bottom;}\n#hd .hd-wrap .top-light{ position:absolute; width:346px; height:74px; background:url(../images/toplight.png); top:0; left:0;}\nh1{ float:left; margin:14px 0 0 24px; width:246px; height:54px; background:url(../images/logo.png);position:relative;top:1;}\n.login-info{ float:left; margin:38px 0 0 23px; height:18px;}\n.login-info .welcome{ float:left; padding-left:20px; width:120px; height:18px; line-height:18px; background:url(../images/topuser.png) no-repeat left bottom; font-size:14px; color:#fff;}\n.login-info .welcome span{ float:left;}\n.login-info .welcome .user-name{ float:left; color:#fff;}\n.login-info .login-msg{ float:left; margin-left:22px;}\n.login-info .login-msg a{ float:left; height:18px; line-height:18px;}\n.login-info .login-msg a.msg-txt{ float:left; padding-left:20px; width:28px; background:url(../images/topmail.png) no-repeat left center; color:#fff; font-size:14px;}\n.login-info .login-msg a.msg-num{ float:left; width:16px; height:9px; margin:6px 0 0 4px; background:url(../images/countbg.png); color:#fff; line-height:9px; font-size:9px; text-align: center;}\n.toolbar{ float:right; margin:20px 14px 0 0;}\n.toolbar a{ float:left; height:42px; line-height:42px;}\n.toolbar a.home-btn{ width:40px; padding-left:46px; background:url(../images/home.png) no-repeat left top; color:#fff; font-size:14px;}\n.toolbar a.quit-btn{ width:39px; background:url(../images/exit.png) no-repeat left top;}\n\n/*页面主体*/\n#bd{ padding-top:6px; margin:0 4px; background:#fff url(../images/centertopbg.png) repeat-x left top;}\n#bd .wrap{ padding-left:187px; padding-bottom:6px; padding-right:6px; background:url(../images/centerbottombg.png) repeat-x left bottom;}\n\n/*左侧栏导航*/\n.sidebar{ height:100%; float:left; margin-left:-181px; width:175px; overflow-y:auto;}\n.sidebar h2{  background:url(../images/lefttopbg.png) repeat-x; border-radius:2px 2px 0 0; }\n.sidebar h2 p{ margin-left:15px;padding-left:25px; line-height:35px;color:#fff; font-size:14px; font-weight:bold; background:url(../images/icon0.png) no-repeat left center;}\n\n/*主导航*/\n.sidebar .nav{ border:1px solid #bdd0db; border-top:none; background:#f1f8fc;}\n.sidebar .nav>li{ line-height:40px; border-bottom:1px solid #dbe9f1; cursor:pointer;}\n.sidebar .nav>li.current .nav-header{ background:#6ec673;   border-color:#72b877;}\n.sidebar .nav>li.current .nav-header span{color:#fff;}\n.sidebar .nav>li .nav-header{ padding-right:14px;}\n.sidebar .nav>li .nav-header a{ display:block; margin-left:8px; padding-left:32px; color:#000; font-size:13px;}\n.sidebar .nav>li .nav-header a span{ float:left;}\n.sidebar .nav>li .nav-header a i{ float:right; width:12px; height:40px; background:url(../images/leftjt01.png) no-repeat center center;}\n.sidebar .nav>li.current .nav-header a i{  background:url(../images/leftjt03.png) no-repeat center center;}\n.sidebar .nav>li.current.hasChild .nav-header a i{  background:url(../images/leftjt02.png) no-repeat center center;}\n.sidebar .nav>li.office .nav-header a{ background:url(../images/ico01.png) no-repeat left center;}\n.sidebar .nav>li.gongwen .nav-header a{ background:url(../images/ico02.png) no-repeat left center;}\n.sidebar .nav>li.nav-info .nav-header a{ background:url(../images/ico03.png) no-repeat left center;}\n.sidebar .nav>li.konwledge .nav-header a{ background:url(../images/ico04.png) no-repeat left center;}\n.sidebar .nav>li.agency .nav-header a{ background:url(../images/ico05.png) no-repeat left center;}\n.sidebar .nav>li.email .nav-header a{ background:url(../images/ico06.png) no-repeat left center;}\n.sidebar .nav>li.system .nav-header a{ background:url(../images/ico07.png) no-repeat left center;}\n\n/*子导航*/\n.sidebar .nav>li .subnav{ display:none; padding:6px 0 11px 0;}\n.sidebar .nav>li.current .subnav{ display:none;}\n.sidebar .nav>li.current.hasChild .subnav{ display:block;}\n.sidebar .nav>li .subnav li{ line-height:28px; margin-left:30px; padding-left:10px; background:url(../images/leftjt04.png) no-repeat left center;}\n.sidebar .nav>li .subnav li a{ color:#000; font-size:12px;}\n\n\n\n.content{ float:left; width:100%; overflow:auto;}\n\n/*页面底部*/\n#ft{ height:25px; line-height:22px; background:url(../images/footbg.png) repeat-x;}\n#ft span{  color:#08496e; }\n#ft em{ color:#d3eaf6;}\n.ft-left{ float:left;}\n.ft-left span{margin-left:11px; padding-left:19px;background:url(../images/foot01.png) no-repeat left center;}\n.ft-left em{ margin-left:4px;}\n.ft-right{ float:right; margin:0 11px 0 3px; padding-right:10px; background:url(../images/foot02.png) no-repeat right center;}\n\n/*弹窗内容样式*/\n.dialog-content .buttons{margin-top:30px;}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/info-mgt.css",
    "content": "body{ font-family:'微软雅黑';}\n.title{ line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.title h2{ margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n\n/*查询条件*/\n.query{ padding:11px 0 18px 0; border:1px solid #c1d3de; border-top:none; overflow:visible;}\n.query-conditions{ overflow:visible;}\n.query .conditions{ overflow:visible; float:left; line-height:30px; width:380px; margin:6px 63px 0 25px; }\n.query .conditions label{ float:left; width:72px; color:#000; }\n\n.select-title,input{height:28px;line-height:28px\\0;*line-height:28px;}\n/*流程名称*/\n.query .name .select-wrap{ float:left; position:relative;}\n.query .name .select-wrap .select-title{width:223px;padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.query .name .select-wrap .select-title span{ float:left;}\n.query .name .select-wrap .select-title .icon{ float:right; margin-right:3px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n.query .name .select-wrap ul{ z-index:2; display:none; background:#fff;position:absolute; left:0; top:30px;  width:243px;}\n.query .name .select-wrap ul li{padding-left:10px; line-height:28px; cursor:pointer;}\n.query .name .select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}\n\n/*操作时间*/\n.query .operate-time .select-wrap{ float:left; position:relative;}\n.query .operate-time .select-wrap .select-title{width:100px; height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.query .operate-time .select-wrap .select-title span{ float:left;}\n.query .operate-time .select-wrap .select-title .icon{ float:right; margin-right:0px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n.query .operate-time .select-wrap ul{ display:none; background:#fff;position:absolute; left:0; top:30px;  width:120px;}\n.query .operate-time .select-wrap ul li{ padding-left:10px; line-height:28px; cursor:pointer;}\n.query .operate-time .select-wrap ul li:hover{ background:url(../images/formbtnbg.png) repeat-x;}\n.query .operate-time .input-box{ float:left; margin-left:5px;}\n.query .operate-time .input-box input{ float:left; width:44px;height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .operate-time .input-box span{ float:left; margin-left:9px;}\n\n/*时间*/\n.query .time .time-select{ float:left; position:relative;}\n.query .time .time-select input{ padding:0 6px 0 8px; width:102px; height:28px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .time .time-select span{ float:left; color:#000;}\n.query .time .time-select .icon{ position:absolute; right:6px; top:1px; width:16px; height:28px; background:url(../images/dateico.png) no-repeat center center; cursor:pointer;}\n.query .time .line{ float:left; margin:0 2px;}\n\n/*人员*/\n.query .staff input{float:left; width:173px; padding: 0 10px;height:28px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.query .staff .staff-select{ float:left; margin-left:7px; width:43px; height:28px; border:1px solid #c5d6e0; background:url(../images/formbtnbg.png) repeat-x; text-align:center; color:#000;}\n\n/*查询按钮*/\n.query-btn{ margin:15px 0 0 97px;}\n.query-btn a{ display:block; float:left; line-height:33px; text-align:center; border-radius:2px;}\n.query-btn a.confirm{ width:88px;color:#fff; background:#6ab96e; font-size:14px;}\n.query-btn a.clear{ margin-left:7px; width:98px; border:1px solid #c1d3de; background:url(../images/righttitlebig.png) repeat-x; color:#000; font-size:14px;height:31px;line-height: 31px;}\n\n/*表格操作按钮*/\n.table-operate{ padding-left:15px; height:37px; line-height:37px; background:url(../images/toolbarbg.png) repeat-x; border:1px solid #c1d3de; border-top:none;}\n.table-operate a{ float:left; font-family:'宋体'; width:45px; text-align:right; color:#000; margin-right:20px;}\n.table-operate a.add{ background:url(../images/addico.png) no-repeat left 9px;}\n.table-operate a.del{ background:url(../images/delico.png) no-repeat left 9px;}\n.table-operate a.edit{ background:url(../images/edtico.png) no-repeat left 9px;}\n.table-operate a.count{ background:url(../images/tjico.png) no-repeat left 9px;}\n.table-operate a.check{ background:url(../images/bookico.png) no-repeat left 9px;}\n\n/*表格*/\ntable{ width:100%;  border:1px solid #c1d3de; border-top:none;}\nthead tr th{ height:35px; line-height:35px; border-bottom:1px solid #c1d3de; background:url(../images/tablelistbg.png) repeat-x; font-weight:bold;}\ntbody tr td{ border-left:1px dotted #c7c7c7; line-height:30px;}\ntbody tr:first-child td{ padding-top:2px;}\ntbody tr td:first-child{ border-left:none;}\ntable tr .num{ width:63px; text-align: center;}\ntable tr .name{ width:118px; padding-left:17px;}\ntable tr .process{ width:142px; padding-left:13px;}\ntable tr .node{ width:162px; padding-left:13px;}\ntable tr .time{ width:218px; padding-left:13px;}\ntable tr .operate{ width:219px; padding-left:15px;}\ntable tr .operate a{ color:#2c7bbc;}\ntable tr .operate a:hover{ text-decoration:underline;}\n\n\n/*分页*/\n.pagination{ margin-top:10px;padding:0 10px;}\n.pagination .pxofy{float:left;color:#6c6c6c;}\n.pagination .pagin-list{float:right;}\n.pagination .goto{float:right;margin-left:10px;}\n.pagination .goto .text{padding:0;}\n.pagination .goto input[type=text]{float:left;width:25px;height:22px;border:1px solid #8EB2D2;outline:none; text-align:center;}\n\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/info-reg.css",
    "content": "body{ font-family:'微软雅黑';}\n.title{ line-height:33px; background:url(../images/righttitlebig.png) repeat-x; border:1px solid #c1d3de; overflow:visible;}\n.title h2{ margin-left:7px; padding-left:22px; font-weight:bold; font-size:14px; font-family:'宋体'; color:#000000; background:url(../images/titleico.png) no-repeat left center;}\n\n/*表单主体*/\n.main{ padding-top:21px; border:1px solid #c1d3de; border-top:none; border-bottom:none;}\n.main p{ margin-top:10px; padding-left:31px; line-height:30px;}\n.main p label{ float:left; width:82px; text-align:left;}\n.main p input{ float:left;}\n.main p input[type=\"text\"]{ width:240px; height:28px;line-height:28px\\0;*line-height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x;}\n.main p.long-input input[type=\"text\"]{ width:472px;}\n\n.main p span{ float:left; margin-left:15px; color:#959595;}\n.main p span em{ color:#f81212;}\n.main p textarea{ width:472px; padding:10px; height:84px; resize:none; outline:none; border:1px solid #c5d6e0; background:url(../images/inputbg.png) repeat-x left top;}\n.main p textarea{overflow:auto;}\n.main .select{ overflow:visible; margin-top:10px; padding-left:31px; line-height:30px;}\n.main .select label{float:left; width:82px; text-align:left;}\n.main .select .select-wrap{ float:left; position:relative;}\n.main .select .select-wrap .select-title{width:240px; height:28px; padding:0 10px; border:1px solid #c5d6e0; outline:none; background:url(../images/inputbg.png) repeat-x; cursor:pointer;}\n.main .select .select-wrap .select-title span{ float:left;}\n.main .select .select-wrap .select-title .icon{ float:right; margin-right:3px; width:9px; height:28px; background:url(../images/selectxl.png) no-repeat center center;} \n\n\n/*表单按钮*/\n.btn{ padding:13px 0 53px 113px; border:1px solid #c1d3de; border-top:none;}\n.btn a{ float:left; margin-right:7px; text-align:center; border:none; border-radius:2px; font-size:14px;}\n.btn a.confirm{ width:88px; height:33px; line-height:33px; background:#68b86c; color:#fff; }\n.btn a.clear{ width:98px; height:31px; line-height:31px; color:#000; border:1px solid #c1d3de; background:url(../images/formbtnbg01.png) repeat-x;}\n.btn1{ padding:20px 0 53px 30px; border:1px solid #c1d3de; border-top:none;}\n.btn1 a{ float:left; margin-right:7px; text-align:center; border:none; border-radius:2px; font-size:14px;}\n.btn1 a.confirm{ width:88px; height:33px; line-height:33px; background:#68b86c; color:#fff; }\n.btn1 a.clear{ width:98px; height:31px; line-height:31px; color:#000; border:1px solid #c1d3de; background:url(../images/formbtnbg01.png) repeat-x;}\n\n.main .newstyle{border-bottom:dotted 1px #ccc;}\n.main .newstyle label{font-weight:bold; margin-right:60px; width:200px;}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/jquery.dialog.css",
    "content": "\n.ui-dialog-panel{z-index:10000;position:absolute;left:50%;top:50%;/*padding:4px;*/border-radius:5px;}\n.ui-dialog{padding-top:40px;/*border:1px solid #BBBBBB;*/border-radius:1px;background:#fff;}\n/***** 标题区域 *****/\n.ui-dialog-hd{position:absolute;left:0;top:0;right:0;height:41px;color:#FFFFFF;font-size:16px; background:url(../images/topcenter.png);}\n.ui-dialog-hd .ui-dialog-close{position:absolute;top:10px;right:0;color:#fff;font-size:16px;}\n\n.ui-dialog-hd .ui-dialog-close i{float:left;width:20px;height:20px; background:url(../images/close3.png);}\n.ui-dialog-hd .ui-dialog-close:hover i{background:url(../images/close4.png);}\n\n/*** 标题文字区域 ***/\n.ui-dialog-hd h6{height:40px;left:0;right:35px;text-indent:18px;line-height:40px;*line-height:40px;color:#fff;font-size:14px;}\n/***** 弹窗按钮  *****/\n.ui-dialog-ft{position:absolute;bottom:5px;left:5px;right:5px;height:39px;text-align:right;border-top:1px solid #F0F0F0;background:#F9F9F9;}\n.ui-dialog-ft button{margin:6px 15px 0 -10px;}\n\n/***** 特殊信息弹出框 *****/\n.ui-dialog-icon{float:left;width:78px;height:78px;margin:25px 20px 25px 38px; background-image:url(../images/dico.png);}\n/*.ui-dialog-confirm .ui-dialog-icon{background-position:0 0;}\n.ui-dialog-warning .ui-dialog-icon{background-position:-48px 0;}\n.ui-dialog-success .ui-dialog-icon{background-position:-96px 0;}\n.ui-dialog-error .ui-dialog-icon{background-position:-144px 0;}*/\n\n/*** 特殊信息显示 ***/\n.ui-dialog-text{float:left;display:table-cell;vertical-align:middle;width:250px;height:100px;}\n.ui-dialog-text .dialog-text,.ui-dialog-text .patch{display:inline-block;vertical-align:middle;font-size:16px;color:#4d4d4d;font-weight:bold;}\n.ui-dialog-text .dialog-content{margin:40px 0 10px 0;font-size:18px;}\n.ui-dialog-text .tips{color:#8f8f8f;font-size:13px;}\n.ui-dialog-text .patch{width:0;height:100%;}\n\n/***** 弹窗里有表单 *****/\n.ui-dialog-panel .formDialog{display:none;padding:20px 15px;}\n.ui-dialog-panel .formDialog input[type=text]{width:220px;}\n\n.dialog-hd-lc{position:absolute;width:15px;height:41px; background:url(../images/lefttop.png);left:-15px;top:0;}\n.dialog-hd-rc{position:absolute;width:15px;height:41px; background:url(../images/righttop.png);right:-15px;top:0;}\n\n.ui-dialog-leftYY{position:absolute;width:15px;top:41px;bottom:15px; left:-15px; background:url(../images/centerleft.png);}\n.ui-dialog-rightYY{position:absolute;width:15px;top:41px;bottom:15px; right:-15px; background:url(../images/centerright.png);}\n.ui-dialog-bottomCenter{position:absolute;height:19px;bottom:-13px;left:-11px;right:-11px;background:url(../images/downcenter.png);}\n.ui-dialog-bottomLeft{position:absolute;width:15px;height:19px;bottom:-4px;left:-15px;background:url(../images/centerleft.png);}\n.ui-dialog-bottomRight{position:absolute;width:15px;height:19px;bottom:-4px;right:-15px;background:url(../images/centerright.png);}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/jquery.searchableSelect.css",
    "content": "/*\nAuthor: David Qin\nE-mail: david@hereapp.cn\nDate: 2014-11-05\n*/\n\n.searchable-select-hide {\n  display: none;\n}\n\n.searchable-select {\n  display: inline-block;\n  min-width: 200px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #555;\n  vertical-align: middle;\n  position: relative;\n  outline: none;\n}\n\n.searchable-select-holder{\n  padding: 6px;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  min-height: 30px;\n  box-sizing: border-box;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\n  -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n}\n\n.searchable-select-caret {\n  position: absolute;\n  width: 0;\n  height: 0;\n  box-sizing: border-box;\n  border-color: black transparent transparent transparent;\n  top: 0;\n  bottom: 0;\n  border-style: solid;\n  border-width: 5px;\n  margin: auto;\n  right: 10px;\n}\n\n.searchable-select-dropdown {\n  position: absolute;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border-bottom-left-radius: 4px;\n  border-bottom-right-radius: 4px;\n  padding: 4px;\n  border-top: none;\n  top: 28px;\n  left: 0;\n  right: 0;\n}\n\n.searchable-select-input {\n  margin-top: 5px;\n  border: 1px solid #ccc;\n  outline: none;\n  padding: 4px;\n  width: 100%;\n  box-sizing: border-box;\n  width: 100%;\n}\n\n.searchable-scroll {\n  margin-top: 4px;\n  position: relative;\n}\n\n.searchable-scroll.has-privious {\n  padding-top: 16px;\n}\n\n.searchable-scroll.has-next {\n  padding-bottom: 16px;\n}\n\n.searchable-has-privious {\n  top: 0;\n}\n\n.searchable-has-next {\n  bottom: 0;\n}\n\n.searchable-has-privious, .searchable-has-next {\n  height: 16px;\n  left: 0;\n  right: 0;\n  position: absolute;\n  text-align: center;\n  z-index: 10;\n  background-color: white;\n  line-height: 8px;\n  cursor: pointer;\n}\n\n.searchable-select-items {\n  max-height: 400px;\n  overflow-y: scroll;\n  position: relative;\n}\n\n.searchable-select-items::-webkit-scrollbar {\n  display: none;\n}\n\n.searchable-select-item {\n  padding: 5px 5px;\n  cursor: pointer;\n  min-height: 30px;\n  box-sizing: border-box;\n    transition: all 1s ease 0s;\n}\n\n.searchable-select-item.hover {\n\n  background: #555;\n  color: white;\n}\n\n.searchable-select-item.selected {\n  background: #28a4c9;\n  color: white;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/login.css",
    "content": "html{*overflow:auto;}\nbody{ font-family:'微软雅黑';background: #2074bb;}\n#container{ position:relative; background:url(../images/login_light.png) no-repeat center center;}\n\n#bd{}\n.login{ margin:0 auto; padding-top:15px; width:640px; height:405px; background:url(../images/login_pro.png);}\n.login .login-top{ margin:0 auto; width:590px; height:161px; background:url(../images/login_img.png);}\n.login .login-top h1{ height:161px; margin-left:27px; background:url(../images/login_logo.png) no-repeat left center;}\n.login .login-input{ margin-top:21px; padding-left:165px;}\n.login .login-input p{ margin-top:11px; line-height:39px;}\n.login .login-input p label{ float:left; text-align:right; width:51px; color:#000000; font-size:16px; }\n.login .login-input p input{ padding:0 0 0 49px; margin-left:16px; width:195px; height:39px;line-height:39px\\0; *line-height:39px; border:none; outline:none; }\n.login .login-input p.user input{ background:url(../images/login_user.png);}\n.login .login-input p.password input{ background:url(../images/login_password.png);}\n.login .login-btn{ margin-top:18px; padding-left:232px; line-height:38px;}\n.login .login-btn .btn{ float:left; width:117px; height:39px; background:url(../images/login_btn.png);  color:#fff; text-align:center; font-size:16px;font-family:'微软雅黑';}\n.login .login-btn .remember{ float:left; width:80px; position:relative; margin-left:22px;}\n.login .login-btn .remember em{ float:left; width:18px; height:38px; background:url(../images/login_check.png) no-repeat left center;}\n.login .login-btn .remember input{ position:absolute; height:16px; width:18px; top:11px; left:0; margin:0; opacity:0; filter:alpha(opacity=0); cursor:pointer;}\n.login .login-btn .remember label{ float:left; line-height:36px; margin-left:6px; color:#000000; font-size:14px; cursor:pointer;}\n.login .login-btn .remember input[type=\"checkbox\"]:checked ~ em,.login .login-btn .remember.checked em{ background:url(../images/check-select.png) no-repeat left center;}\n\n/*验证码*/\n.login1{ margin:0 auto; padding-top:15px; width:640px; height:460px; background:url(../images/login_pro1.png) no-repeat;}\n.login1 .login-top{ margin:0 auto; width:590px; height:161px; background:url(../images/login_img.png);}\n.login1 .login-top h1{ height:161px; margin-left:27px; background:url(../images/login_logo.png) no-repeat left center;}\n.login1 .login-input{ margin-top:21px; padding-left:165px;}\n.login1 .login-input p{ margin-top:11px; line-height:39px;}\n.login1 .login-input p label{ float:left; text-align:right; width:51px; color:#000000; font-size:16px; }\n.login1 .login-input p input{ padding:0 0 0 49px; margin-left:16px; width:195px; height:39px;line-height:39px\\0; *line-height:39px; border:none; outline:none; }\n.login1 .login-input p.user input{ background:url(../images/login_user.png);}\n.login1 .login-input p.password input{ background:url(../images/login_password.png);}\n.login1 .login-btn{ margin-top:18px; padding-left:232px; line-height:38px;}\n.login1 .login-btn .btn{ float:left; width:117px; height:39px; background:url(../images/login_btn.png);  color:#fff; text-align:center; font-size:16px;font-family:'微软雅黑';}\n.login1 .login-btn .remember{ float:left; width:80px; position:relative; margin-left:22px;}\n.login1 .login-btn .remember em{ float:left; width:18px; height:38px; background:url(../images/login_check.png) no-repeat left center;}\n.login1 .login-btn .remember input{ position:absolute; height:16px; width:18px; top:11px; left:0; margin:0; opacity:0; filter:alpha(opacity=0); cursor:pointer;}\n.login1 .login-btn .remember label{ float:left; line-height:36px; margin-left:6px; color:#000000; font-size:14px; cursor:pointer;}\n.login1 .login-btn .remember input[type=\"checkbox\"]:checked ~ em,.login .login-btn .remember.checked em{ background:url(../images/check-select.png) no-repeat left center;}\n.login1 .login-input p.yzm input{ background:url(../images/login_yzm.png);}\n.yzm{position:relative;}\n.yzm cite{position:absolute; right:176px; font-size:16px; color:#fff;}\n\n#ft{ position:absolute;left:0;right:0;bottom:40px; color:#10486b; text-align:center; z-index:2;}\n\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/reset.css",
    "content": "\n/* ------- This is the CSS Reset ------- */\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre, a, \nabbr, acronym, address, big, cite, code, del,\ndfn, em, img, ins, kbd, q, s, samp, small,\nstrike, strong, sub, sup, tt, var, u, i, center,\ndl, dt, dd, ol, ul, li, fieldset, form, label,\nlegend, table, caption, tbody, tfoot, thead, tr,\nth, td, article, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup, menu,\nnav, output, ruby, section, summary, time, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n\n/* ------- HTML5 display-role reset for older browsers ------- */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after, q:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/style.css",
    "content": "html, body{\n\tmargin:0;\n\tbackground:\t#fff;\n\tfont-family: 'Open Sans', sans-serif;\n}\nh4, h5, h6,\nh1, h2, h3 {\nmargin: 0;\n}\np{\n\tmargin:0;\n}\nul,label{\n\tmargin:0;\n\tpadding:0;\n}\ninput[type=\"button\"],input[type=\"submit\"]{\n\ttransition:0.5s all;\n\t-webkit-transition:0.5s all;\n\t-moz-transition:0.5s all;\n\t-o-transition:0.5s all;\n\t-ms-transition:0.5s all;\n}\nbody a{\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n\ttext-decoration:none;\n\n}\nbody a:hover{\n\ttext-decoration:none;\n}\n.copyrights{\n\ttext-indent:-9999px;\n\theight:0;\n\tline-height:0;\n\tfont-size:0;\n\toverflow:hidden;\n}\n/*-- header --*/\n.header {\n  background: #05969b;\n}\n.navbar {\n  margin-bottom: 0;\n}\n.navbar-nav {\n  float: right;\n  width: 65%;\n}\n.navbar-default {\n  background:none;\n  border-color: #012231;\n}\n.navbar-default .navbar-brand {\nfont-family: 'Alegreya', serif;\n\tcolor: #fff;\n\tfont-size:48px;\n\ttext-decoration: none;\n}\n.glyphicon-cutlery {\n  left: -10px;\n  top: 7px;\n}\n.navbar-default .navbar-collapse, .navbar-default .navbar-form {\n    padding: 0;\n}\n.navbar-default .navbar-brand:hover {\n\tcolor: #fff;\n\ttext-decoration: none;\n}\na.navbar-brand span {\n  color: #2FD828;\n  margin-left: 12px;\n}\n.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #2FD828;\n}\n.navbar-default .navbar-nav > li > a{\n  color: #fff;\n  font-size: 16px;\n}\n.navbar-nav > li > a {\n  padding-top: 25px;\n  padding-bottom: 25px;\n}\n.navbar-brand {\n    height: 0;\n    padding: 0;\n\t}\n.navbar{\n    border-radius: 0px; \n\tborder:none;\n}\n.navbar-default .navbar-brand {\n    color: #fff;\n}\n.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus ,.navbar-default .navbar-nav > li > a.active{\n    color:#2FD828;\n\t}\n\n/*--search--*/\n.search-box{\n\tfloat:right;\n}\n.sb-search {\n\tposition: absolute;\n\tright:0px;\n\twidth: 0%;\n\tmin-width:42px;\n\tmargin-top:14px;\n\theight:40px;\n\tfloat: right;\n\toverflow: hidden;\n\t-webkit-transition: width 0.3s;\n\t-moz-transition: width 0.3s;\n\ttransition: width 0.3s;\n\t-webkit-backface-visibility: hidden;\n\tz-index: 999;\n}\n.sb-search-input {\n\tposition: absolute;\n\ttop: 0;\n\tright: 3px;\n\tborder: none;\n\toutline: none;\n\tbackground:#fc3a3a;\n\twidth: 64%;\n\theight:40px;\n\tmargin: 0;\n\tz-index: 10;\n\tpadding: 5px 15px;\n\tfont-size: 15px;\n\tcolor: #ffffff;\n\tborder-radius:50px;\n}\n.sb-search-input::-webkit-input-placeholder {\n\tcolor: #ffffff;\n}\n.sb-search-input:-moz-placeholder {\n\tcolor: #ffffff;\n}\n.sb-search-input::-moz-placeholder {\n\tcolor: #efb480;\n}\n.sb-search-input:-ms-input-placeholder {\n\tcolor: #ffffff;\n}\n.sb-icon-search,.sb-search-submit  {\n\twidth:30px;\n\theight:40px;\n\tdisplay: block;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0%;\n\tpadding: 0;\n\tmargin: 0;\n\tline-height:71px;\n\ttext-align: center;\n\tcursor: pointer;\n}\n.sb-search-submit {\n\tbackground: url('../images/search.png') no-repeat -6px 10px;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\"; /* IE 8 */\n    filter: alpha(opacity=0); /* IE 5-7 */\n    color: transparent;\n\tborder: none;\n\toutline: none;\n\tz-index: -1;\n\t-webkit-appearance: none;\n}\n.sb-icon-search {\n    background:#fc3a3a url('../images/search.png') no-repeat 3px 10px;\n\tz-index: 90;\n\twidth: 40px;\n\theight: 40px;\n\tborder-radius: 50px;\n}\n/* Open state */\n.sb-search.sb-search-open,.no-js .sb-search {\n\twidth:72%;\n}\n.sb-search.sb-search-open .sb-icon-search,.no-js .sb-search .sb-icon-search {\n\tbackground:  url('../images/search.png') no-repeat 3px 10px;\n\tcolor: #fff;\n\tz-index: 11;\n}\n.sb-search.sb-search-open .sb-search-submit,.no-js .sb-search .sb-search-submit {\n\tz-index: 90;\n}\n/*--//search--*/\n/*-- banner --*/\n.banner{\nbackground: url(../images/banner.jpg) no-repeat 0px 0px;\nbackground-size:cover;\n-webkit-background-size: cover;\n-o-background-size: cover;\n-ms-background-size: cover;\n-moz-background-size: cover;\nmin-height: 700px;\n}\n.header .glyphicon-education {\n    top: 8px;\n}\n/*-- //banner --*/\n/* Overline From Center */\na.hvr-overline-from-center {\n  display: inline-block;\n  vertical-align: middle;\n  -webkit-transform: translateZ(0);\n  transform: translateZ(0);\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0);\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  -moz-osx-font-smoothing: grayscale;\n  position: relative;\n  overflow: hidden;\n}\na.hvr-overline-from-center:before {\n  content: \"\";\n  position: absolute;\n  z-index: -1;\n  left: 50%;\n  right: 50%;\n  bottom: 0;\n  background: #fc3a3a;\n  height: 3px;\n  -webkit-transition-property: left, right;\n  transition-property: left, right;\n  -webkit-transition-duration: 0.3s;\n  transition-duration: 0.3s;\n  -webkit-transition-timing-function: ease-out;\n  transition-timing-function: ease-out;\n}\na.hvr-overline-from-center:hover:before,a.hvr-overline-from-center:focus:before,a.hvr-overline-from-center:active:before {\n  left: 0;\n  right: 0;\n}\n/*-- Slider Part starts Here --*/\n#slider3,#slider4  {\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n  margin: 0 auto;\n}\n.rslides_tabs {\n  list-style: none;\n  padding: 0;\n  background: rgba(0,0,0,.25);\n  box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  -moz-box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.3), inset 0 0 5px rgba(0,0,0,1.0);\n  font-size: 18px;\n  list-style: none;\n  margin: 0 auto 50px;\n  max-width: 540px;\n  padding: 10px 0;\n  text-align: center;\n  width: 100%;\n}\n.rslides_tabs li {\n  display: inline;\n  margin-right: 1px;\n}\n.rslides_tabs a {\n  width: auto;\n  line-height: 20px;\n  padding: 9px 20px;\n  height: auto;\n  background: transparent;\n  display: inline;\n}\n.rslides_tabs li:first-child {\n  margin-left: 0;\n}\n.rslides_tabs .rslides_here a {\n  background: rgba(255,255,255,.1);\n  color: #fff;\n  font-weight: bold;\n}\n.events {\n  list-style: none;\n}\n.callbacks_container {\n  position: relative;\n  float: left;\n  width: 100%;\n}\n.callbacks {\n  position: relative;\n  list-style: none;\n  overflow: hidden;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n}\n.callbacks li {\n  position: absolute;\n  width: 100%;\n  left: 0;\n  top: 0;\n}\n.callbacks img {\n  position: relative;\n  z-index: 1;\n  height: auto;\n  border: 0;\n}\n.callbacks .caption {\n\tdisplay: block;\n\tposition: absolute;\n\tz-index: 2;\n\tfont-size: 20px;\n\ttext-shadow: none;\n\tcolor: #fff;\n\tleft: 0;\n\tright: 0;\n\tpadding: 10px 20px;\n\tmargin: 0;\n\tmax-width: none;\n\ttop: 10%;\n\ttext-align: center;\n}\n.callbacks_nav {\n  \tposition: absolute;\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\ttop: 61%;\n\tleft: 0;\n\topacity: 0.7;\n\tz-index: 3;\n\ttext-indent: -9999px;\n\toverflow: hidden;\n\ttext-decoration: none;\n\theight: 62px;\n\twidth: 45px;\n\tmargin-top: -65px;\n}\n.callbacks_nav:active {\n  opacity: 1.0;\n}\na.callbacks_nav.callbacks1_nav.prev {\n\tbackground: transparent url(\"../images/themes.png\") no-repeat 0px 0px;\n  left: -3.1%;\n}\n.callbacks_nav.next {\n\tbackground: transparent url(\"../images/themes.png\") no-repeat -46px 0px;\n  left: 100%;\n}\n#slider3-pager a,#slider4-pager a  {\n  display: inline-block;\n}\n#slider3-pager span,#slider4-pager span{\n}\n#slider3-pager span,#slider4-pager span{\n\twidth:100px;\n\theight:15px;\n\tbackground:#fff;\n\tdisplay:inline-block;\n\tborder-radius:30em;\n\topacity:0.6;\n}\n#slider3-pager .rslides_here a ,#slider4-pager .rslides_here a {\n  background: #FFF;\n  border-radius:30em;\n  opacity:1;\n}\n#slider3-pager a ,#slider4-pager a {\n  padding: 0;\n}\n#slider3-pager li, #slider4-pager li{\n\tdisplay:inline-block;\n}\n.rslides {\n  position: relative;\n  list-style: none;\n  overflow: hidden;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n}\n.rslides li {\n  -webkit-backface-visibility: hidden;\n  position: absolute;\n  display: none;\n  width: 100%;\n  left: 0;\n  top: 0;\n}\n.rslides li{\n  position: relative;\n  display: block;\n}\n\n.callbacks_tabs{\n\tlist-style: none;\n\tposition: absolute;\n\ttop: 141%;\n\tz-index: 999;\n\tleft: 46%;\n\tpadding: 0;\n\tmargin: 0;\n}\nul.callbacks_tabs.callbacks2_tabs {\ntop: 73%;\nleft:46%;\n}\n.slider-top{\n\ttext-align: center;\n\tpadding:10em 0;\n}\n.slider-top h1{\n\tfont-weight:700;\n\tfont-size:48px;\n\tcolor:#010101;\n}\n.slider-top p{\n\tfont-weight:400;\n\tfont-size:20px;\n\tpadding:1em 7em;\n\tcolor:#010101;\n}\n.slider-top ul.social-slide{\n\tdisplay:inline-flex;\n\tmargin: 0px;\n\tpadding: 0px;\n}\nul.social-slide li i{\n\twidth:70px;\n\theight:74px;\n\tbackground:url(../images/img-resources.png)no-repeat;\n\tdisplay: inline-block;\n\tmargin:0px 15px;\n}\nul.social-slide li i.win{\n\tbackground-position:-6px 0px;\n}\nul.social-slide li i.android{\n\tbackground-position:-110px 0px;\n}\nul.social-slide li i.mac{\n\tbackground-position:-215px 0px;\n}\n.callbacks_tabs li{\n  margin-left: 5px;\n\tdisplay: inline-block;\n}\n@media screen and (max-width: 600px) {\n  .callbacks_nav {\n    top: 47%;\n    }\n}\n\n.callbacks_tabs a{\n visibility: hidden;\n}\n.callbacks_tabs a:after {\n  content: \"\\f111\";\n  font-size:0;\n  font-family: FontAwesome;\n  visibility: visible;\n  display: block;\n    height: 28px;\n    width: 7px;\n    transform: rotate(221deg);\n  display:inline-block;\n  background: #2FD828;\n}\n.callbacks_here a:after{\n\tbackground: #fff;\t\n}\na.callbacks_nav.callbacks2_nav.prev {\nbackground: transparent url(\"../images/2.png\") no-repeat left top;\nwidth:23px;\nheight:23px;\n}\na.callbacks_nav.callbacks2_nav.next{\nbackground: transparent url(\"../images/2.png\") no-repeat -29px 0px;\nwidth:23px;\nheight:23px;\n}\na.callbacks_nav.callbacks2_nav.prev {\nleft: 86% !important;\ntop: 9%;\n}\na.callbacks_nav.callbacks2_nav.next {\nright: 0% !important;\ntop: 9%;\n}\n/*-- Slider part Ends Here --*/\n/*-- banner-info --*/\n.banner-info {\n    margin-top: 206px;\n}\n\n.banner-info h3{\nline-height: 1.4em;\ncolor: #fff;\nfont-family: 'Alegreya', serif;\nfont-size: 72px;\ntext-align: center;\n}\n/*-- //banner-info --*/\n.bottom-grid{\nposition:relative;\n}\n.banner-bottom{\npadding:80px 0;\nbackground:#eee;\n}\nh3.tittle,h2.tittle{\ntext-align:center;\nfont-size:32px;\nfont-family: 'Alegreya', serif;\ncolor:#fc3a3a;\nmargin-bottom:50px;\n\n}\n.bottom-text{\nbackground:#fff;\npadding: 52px 15px;\nborder-radius: 100%;\n-webkit-border-radius: 100%;\n-o-border-radius: 100%;\n-ms-border-radius: 100%;\n-moz-border-radius: 100%;\nborder: 2px solid transparent;\n}\n.bottom-text h3{\ntext-align:center;\nfont-size:20px;\nfont-weight:600;\ncolor:#646464;\n}\n.bottom-text p{\nmargin-top: 14px;\ntext-align:center;\nfont-size:14px;\ncolor:#757575;\nline-height:2em;\n}\n.bottom-grid span{\n    position: absolute;\n    font-size: 27px;\n    color: #646464;\n    background: #c2c2c2;\n    border-radius: 100%;\n    padding: 20px 20px;\n    top: -37px;\n    text-align: center;\n    left: 37%;\n}\n.bottom-grids {\n    margin-top: 90px;\n}\n.bottom-grid:hover div.bottom-text{\nborder:2px solid #2FD828;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.bottom-grid:hover div.bottom-text h3{\ncolor:#2FD828;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.bottom-grid:hover div.bottom-spa span{\nbackground:#2FD828 !important;\ncolor:#fff !important;\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.teachers{\npadding:80px 0;\nbackground: #393939;\n}\n.team-grid img {\nborder: 2px solid transparent;\nborder-radius: 100%;\n-webkit-border-radius: 100%;\n-o-border-radius: 100%;\n-ms-border-radius: 100%;\n-moz-border-radius: 100%;\n}\n.teach-head h3{\n    text-align: center;\n    font-size: 32px;\nfont-family: 'Alegreya', serif;\n    color: #fc3a3a;\n}\n.teach-head p{\n    text-align: center;\n\tfont-size:14px;\n\tcolor:#c2c2c2;\n\tline-height:1.8em;\n    width: 75%;\n    margin: 20px auto 0 auto;\n}\n.team-grids {\n    margin-top: 50px;\n}\n.team-img h3{\n    margin: 15px 0 8px 0;\n    text-align: center;\n    font-size: 20px;\n    font-weight: 600;\n    color: #2FD828;\n}\n.team-img h4 {\n    font-size: 16px;\n    color: #c2c2c2;\n}\n.team-img p {\n  display:none;\n  color: #c2c2c2;\n  font-size: 13px;\n  line-height: 1.8em;\n  margin-top: 7px;\n}\n.team-img ul{\nmargin-top:8px;\n}\n.team-img ul li{\nlist-style-type:none;\ndisplay:inline-block;\nmargin-left:5px;\n}\n.team-img ul li a{\nwidth:24px;\nheight:24px;\ndisplay:block;\n}\n.team-img ul li a.fb{\n background:url('../images/img-sp.png') no-repeat 0px 0px;\n}\n.team-img ul li a.fb:hover{\n background:url('../images/img-sp.png') no-repeat 0px -27px;\n}\n.team-img ul li a.twitt{\n background:url('../images/img-sp.png') no-repeat -26px 0px;\n}\n.team-img ul li a.twitt:hover{\n background:url('../images/img-sp.png') no-repeat -26px -27px;\n}\n.team-img ul li a.goog{\n background:url('../images/img-sp.png') no-repeat -52px 0px;\n}\n.team-img ul li a.goog:hover{\n background:url('../images/img-sp.png') no-repeat -52px -27px;\n}\n.team-img ul li a.drib{\n background:url('../images/img-sp.png') no-repeat -78px 0px;\n}\n.team-img ul li a.drib:hover{\n background:url('../images/img-sp.png') no-repeat -78px -27px;\n}\n.team-grid:hover div.team-img p{\ndisplay:block;\ntransition: 0.5s all;\n-webkit-transition: 0.5s all;\n-o-transition: 0.5s all;\n-moz-transition: 0.5s all;\n-ms-transition: 0.5s all;\n}\n.team-grid:hover div.team-img img{\nborder:2px solid #2FD828;\n}\n.features-left img{\nwidth:100%;\n}\n.about-grids{\nmargin-top:50px;\n}\n.features-right h4 {\n  margin: 0;\n  color: #2FD828;\n  font-size: 20px;\n  font-weight: 600;\n}\n.features-right p {\n  margin: 0;\n  color: #757575;\n  line-height: 2em;\n  font-size: 14px;\n}\n.features-right p:nth-child(2) {\n  margin: 19px 0;\n}\n.facilities{\n  padding: 80px 0;\n  background: #eee;\n}\n.features{\n  padding: 80px 0;\n}\n.view {\n  width: 31.5%;\n  height: 100%;\n   margin: 10px;\n   float: left;\n   border: 10px solid #fff;\n   overflow: hidden;\n   position: relative;\n   text-align: center;\n   -webkit-box-shadow: 1px 1px 2px #e6e6e6;\n   -moz-box-shadow: 1px 1px 2px #e6e6e6;\n   box-shadow: 1px 1px 2px #e6e6e6;\n   cursor: default;\n}\n.view .mask,.view .content {\n  width: 100%;\n  height: 100%;\n   position: absolute;\n   overflow: hidden;\n   top: 0;\n   left: 0;\n}\n.view img {\n   display: block;\n   position: relative;\n}\n.view-seventh img {\n   -webkit-transition: all 0.5s ease-out;\n   -moz-transition: all 0.5s ease-out;\n   -o-transition: all 0.5s ease-out;\n   -ms-transition: all 0.5s ease-out;\n   transition: all 0.5s ease-out;\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n   filter: alpha(opacity=100);\n   opacity: 1;\n}\n.view-seventh .mask {\n   background-color: #05969b;\n   -webkit-transform: rotate(0deg) scale(1);\n   -moz-transform: rotate(0deg) scale(1);\n   -o-transform: rotate(0deg) scale(1);\n   -ms-transform: rotate(0deg) scale(1);\n   transform: rotate(0deg) scale(1);\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n   filter: alpha(opacity=0);\n   opacity: 0;\n   -webkit-transition: all 0.3s ease-out;\n   -moz-transition: all 0.3s ease-out;\n   -o-transition: all 0.3s ease-out;\n   -ms-transition: all 0.3s ease-out;\n   transition: all 0.3s ease-out;\n}\n.view-seventh h2 {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh p {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh a.info {\n   -webkit-transform: translateY(-200px);\n   -moz-transform: translateY(-200px);\n   -o-transform: translateY(-200px);\n   -ms-transform: translateY(-200px);\n   transform: translateY(-200px);\n   -webkit-transition: all 0.2s ease-in-out;\n   -moz-transition: all 0.2s ease-in-out;\n   -o-transition: all 0.2s ease-in-out;\n   -ms-transition: all 0.2s ease-in-out;\n   transition: all 0.2s ease-in-out;\n}\n.view-seventh:hover img {\n   -webkit-transform: rotate(720deg) scale(0);\n   -moz-transform: rotate(720deg) scale(0);\n   -o-transform: rotate(720deg) scale(0);\n   -ms-transform: rotate(720deg) scale(0);\n   transform: rotate(720deg) scale(0);\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n   filter: alpha(opacity=0);\n   opacity: 0;\n}\n.view-seventh:hover .mask {\n   -ms-filter: \"progid: DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n   filter: alpha(opacity=100);\n   opacity: 1;\n   -webkit-transform: translateY(0px) rotate(0deg);\n   -moz-transform: translateY(0px) rotate(0deg);\n   -o-transform: translateY(0px) rotate(0deg);\n   -ms-transform: translateY(0px) rotate(0deg);\n   transform: translateY(0px) rotate(0deg);\n   -webkit-transition-delay: 0.4s;\n   -moz-transition-delay: 0.4s;\n   -o-transition-delay: 0.4s;\n   -ms-transition-delay: 0.4s;\n   transition-delay: 0.4s;\n}\n.view-seventh:hover h2 {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.7s;\n   -moz-transition-delay: 0.7s;\n   -o-transition-delay: 0.7s;\n   -ms-transition-delay: 0.7s;\n   transition-delay: 0.7s;\n}\n.view-seventh:hover p {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.6s;\n   -moz-transition-delay: 0.6s;\n   -o-transition-delay: 0.6s;\n   -ms-transition-delay: 0.6s;\n   transition-delay: 0.6s;\n}\n.view-seventh:hover a.info {\n   -webkit-transform: translateY(0px);\n   -moz-transform: translateY(0px);\n   -o-transform: translateY(0px);\n   -ms-transform: translateY(0px);\n   transform: translateY(0px);\n   -webkit-transition-delay: 0.5s;\n   -moz-transition-delay: 0.5s;\n   -o-transition-delay: 0.5s;\n   -ms-transition-delay: 0.5s;\n   transition-delay: 0.5s;\n}\n.view h4 {\n  text-transform: uppercase;\n  color: #2FD828;\n  font-family: 'Alegreya', serif;\n  text-align: center;\n  position: relative;\n  font-size: 24px;\n  padding: 10px;\n  background: rgba(0, 0, 0, 0.8);\n  margin: 40px 0 25px 0;\n}\n.view p {\n  font-style: italic; \n  font-size: 14px;\n  line-height: 1.8em;\n  position: relative;\n  color: #fff;\n  padding: 0px 20px 20px;\n  text-align: center;\n}\n.view.view-seventh img {\n  width: 100%;\n}\n/*-- footer --*/\n.footer{\npadding:50px 0;\nbackground:#393939;\n}\n.footer-grid ul{\npadding:0;\nmargin:0;\n}\n.footer-grid ul li{\n  background: url(../images/arrow.png) no-repeat 0px 6px;\n  list-style-type: none;\n  display: block;\n  padding-left: 23px;\n  line-height: 2em;\n}\n.footer-grid ul li a{\n  color: #757575;\n  font-size: 14px;\n  font-weight: 600;\n}\n.footer-grid ul li a:hover{\npadding-left: 11px;\ncolor:#2FD828;\n}\n.footer p {\nmargin:44px 0 0 0;\nfont-size:14px;\ncolor: #c2c2c2;\nfont-weight: 600;\ntext-align:center;\n}\n.footer p a{\ncolor:#fc3a3a;\n}\n.footer p a:hover{\ncolor: #c2c2c2;\n}\n.footer-grid h3{\n  margin: 0 0 20px 0;\n  font-size: 25px;\n  font-family: 'Alegreya', serif;\n  color: #fc3a3a;\n}\n/*-- //footer --*/\n.banner.page-head {\n  min-height: 135px;\n}\n/*--trypography--*/\n.typrography {\n  padding: 80px 0;\n}\n.grid_4{\n\tbackground:#fff;\n} \n.grid_3.grid_4 h3 {\n  margin: 0;\n} \n.grid_5{\n\tbackground:#fff;\n\tpadding:1em 0 2em 0;\n}\n\n.table td, .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th {\n  padding: 15px!important;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  font-size: 0.9em;\n  color: #999;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  border-top: none !important;\n}\n.tab-content > .active {\n  display: block;\n  visibility: visible;\n}\n.label {\n  font-weight: 300 !important;\n}\n.label {\n  padding: 4px 6px;\n  border: none;\n  text-shadow: none;\n}\nh4.typ1{\n\tmargin-bottom:15px;\n}\nh5.typ1{\n\tmargin-bottom:15px;\n}\n.progress {\n  height: 8px;\n  box-shadow: none;\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #eeeeee;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #ffffff;\n  text-align: center;\n  background-color:#03a9f4;\n  -webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition:width 0.6s ease;\n  -o-transition:width 0.6s ease;\n  transition:width 0.6s ease;\n}\n.progress-bar {\n  box-shadow: none;\n}\n.progress-bar-primary {\n  background-color: #03a9f4;\n}\n.progress-bar-info {\n  background-color: #00bcd4;\n}\n.progress-bar-success {\n  background-color: #8bc34a;\n}\n.progress-bar-warning {\n  background-color: #ffc107;\n}\n.progress-bar-danger {\n  background-color: #e51c23;\n}\n.progress-bar-inverse {\n  background-color: #757575;\n}\n.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {\n  background-color:#5bb2fc !important;\n  border-color:#5bb2fc; !important;\n}\n.grid_3 p{\n  line-height: 2em;\n  color: #888;\n  font-size: 0.9em;\n  margin-bottom: 1em;\n  font-weight: 300;\n}\n.bs-docs-example {\n  margin: 1em 0;\n}\nsection#tables  p {\n margin-top: 1em;\n}\n.breadcrumb li{\n\tfont-size:0.85em;\n}\n.badge-primary {\n  background-color: #03a9f4;\n}\n.badge-success {\n  background-color: #8bc34a;\n}\n.badge-warning {\n  background-color: #ffc107;\n}\n.badge-danger {\n  background-color: #e51c23;\n}\n.tab-container .tab-content {\n  border-radius: 0 2px 2px 2px;\n  border: 1px solid #e0e0e0;\n  padding: 16px;\n  background-color: #ffffff;\n}\n.nav-tabs {\n  margin-bottom: 1em;\n}\n.alert {\n  font-size: 0.85em;\n}\nh1.t-button,h2.t-button,h3.t-button,h4.t-button,h5.t-button {\nline-height:1.8em;\n  margin-top:0.5em;\n  margin-bottom: 0.5em;\n}\nh3.bars {\n  margin-bottom: 0.8em;\n}\nli.list-group-item1 {\n  line-height: 2.5em;\n}\n.input-group {\n  margin-bottom: 20px;\n  }\n.in-gp-tl{\npadding:0;\n}\n.in-gp-tb{\npadding-right:0;\n}\n.list-group {\n  margin-bottom: 48px;\n}\n ol {\n  margin-bottom: 44px;\n}\n/*-- //typography --*/\n/*--contact-page--*/\n.contact-map iframe{\nwidth:100%;\nheight:300px;\nborder:none;\n}\n.map iframe {\n  width: 100%;\n  height: 340px;\n}\n.contact-form input[type=\"text\"] {\n\tborder: 1px solid #a8a8a8;\n\twidth: 31.65%;\n\toutline: none;\n\tpadding: 10px;\n\tfont-size: 14px;\n\n\tcolor: #fc3a3a;\n\tmargin: 0 24px 24px 0;\n}\n.contact-form textarea {\n\tborder: 1px solid #a8a8a8;\n\twidth: 100%;\n\theight: 200px;\n\toutline: none;\n\tfont-size: 14px;\n\tcolor: #fc3a3a;\n\tresize: none;\n\tpadding: 10px;\n\tmargin-bottom: 24px;\n}\n.contact-form input[type=\"text\"]:nth-child(3){\nmargin-right:0;\n}\n.contact-form input[type=\"submit\"]{\noutline:none;\n  border:none;\n  text-decoration: none;\n  font-size: 20px;\n  color: #fff;\n  padding: 9px 32px;\n  background:#fc3a3a;\n\n}\n.contact-form input[type=\"submit\"]:hover{\ntransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\nbackground:#05969b;\n}\n.contact {\n  padding: 80px 0;\n}\n.contact-map {\n  margin-bottom: 50px;\n}\n\n/*--//contact-page--*/\n/*--services-page--*/\n.ser-img img {\n  width: 100%;\n}\n.caption h4 {\n  color: #2FD828;\n  font-weight: 600;\n  font-size: 20px;\n  text-transform: uppercase;\n}\n.caption p {\n  margin: 15px 0 0 0;\n  font-size: 14px;\n  color: #757575;\n  line-height: 2em;\n  }\n.services{\npadding:80px 0;\n}\n\n.row{\nmargin:0;\n}\n.ser-img{\nfloat:left;\nwidth:39%;\n}\n.caption{\nfloat:right;\nwidth:57%;\n}\n.services-grid:nth-child(3),.services-grid:nth-child(4){\nmargin-top:50px;\n}\n.services-top{\npadding:80px 0 0 0;\n  background: url(../images/back.jpg) no-repeat 0px 0px;\n  background-size: cover;\n  -webkit-background-size: cover;\n  -o-background-size: cover;\n  -ms-background-size: cover;\n  -moz-background-size: cover;\n  min-height:450px;\n}\n.ser-first{\npadding:80px 0;\n}\n.ser-top-grids,.ser-first-grids{\n  margin-top: 50px;\n}\n.ser-top-img{\nfloat:left;\nwidth:40%;\n}\n.ser-top-img img{\nwidth:100%;\n}\n.ser-top-txt{\nfloat:left;\nwidth:45%;\nmargin-left:30px;\n}\n.ser-top-txt p{\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  color: #c2c2c2;\n  line-height: 2em;\n}\n.ser-top-txt p:nth-child(2) {\n  margin: 15px 0 0 0;\n}\n.ser-top-grid ul{\nmargin:0;\npadding:0;\n}\n.ser-top-grid ul li{\nlist-style-type:none;\npadding-left:30px;\nbackground:url(../images/arrow.png) no-repeat 0px 7px;\nline-height:2.3em;\n}\n.ser-top-grid ul li a{\ncolor:#c2c2c2;\ntext-decoration:none;\nfont-size:14px;\n}\n.ser-top-grid ul li a:hover{\n  color: #fc3a3a;\n  padding-left: 5px;\n}\n.ser-first-grid h3 {\n  margin: 26px 0 10px 0;\n  color: #2FD828;\n  font-weight:600;\n  font-size: 20px;\n}\n.ser-first-grid  p {\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  color: #757575;\n  line-height: 2em;\n  }\n.ser-first-grid span {\n  font-size: 33px;\n  color: #fff;\n  background: #05969b;\n  border-radius: 100%;\n  padding: 25px 25px;\n  text-align: center;\n}\n/*-- //services-page --*/\n/*-- about-page --*/\n.about {\n  padding: 80px 0;\n}\n.about-grid-left img{\nwidth:100%;\n}\n.about-grid h3{\n  font-size: 20px;\n  margin: 0;\n  color: #2FD828;\n  font-weight: 600;\n}\n.about-grid p{\n  color: #757575;\n  margin: 18px 0;\n  font-size: 14px;\n  line-height: 2em;\n}\n.about-grid p:nth-child(3) {\n margin:0;\n}\n.client-say-grid p{\nbackground:url(../images/quote.png) no-repeat 0px 0px;\npadding-left:50px;\n  color: #757575;\n  margin: 0px 0 0 0;\n  font-size: 14px;\n  line-height: 2em;\n\n}\n.client-say-grid h4{\n  font-size: 20px;\n  color: #2FD828;\n  font-weight: 600;\n  margin:15px 0 0 0;\n  padding-left:50px;\n}\n.about-bottom-last {\n  padding: 80px 0;\n}\n.help-grids{\nbackground:#05969b;\npadding:80px 0;\n}\n.how-we-help{\npadding:100px 0;\n}\n\n.help-grid p{\ncolor: #BBE8EA;\nmargin: 15px 0 0px 0;\nfont-size: 14px;\nline-height:2em;\n}\nh3.tittle.tit3 {\n  color: #fff;\n  text-align: left;\n  margin-bottom: 20px;\n}\n/*-- //about-page --*/\n/*-- to-top --*/\n#toTop {\n\tdisplay: none;\n\ttext-decoration: none;\n\tposition: fixed;\n\tbottom: 28px;\n\tright: 1%;\n\toverflow: hidden;\n\tz-index: 999; \n\twidth: 32px;\n\theight: 32px;\n\tborder: none;\n\ttext-indent: 100%;\n\tbackground: url(\"../images/arr.png\") no-repeat 0px 0px;\n}\n#toTopHover {\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: block;\n\toverflow: hidden;\n\tfloat: right;\n\topacity: 0;\n\t-moz-opacity: 0;\n\tfilter: alpha(opacity=0);\n}\n/*-- //to-top --*/\n\n/*-- responsive media queries --*/\n@media (max-width: 1024px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 42px;\n\t  }\n\t.navbar-default .navbar-nav > li > a {\n\t  font-size: 15px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding:22px 15px;\n\t}\n\t.navbar-nav {\n\t  float: right;\n\t  width: 50%;\n\t}\n\t.sb-search-input {\n\t  width: 69%;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 58px;\n\t  }\n\t.banner {\n\t  min-height: 490px;\n\t}\n\t.banner-info {\n\t  margin-top: 135px;\n\t}\n\t.callbacks_tabs {\n\t  top: 125%;\n\t  }\n\t.banner-bottom ,.teachers,.about,.help-grids,.about-bottom-last,.typrography,.ser-first,.services,.contact,.facilities,.features{\n\t  padding: 60px 0;\n\t  }\n\t.teach-head h3,h3.tittle,h2.tittle{\n\t  font-size: 28px;\n\t  }\n\t.bottom-text h3{\n\t  font-size: 15px;\n\t  }\n\t.bottom-text p ,.teach-head p,.features-right p,.about-grid p,.help-grid p,.ser-first-grid p,.ser-top-txt p,.caption p{\n\t  line-height: 1.8em;\n\t  font-size: 13px;\n\t  }\n\t.bottom-text {\n\t  padding: 39px 9px;\n\t  }\n\t.bottom-grid span {\n\t  font-size: 25px;\n\t  padding: 17px 16px;\n\t  top: -30px;\n\t  left: 38%;\n\t}\n\t.view h4 {\n\t  font-size: 21px;\n\t  padding: 8px;\n\t  margin: 30px 0 12px 0;\n\t}\n\t.view p {\n\t  font-size: 13px;\n\t  padding: 0px 12px 14px;\n\t  }\n\t.view {\n\t  width: 31.2%;\n\t  }\n\t.features-right p:nth-child(2) {\n\t  margin: 9px 0;\n\t}\n\t.footer-grid ul li a {\n\t  font-size: 13px;\n\t  }\n\t.footer-grid h3 {\n\t  margin: 0 0 15px 0;\n\t  font-size: 22px;\n\t  }\n\t.footer p {\n\t  font-size: 13px;\n\t  }\n\t.features-right h4 ,.team-img h3,.about-grid h3,.ser-first-grid h3,.caption h4 {\n\t font-size: 17px;\n\t}\n\t.client-say-grid p{\n\t  padding-left: 34px;\n\t  font-size: 13px;\n\t  line-height: 1.8em;\n\t}\n\t.client-say-grid h4 {\n\t  font-size: 17px;\n\t  margin: 9px 0 0 0;\n\t  padding-left: 34px;\n\t}\n\t.in-gp-tb {\n\t  padding: 0;\n\t}\n\t.ser-first-grid span {\n\t  padding: 20px 20px;\n\t  }\n\t.services-top{\n\t  padding: 60px 0 0 0;\n\t}\n\t.ser-top-txt {\n\t  width: 53%;\n\t  margin-left: 30px;\n\t}\n\t.ser-top-grid ul li a {\n\t  font-size: 13px;\n\t}\n\t.ser-top-grid ul li {\n\t  line-height: 2em;\n\t}\n\t.services-top {\n\t  min-height: 370px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 19px 24px 0;\n\t}\n\t.contact-form textarea {\n\t  height: 175px;\n\t  }\n\t.contact-form input[type=\"submit\"]{\n\t  font-size: 17px;\n\t  padding: 7px 23px;\n\t  }\n\t.contact-map iframe {\n\t  height: 275px;\n\t}\n\t.contact-form input[type=\"text\"],.contact-form textarea {\n\t  font-size: 13px;\n\t  }\n\t.sb-search {\n\t  margin-top: 12px;\n\t  }\n}\n@media (max-width: 800px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 37px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 19px 13px;\n\t}\n\t.navbar-nav {\n\t  float: right;\n\t  width: 61%;\n\t}\n\t.sb-search-input {\n\t  right: 3px;\n\t  width: 64%;\n\t  height: 36px;\n\t  padding: 3px 15px;\n\t  font-size: 13px;\n\t  }\n\t.sb-icon-search {\n\t  background: #fc3a3a url('../images/search.png') no-repeat 0px 8px;\n\t}\n\t.sb-icon-search{\n\t  width: 33px !important;\n\t  height: 33px !important;\n\t  right: 6px;\n\t  }\n\t.sb-search.sb-search-open .sb-icon-search{\n\t  background: url('../images/search.png') no-repeat 0px 8px;\n\t  }\n\t.sb-search-input {\n\t  right: 6px;\n\t  height: 33px;\n\t  }\n\t.sb-search-submit {\n\t  background: url('../images/search.png') no-repeat -8px 8px;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 46px;\n\t}\n\t.banner-info {\n\t  margin-top: 110px;\n\t}\n\t.banner {\n\t  min-height: 415px;\n\t}\n\t.sb-search-input {\n\t  width: 82%;\n\t  }\n\th3.tittle,h2.tittle{\n\t  margin-bottom: 25px;\n\t}\n\t.bottom-grids {\n\t  margin-top: 65px;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 5px;\n\t}\n\t.bottom-text p{\n\t  font-size: 12px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 14px;\n\t}\n\t.bottom-text p {\n\t  margin-top: 7px;\n\t  }\n\t.bottom-text {\n\t  padding: 33px 9px;\n\t}\n\t.bottom-grid span {\n\t  padding: 13px 13px;\n\t  top: -32px;\n\t  left: 36%;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 26px;\n\t}\n\t.teach-head p {\n\t  width: 78%;\n\t  margin: 15px auto 0 auto;\n\t}\n\t.team-grids {\n\t  margin-top: 25px;\n\t}\n\t.team-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.team-img img {\n\t  width: 100%;\n\t}\n\t.features-right h4, .team-img h3, .about-grid h3, .ser-first-grid h3, .caption h4 {\n\t  font-size: 15px;\n\t}\n\t.team-img h4 {\n\t  font-size: 15px;\n\t  }\n\t.team-img p {\n\t  line-height: 1.7em;\n\t  }\n\t.view {\n\t  margin: 7px;\n\t  }\n\t.view h4 {\n\t  font-size: 19px;\n\t  padding: 4px;\n\t  margin: 11px 0 5px 0;\n\t}\n\t.view p {\n\t  font-size: 12px;\n\t  padding: 0px 4px 0px;\n\t}\n\t.features-left {\n\t  float: left;\n\t  width: 53%;\n\t}\n\t.callbacks_tabs {\n\t  left: 44%;\n\t  }\n\t.footer-grid {\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.footer-grid ul li {\n\t  padding-left: 17px;\n\t  }\n\t.footer-grid ul li a {\n\t  font-size: 12px;\n\t}\n\t.footer p {\n\t  margin: 34px 0 0 0;\n\t  }\n\t.footer-grid h3 {\n\t  font-size: 20px;\n\t}\n\t.footer-grid ul li a:hover {\n\t  padding-left: 3px;\n\t  }\n\t.ser-first-grid{\n\t  float: left;\n\t  width: 25%;\n\t  padding: 0 10px;\n\t}\n\t.ser-first-grid span {\n\t  padding: 16px 16px;\n\t}\n\t.ser-first-grid span {\n\t  font-size: 25px;\n\t  }\n\t.ser-top-grids, .ser-first-grids {\n\t  margin-top: 25px;\n\t}\n\t.col-md-8.ser-top-grid{\n\t  float: left;\n\t  width: 70%;\n\t  padding:0 10px;\n\t}\n\t.col-md-4.ser-top-grid {\n\t  float: left;\n\t  width: 30%;\n\t  padding:0 10px;\n\t}\n\t.ser-top-grid ul li {\n\t  padding-left: 20px;\n\t  }\n\t.ser-top-txt p{\n\t  line-height: 1.7em;\n\t}\n\t.ser-top-txt p:nth-child(2) {\n\t  margin: 4px 0 0 0;\n\t}\n\t.services-top {\n\t  min-height: 355px;\n\t}\n\t.services-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 10px;\n\t}\n\t.caption h4{\n\t  font-size: 14px;\n\t}\n\t.caption p {\n\t  margin: 10px 0 0 0;\n\t  }\n\t.caption {\n\t  float: right;\n\t  width: 55%;\n\t}\n\t.ser-img {\n\t  float: left;\n\t  width: 42%;\n\t}\n\t .caption p {\n\t  line-height: 1.7em;\n\t  }\n\t.services-grid:nth-child(3), .services-grid:nth-child(4) {\n\t  margin-top: 35px;\n\t}\n\t.contact-map iframe {\n\t  height: 250px;\n\t}\n\t.contact-map {\n\t  margin-bottom: 40px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 14px 20px 0;\n\t}\n\t.contact-form input[type=\"text\"] ,.contact-form textarea{\n\t  padding: 7px;\n\t  }\n\t.contact-form textarea {\n\t  height: 145px;\n\t}\n\t.contact-form textarea {\n\t  margin-bottom: 15px;\n\t}\n\t.contact-form input[type=\"submit\"] {\n\t  font-size: 15px;\n\t  padding: 5px 13px;\n\t}\n\t.about-grids {\n\t  margin-top: 25px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t}\n\t.about-grid p {\n\t  margin: 14px 0;\n\t  }\n\t.help-grid {\n\t  float: left;\n\t  width: 33.3%;\n\t  padding: 0 10px;\n\t}\n\t.client-say-grid {\n\t  float: left;\n\t  width: 50%;\n\t}\n\t.client-say-grid:nth-child(3),.client-say-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.client-say-grid h4{\n\t  font-size: 15px;\n\t  }\n}\n@media (max-width: 667px){\n\t.view {\n\t  margin: 6px;\n\t}\n}\n@media (max-width: 640px){\n\ta.hvr-overline-from-center:before {\n\t  left: 51%;\n\t  right: 51%;\n\t  }\n\t.navbar-default .navbar-toggle {\n\t  border-color: #2FD828;\n\t}\n\t.navbar-default .navbar-toggle .icon-bar {\n\t  background-color: #fff;\n\t}\n\t.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {\n\t  background-color:#2FD828;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 15px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 16px;\n\t}\n\t.bottom-text p {\n\t  font-size: 13px;\n\t}\n\t.bottom-text p {\n\t  margin-top: 13px;\n\t}\n\t.bottom-text {\n\t  padding: 64px 25px;\n\t}\n\t.bottom-grid span {\n\t  padding: 15px 15px;\n\t  top: -32px;\n\t  left: 41%;\n\t}\n\t.bottom-grid:nth-child(3) ,.bottom-grid:nth-child(4){\n\t  margin-top: 65px;\n\t}\n\t.team-grid {\n\t  float: left;\n\t  width: 25%;\n\t  }\n\t.team-img p {\n\t  font-size: 12px;\n\t  }\n\t.view {\n\t  margin: 6px;\n\t  border: 5px solid #fff;\n\t  }\n\t.view h4 {\n\t  font-size: 16px;\n\t  padding: 2px;\n\t  margin: 3px 0 2px 0;\n\t}\n\t.view p {\n\t  line-height: 1.5em;\n\t  }\n\t.features-right p:nth-child(2) {\n\t  margin: 13px 0;\n\t}\n\t.footer-grid {\n\t  float: left;\n\t  width: 50%;\n\t  }\n\t.footer-grid ul li {\n\t  padding-left: 25px;\n\t}\n\t.footer-grid:nth-child(3),.footer-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.navbar-nav {\n\t  text-align: center;\n\t  float: none;\n\t  width: 100%;\n\t  margin: 0;\n\t  padding: 11px 0 50px 0;\n\t}\n\t.navbar-default .navbar-nav > li > a {\n\t  text-align: center;\n\t  display: inline-block;\n\t}\n\t.search-box {\n\t  float: none;\n\t  width: 100%;\n\t}\n\t.sb-search.sb-search-open, .no-js .sb-search {\n\t  width: 100%;\n\t}\n\t.sb-search {\n\t  right: 43px;\n\t  top: 86%;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 37px;\n\t}\n\t.banner {\n\t  min-height: 342px;\n\t}\n\t.banner-info {\n\t  margin-top: 83px;\n\t}\n\t.team-img ul li {\n\t  margin-left: 3px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t  width: 53%;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 15px 13px;\n\t}\n\t.ser-first-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 15px;\n\t}\n\t.ser-first-grid:nth-child(3) ,.ser-first-grid:nth-child(4) {\n\t  margin-top: 25px;\n\t}\n\t.col-md-8.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t}\n\t.col-md-4.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t  margin-top: 25px;\n\t}\n\t.services-top {\n\t  min-height: 510px;\n\t}\n\t.services-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 15px;\n\t}\n\t.services-grid:nth-child(3), .services-grid:nth-child(4),.services-grid:nth-child(2) {\n\t  margin-top: 35px;\n\t}\n\t.caption h4{\n\t  font-size: 16px;\n\t}\n\t.caption p {\n\t  line-height: 1.8em;\n\t  margin: 20px 0 0 0;\n\t}\n\t.contact-map iframe {\n\t  height: 210px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 10px 20px 0;\n\t}\n\t.bottom-text {\n\t  padding: 47px 15px;\n\t  width: 85%;\n\t  margin: 0 auto;\n\t}\n}\n@media (max-width: 568px){\n.view {\n  margin: 5px;\n  }\n\t.bottom-text {\n\t  width: 96%;\n\t  }\n\t.team-img ul li {\n\t  margin-left: 0px;\n\t}\n}\n@media (max-width: 480px){\n\t.banner.page-head {\n\t  min-height: 95px;\n\t}\n\t.banner-bottom, .teachers, .about, .help-grids, .about-bottom-last, .typrography, .ser-first, .services, .contact, .facilities, .features {\n\t  padding: 45px 0;\n\t}\n\t.contact-map iframe {\n\t  height: 195px;\n\t}\n\t.contact-form input[type=\"text\"] {\n\t  margin: 0 0px 20px 0;\n\t  width: 100%;\n\t}\n\t.contact-form textarea {\n\t  height: 125px;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 24px;\n\t}\n\t.navbar-nav > li > a {\n\t  padding: 10px 8px;\n\t}\n\t.sb-search {\n\t  right: 36px;\n\t  top: 82%;\n\t}\n\t.navbar-default .navbar-brand {\n\t  font-size: 35px;\n\t}\n\t.banner-info h3 {\n\t  font-size: 32px;\n\t}\n\t.banner-info {\n\t  margin-top: 62px;\n\t}\n\t.banner {\n\t  min-height: 260px;\n\t}\n\t.callbacks_tabs {\n\t  left: 40%;\n\t  top: 115%;\n\t}\n\t.bottom-grid {\n\t  padding: 0 6px;\n\t}\n\t.bottom-text {\n\t  padding: 41px 13px;\n\t}\n\t.bottom-grid span {\n\t  left: 37%;\n\t}\n\t.teach-head p {\n\t  width: 100%;\n\t  }\n\t.team-grid {\n\t  float: left;\n\t  width: 50%;\n\t  padding: 0 6px;\n\t}\n\t.team-grid:nth-child(3),.team-grid:nth-child(4)  {\n\t  margin-top: 25px;\n\t}\n\t.view {\n\t  width: 47.2%;\n\t}\n\t.view h4 {\n\t  padding: 7px;\n\t  margin: 15px 0 2px 0;\n\t}\n\t.features-left ,.features-right{\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 6px;\n\t}\n\t.features-right{\n\tmargin-top:25px;\n\t}\n\t.about-grid-left {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t}\n\t.about-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t  margin-top: 25px;\n\t}\n\t.help-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t  margin-bottom: 25px;\n\t}\n\t.help-grid:nth-child(3){\n\tmargin:0;\n\t}\n\t.client-say-grid {\n\t  padding: 0 6px;\n\t}\n\t.ser-top-txt {\n\t  width: 100%;\n\t  margin-left: 0;\n\t  margin-top: 25px;\n\t}\n\t.ser-top-img {\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.ser-first-grid {\n\t  padding: 0 8px;\n\t}\n\t.ser-top-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0 8px;\n\t}\n\t.services-top {\n\t  padding: 45px 0 0 0;\n\t}\n\t.services-top {\n\t  min-height: 750px;\n\t}\n\t.caption p {\n\t  line-height: 1.7em;\n\t  margin: 10px 0 0 0;\n\t}\n\t.services-grid {\n\t  padding: 0 8px;\n\t}\n\t.services-grid:nth-child(3), .services-grid:nth-child(4), .services-grid:nth-child(2) {\n\t  margin-top: 25px;\n\t}\n\t.bottom-text {\n\t  width: 100%;\n\t  }\n\t.features-left, .features-right {\n\t  padding: 0;\n\t}\n\n}\n@media (max-width: 414px){\n\t.bottom-text h3 {\n\t  font-size: 14px;\n\t}\n\t.bottom-text {\n\t  padding: 27px 9px;\n\t}\n\t.bottom-grid {\n\t  padding: 0 2px;\n\t}\n}\n@media (max-width: 384px){\n\t.bottom-text h3 {\n\t  font-size: 13px;\n\t}\n\t.bottom-text {\n\t  padding: 24px 0px;\n\t}\n\t.bottom-grid {\n\t  padding: 0 1px;\n\t}\n\t.view {\n\t  width: 46.8%;\n\t}\n}\n\n@media (max-width: 320px){\n\t.navbar-default .navbar-brand {\n\t  font-size: 28px;\n\t  padding-top: 5px;\n\t}\n\t.navbar-toggle {\n\t  padding: 7px 7px;\n\t  margin-top: 11px;\n\t  margin-right: 0px;\n\t  }\n\t.banner.page-head {\n\t  min-height: 64px;\n\t}\n\t.contact-map {\n\t  margin-bottom: 30px;\n\t}\n\t.contact-map iframe {\n\t  height: 170px;\n\t}\n\t.sb-search {\n\t  right: 19px;\n\t  }\n\t.banner-info h3 {\n\t  font-size: 22px;\n\t}\n\t.banner {\n\t  min-height: 182px;\n\t}\n\t.callbacks_tabs a:after {\n\t  height: 17px;\n\t  width: 5px;\n\t  }\n\t.callbacks_tabs li {\n\t  margin-left: 2px;\n\t  }\n\t.banner-info {\n\t  margin-top: 38px;\n\t}\n\t.teach-head h3 ,h3.tittle,h2.tittle{\n\t  font-size: 22px;\n\t}\n\t.bottom-grid {\n\t  float: left;\n\t  width: 100%;\n\t  }\n\t.bottom-grid {\n\t  padding: 0;\n\t}\n\t.bottom-text {\n\t  padding: 66px 28px;\n\t}\n\t.bottom-grid:nth-child(3), .bottom-grid:nth-child(4) , .bottom-grid:nth-child(2){\n\t  margin-top: 60px;\n\t}\n\t.bottom-grid span {\n\t  left: 40%;\n\t}\n\t.view {\n\t  width: 100%;\n\t}\n\t.view {\n\t  margin: 0 0 15px 0;\n\t  }\n\t.view p {\n\t  line-height: 1.8em;\n\t  font-size: 13px;\n\t  padding: 0px 20px 0px;\n\t}\n\t.view h4 {\n\t  font-size: 19px;\n\t  padding: 9px;\n\t  margin: 18px 0 11px 0;\n\t  }\n\t.footer {\n\t  padding: 45px 0;\n\t  }\n\t.footer-grid {\n\t  float: left;\n\t  width: 100%;\n\t  padding: 0;\n\t}\n\t.footer-grid:nth-child(3), .footer-grid:nth-child(4) ,.footer-grid:nth-child(2) {\n\t  margin-top: 25px;\n\t}\n\t.footer p {\n\t  font-size: 13px;\n\t  line-height: 1.8em;\n\t}\n\t.footer p {\n\t  margin: 18px 0 0 0;\n\t}\n\t.client-say-grid {\n\t  padding: 0;\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.client-say-grid:nth-child(3), .client-say-grid:nth-child(4) ,.client-say-grid:nth-child(2){\n\t  margin-top: 25px;\n\t}\n\t.table td, .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th {\n\t  padding: 10px!important;\n\t}\n\t.ser-first-grid {\n\t  float: left;\n\t  width: 100%;\n\t  }\n\t.ser-first-grid:nth-child(3), .ser-first-grid:nth-child(4) ,.ser-first-grid:nth-child(2){\n\t  margin-top: 25px;\n\t}\n\t.services-top {\n\t  min-height: 700px;\n\t}\n\t.ser-img {\n\t  float: left;\n\t  width: 100%;\n\t}\n\t.caption {\n\t  float: right;\n\t  width: 100%;\n\t  margin-top: 25px;\n\t}\n\t.ser-first-grid {\n\t  padding: 0;\n\t}\n\t.ser-top-grid {\n\t  padding: 0 !important;\n\t}\n\t.services-grid {\n\t  padding: 0;\n\t}\n\t.bottom-text {\n\t  width: 79%;\n\t  padding: 45px 10px;\n\t}\n\ta.navbar-brand span {\n\t  margin-left: 7px;\n\t}\n\t.bottom-text h3 {\n\t  font-size: 15px;\n\t}\n}\n/*-- //responsive media queries --*/"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/supersized.css",
    "content": "/*\n\n\tSupersized - Fullscreen Slideshow jQuery Plugin\n\tVersion : 3.2.7\n\tSite\t: www.buildinternet.com/project/supersized\n\t\n\tAuthor\t: Sam Dunn\n\tCompany : One Mighty Roar (www.onemightyroar.com)\n\tLicense : MIT License / GPL License\n\t\n*/\n\n* { margin:0; padding:0; }\nbody { background:#111; height:100%; }\n\timg { border:none; }\n\t\n\t#supersized-loader { position:absolute; top:50%; left:50%; z-index:0; width:60px; height:60px; margin:-30px 0 0 -30px; text-indent:-999em; background:url(../images/progress.gif) no-repeat center center;}\n\t\n\t#supersized {  display:block; position:fixed; left:0; top:0; overflow:hidden; z-index:-999; height:100%; width:100%; }\n\t\t#supersized img { width:auto; height:auto; position:relative; display:none; outline:none; border:none; }\n\t\t\t#supersized.speed img { -ms-interpolation-mode:nearest-neighbor; image-rendering: -moz-crisp-edges; }\t/*Speed*/\n\t\t\t#supersized.quality img { -ms-interpolation-mode:bicubic; image-rendering: optimizeQuality; }\t\t\t/*Quality*/\n\t\t\n\t\t#supersized li { display:block; list-style:none; z-index:-30; position:fixed; overflow:hidden; top:0; left:0; width:100%; height:100%; background:#111; }\n\t\t#supersized a { width:100%; height:100%; display:block; }\n\t\t\t#supersized li.prevslide { z-index:-20; }\n\t\t\t#supersized li.activeslide { z-index:-10; }\n\t\t\t#supersized li.image-loading { background:#111 url(../images/progress.gif) no-repeat center center; width:100%; height:100%; }\n\t\t\t\t#supersized li.image-loading img{ visibility:hidden; }\n\t\t\t#supersized li.prevslide img, #supersized li.activeslide img{ display:inline; }\n\n\n#supersized img { max-width: none !important }\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/swipebox.css",
    "content": ".swipebox-overflow-hidden {\n  overflow: hidden!important;\n}\n\n#swipebox-overlay img {\n  border: none!important;\n}\n\n#swipebox-overlay {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  opacity: 0;\n  z-index: 9999;\n  overflow: hidden;\n  display: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n\n#swipebox-slider {\n  height: 100%;\n  left: 0;\n  top: 0;\n  width: 100%;\n  white-space: nowrap;\n  position: absolute;\n}\n\n#swipebox-slider .slide {\n  background: url(../images/loader.gif) no-repeat center center;\n  height: 100%;\n  line-height: 1px;\n  text-align: center;\n  width: 100%;\n  display: inline-block;\n}\n\n#swipebox-slider .slide:before {\n  content: \"\";\n  display: inline-block;\n  height: 50%;\n  width: 1px;\n  margin-right: -1px;\n}\n\n#swipebox-slider .slide img {\n  display: inline-block;\n  max-height: 100%;\n  max-width: 100%;\n  width: auto;\n  height: auto;\n  vertical-align: middle;\n}\n\n#swipebox-action, #swipebox-caption {\n  position: absolute;\n  left: 0;\n  z-index: 999;\n  height: 50px;\n  width: 100%;\n}\n\n#swipebox-action {\n  bottom: -50px;\n}\n#swipebox-action.visible-bars {\n  bottom: 0;\n}\n\n#swipebox-action.force-visible-bars {\n  bottom: 0!important;\n}\n\n#swipebox-caption {\n  top: -50px;\n  text-align: center;\n}\n#swipebox-caption.visible-bars {\n  top: 0;\n}\n\n#swipebox-caption.force-visible-bars {\n  top: 0!important;\n}\n\n#swipebox-action #swipebox-prev, #swipebox-action #swipebox-next,\n#swipebox-action #swipebox-close {\n  background-image: url(../images/icons.png);\n  background-repeat: no-repeat;\n  border: none!important;\n  text-decoration: none!important;\n  cursor: pointer;\n  position: absolute;\n  width: 50px;\n  height: 50px;\n  top: 0;\n}\n\n#swipebox-action #swipebox-close {\n  background-position: 15px 12px;\n  left: 40px;\n}\n\n#swipebox-action #swipebox-prev {\n  background-position: -32px 13px;\n  right: 100px;\n}\n\n#swipebox-action #swipebox-next {\n  background-position: -78px 13px;\n  right: 40px;\n}\n\n#swipebox-action #swipebox-prev.disabled,\n#swipebox-action #swipebox-next.disabled {\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);\n  opacity: 0.3;\n}\n\n#swipebox-slider.rightSpring {\n  -moz-animation: rightSpring 0.3s;\n  -webkit-animation: rightSpring 0.3s;\n}\n\n#swipebox-slider.leftSpring {\n  -moz-animation: leftSpring 0.3s;\n  -webkit-animation: leftSpring 0.3s;\n}\n\n@-moz-keyframes rightSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: -30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-moz-keyframes leftSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: 30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-webkit-keyframes rightSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: -30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n@-webkit-keyframes leftSpring {\n  0% {\n    margin-left: 0px;\n  }\n\n  50% {\n    margin-left: 30px;\n  }\n\n  100% {\n    margin-left: 0px;\n  }\n}\n\n/* Skin \n--------------------------*/\n#swipebox-overlay {\n  background: #0d0d0d;\n}\n\n#swipebox-action, #swipebox-caption {\n  text-shadow: 1px 1px 1px black;\n  background-color: #0d0d0d;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0d0d0d), color-stop(100%, #000000));\n  background-image: -webkit-linear-gradient(#0d0d0d, #000000);\n  background-image: -moz-linear-gradient(#0d0d0d, #000000);\n  background-image: -o-linear-gradient(#0d0d0d, #000000);\n  background-image: linear-gradient(#0d0d0d, #000000);\n  -webkit-box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  -moz-box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  box-shadow: 0 1px 1px 1px #212121, inset 0 1px 1px 1px black;\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=95);\n  opacity: 0.95;\n}\n\n#swipebox-action {\n  -webkit-box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n  -moz-box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n  box-shadow: 0 -1px -1px 1px #212121, inset 0 -1px -1px 1px black;\n}\n\n#swipebox-caption {\n  color: white!important;\n  font-size: 15px;\n  line-height: 43px;\n  font-family: Helvetica, Arial, sans-serif;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/time.css",
    "content": "h1 {\n\tfont-family:\"΢ź\";\n\tfont-size:40px;\n\tmargin:20px 0;\n\tborder-bottom:solid 1px #ccc;\n\tpadding-bottom:20px;\n\tletter-spacing:2px;\n}\n\n.time-item strong {\n\tbackground:#C71C60;\n\tcolor:#fff;\n\tline-height:49px;\n\tfont-size:36px;\n\tfont-family:Arial;\n\tpadding:0 10px;\n\tmargin-right:10px;\n\tborder-radius:5px;\n\tbox-shadow:1px 1px 3px rgba(0,0,0,0.2);\n}\n\n#day_show {\n\tfloat:left;\n\tline-height:49px;\n\tcolor:#c71c60;\n\tfont-size:32px;\n\tmargin:0 10px;\n\tfont-family:Arial,Helvetica,sans-serif;\n}\n.item-title .unit {\n\tbackground:none;\n\tline-height:49px;\n\tfont-size:24px;\n\tpadding:0 10px;\n\tfloat:left;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/css/userlogin.css",
    "content": "/*\n *\n * Template Name: Fullscreen Login\n * Description: Login Template with Fullscreen Background Slideshow\n * Author: Anli Zaimi\n * Author URI: http://azmind.com\n *\n */\n\n\nbody {\n    background: #f8f8f8;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    text-align: center;\n    color: #fff;\n}\n\n.page-container {\n    margin: 120px auto 0 auto;\n}\n\nh1 {\n    font-size: 30px;\n    font-weight: 700;\n    text-shadow: 0 1px 4px rgba(0,0,0,.2);\n}\n\nform {\n    position: relative;\n    width: 305px;\n    margin: 15px auto 0 auto;\n    text-align: center;\n}\n\ninput {\n    width: 270px;\n    height: 42px;\n    margin-top: 10px;\n    padding: 0 15px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.15);\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #3d3d3d; /* browsers that don't support rgba */\n    border: 1px solid rgba(255,255,255,.15);\n    -moz-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    -webkit-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\n.radio{\n    width: 25px;\n    height: 20px;\n    margin-top: 25px;\n    padding: 0 15px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.15);\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #3d3d3d; /* browsers that don't support rgba */\n    border: 1px solid rgba(255,255,255,.15);\n    -moz-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    -webkit-box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    box-shadow: 0 2px 3px 0 rgba(0,0,0,.1) inset;\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\ninput:-moz-placeholder { color: #fff; }\ninput:-ms-input-placeholder { color: #fff; }\ninput::-webkit-input-placeholder { color: #fff; }\n\ninput:focus {\n    outline: none;\n    -moz-box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 2px 3px 0 rgba(0,0,0,.1) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n}\n\nbutton {\n    cursor: pointer;\n    width: 270px;\n    height: 44px;\n    margin-top: 25px;\n    padding: 0;\n    background: #ef4300;\n    -moz-border-radius: 6px;\n    -webkit-border-radius: 6px;\n    border-radius: 6px;\n    border: 1px solid #ff730e;\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.25) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    font-family: 'PT Sans', Helvetica, Arial, sans-serif;\n    font-size: 14px;\n    font-weight: 700;\n    color: #fff;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\nbutton:hover {\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n}\n\nbutton:active {\n    -moz-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    -webkit-box-shadow:\n        0 15px 30px 0 rgba(255,255,255,.15) inset,\n        0 2px 7px 0 rgba(0,0,0,.2);\n    box-shadow:        \n        0 5px 8px 0 rgba(0,0,0,.1) inset,\n        0 1px 4px 0 rgba(0,0,0,.1);\n\n    border: 0px solid #ef4300;\n}\n\n.error {\n    display: none;\n    position: absolute;\n    top: 27px;\n    right: -55px;\n    width: 40px;\n    height: 40px;\n    background: #2d2d2d; /* browsers that don't support rgba */\n    background: rgba(45,45,45,.25);\n    -moz-border-radius: 8px;\n    -webkit-border-radius: 8px;\n    border-radius: 8px;\n}\n\n.error span {\n    display: inline-block;\n    margin-left: 2px;\n    font-size: 40px;\n    font-weight: 700;\n    line-height: 40px;\n    text-shadow: 0 1px 2px rgba(0,0,0,.1);\n    -o-transform: rotate(45deg);\n    -moz-transform: rotate(45deg);\n    -webkit-transform: rotate(45deg);\n    -ms-transform: rotate(45deg);\n\n}\n\n.connect {\n    width: 305px;\n    margin: 35px auto 0 auto;\n    font-size: 18px;\n    font-weight: 700;\n    text-shadow: 0 1px 3px rgba(0,0,0,.2);\n}\n\n.connect a {\n    display: inline-block;\n    width: 32px;\n    height: 35px;\n    margin-top: 15px;\n    -o-transition: all .2s;\n    -moz-transition: all .2s;\n    -webkit-transition: all .2s;\n    -ms-transition: all .2s;\n}\n\n.connect a:hover { background-position: center bottom; }\n\n\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/index.jsp",
    "content": "<%@ page contentType=\"text/html; charset=utf-8\"%>\n<html>\n<head>\n</head>\n<script type=\"text/javascript\">\n\twindow.location.href = \".action\";\n</script>\n<body>\n</body>\n</html>\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\nvar $dp,WdatePicker;(function(){var $={\n$langList:[\n {name:\"en\",charset:\"UTF-8\"},\n {name:\"zh-cn\",charset:\"gb2312\"},\n {name:\"zh-tw\",charset:\"GBK\"}],\n$skinList:[\n {name:\"default\",charset:\"gb2312\"},\n {name:\"whyGreen\",charset:\"gb2312\"},\n {name:\"blue\",charset:\"gb2312\"},\n {name:\"green\",charset:\"gb2312\"},\n {name:\"simple\",charset:\"gb2312\"},\n {name:\"ext\",charset:\"gb2312\"},\n {name:\"blueFresh\",charset:\"gb2312\"},\n {name:\"twoer\",charset:\"gb2312\"},\n {name:\"YcloudRed\",charset:\"gb2312\"}],\n$wdate:true,\n$crossFrame:true,\n$preLoad:false,\n$dpPath:\"\",\ndoubleCalendar:false,\nenableKeyboard:true,\nenableInputMask:true,\nautoUpdateOnChanged:null,\nweekMethod:\"ISO8601\",\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nfirstDayOfWeek:0,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOK:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:null,\nqsEnabled:true,\nautoShowQS:false,\nopposite:false,\nhmsMenuCfg:{H:[1,6],m:[5,6],s:[15,4]},\nopposite:false,\n\nspecialDates:null,specialDays:null,disabledDates:null,disabledDays:null,onpicking:null,onpicked:null,onclearing:null,oncleared:null,ychanging:null,ychanged:null,Mchanging:null,Mchanged:null,dchanging:null,dchanged:null,Hchanging:null,Hchanged:null,mchanging:null,mchanged:null,schanging:null,schanged:null,eCont:null,vel:null,elProp:\"\",errMsg:\"\",quickSel:[],has:{},getRealLang:function(){var _=$.$langList;for(var A=0;A<_.length;A++)if(_[A].name==this.lang)return _[A];return _[0]}};WdatePicker=U;var Y=window,T={innerHTML:\"\"},N=\"document\",H=\"documentElement\",C=\"getElementsByTagName\",V,A,S,G,c,X=navigator.appName;if(X==\"Microsoft Internet Explorer\")S=true;else if(X==\"Opera\")c=true;else G=true;A=$.$dpPath||J();if($.$wdate)K(A+\"skin/WdatePicker.css\");V=Y;if($.$crossFrame){try{while(V.parent!=V&&V.parent[N][C](\"frameset\").length==0)V=V.parent}catch(O){}}if(!V.$dp)V.$dp={ff:G,ie:S,opera:c,status:0,defMinDate:$.minDate,defMaxDate:$.maxDate};B();if($.$preLoad&&$dp.status==0)E(Y,\"onload\",function(){U(null,true)});if(!Y[N].docMD){E(Y[N],\"onmousedown\",D,true);Y[N].docMD=true}if(!V[N].docMD){E(V[N],\"onmousedown\",D,true);V[N].docMD=true}E(Y,\"onunload\",function(){if($dp.dd)P($dp.dd,\"none\")});function B(){try{V[N],V.$dp=V.$dp||{}}catch($){V=Y;$dp=$dp||{}}var A={win:Y,$:function($){return(typeof $==\"string\")?Y[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=\"\"){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var B in $)if(this.dt[B]===undefined)this.errMsg=\"invalid property:\"+B;else{this.dt[B]+=$[B];if(B==\"M\"){var C=$[\"M\"]>0?1:0,A=new Date(this.dt[\"y\"],this.dt[\"M\"],0).getDate();this.dt[\"d\"]=Math.min(A+C,this.dt[\"d\"])}}if(this.dt.refresh())return this.dt}return\"\"},show:function(){var A=V[N].getElementsByTagName(\"div\"),$=100000;for(var B=0;B<A.length;B++){var _=parseInt(A[B].style.zIndex);if(_>$)$=_}this.dd.style.zIndex=$+2;P(this.dd,\"block\");P(this.dd.firstChild,\"\")},unbind:function($){$=this.$($);if($.initcfg){L($,\"onclick\",function(){U($.initcfg)});L($,\"onfocus\",function(){U($.initcfg)})}},hide:function(){P(this.dd,\"none\")},attachEvent:E};for(var _ in A)V.$dp[_]=A[_];$dp=V.$dp}function E(B,_,A,$){if(B.addEventListener){var C=_.replace(/on/,\"\");A._ieEmuEventHandler=function($){return A($)};B.addEventListener(C,A._ieEmuEventHandler,$)}else B.attachEvent(_,A)}function L(A,$,_){if(A.removeEventListener){var B=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){return _($)};A.removeEventListener(B,_._ieEmuEventHandler,false)}else A.detachEvent($,_)}function a(_,$,A){if(typeof _!=typeof $)return false;if(typeof _==\"object\"){if(!A)for(var B in _){if(typeof $[B]==\"undefined\")return false;if(!a(_[B],$[B],true))return false}return true}else if(typeof _==\"function\"&&typeof $==\"function\")return _.toString()==$.toString();else return _==$}function J(){var _,A,$=Y[N][C](\"script\");for(var B=0;B<$.length;B++){_=$[B].getAttribute(\"src\")||\"\";_=_.substr(0,_.toLowerCase().indexOf(\"wdatepicker.js\"));A=_.lastIndexOf(\"/\");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function K(A,$,B){var D=Y[N][C](\"HEAD\").item(0),_=Y[N].createElement(\"link\");if(D){_.href=A;_.rel=\"stylesheet\";_.type=\"text/css\";if($)_.title=$;if(B)_.charset=B;D.appendChild(_)}}function F($){$=$||V;var A=0,_=0;while($!=V){var D=$.parent[N][C](\"iframe\");for(var F=0;F<D.length;F++){try{if(D[F].contentWindow==$){var E=W(D[F]);A+=E.left;_+=E.top;break}}catch(B){}}$=$.parent}return{\"leftM\":A,\"topM\":_}}function W(G,F){if(G.getBoundingClientRect)return G.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},E=false,I=null,_=G.offsetTop,H=G.offsetLeft,D=G.offsetWidth,B=G.offsetHeight,C=G.offsetParent;if(C!=G)while(C){H+=C.offsetLeft;_+=C.offsetTop;if(R(C,\"position\").toLowerCase()==\"fixed\")E=true;else if(C.tagName.toLowerCase()==\"body\")I=C.ownerDocument.defaultView;C=C.offsetParent}C=G.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(P(C)))if(!c||C.style.overflow!==\"visible\"){H-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}if(!E){var $=b(I);H-=$.left;_-=$.top}D+=H;B+=_;return{\"left\":H,\"top\":_,\"right\":D,\"bottom\":B}}}function M($){$=$||V;var B=$[N],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H].clientWidth)?B[H].clientWidth:B.body.offsetWidth,_=($.innerHeight)?$.innerHeight:(B[H]&&B[H].clientHeight)?B[H].clientHeight:B.body.offsetHeight;return{\"width\":A,\"height\":_}}function b($){$=$||V;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function D($){try{var _=$?($.srcElement||$.target):null;if($dp.cal&&!$dp.eCont&&$dp.dd&&_!=$dp.el&&$dp.dd.style.display==\"block\")$dp.cal.close()}catch($){}}function Z(){$dp.status=2}var Q,_;function U(K,C){if(!$dp)return;B();var L={};for(var H in K)L[H]=K[H];for(H in $)if(H.substring(0,1)!=\"$\"&&L[H]===undefined)L[H]=$[H];if(C){if(!J()){_=_||setInterval(function(){if(V[N].readyState==\"complete\")clearInterval(_);U(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=T;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=T;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var F=D();if(Y.event===F||F){L.srcEl=F.srcElement||F.target;F.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el[\"My97Mark\"]===true||L.el.disabled||($dp.dd&&P($dp.dd)!=\"none\"&&$dp.dd.style.left!=\"-970px\")){try{if(L.el[\"My97Mark\"])L.el[\"My97Mark\"]=false}catch(A){}return}if(F&&L.el.nodeType==1&&!a(L.el.initcfg,K)){$dp.unbind(L.el);E(L.el,F.type==\"focus\"?\"onclick\":\"onfocus\",function(){U(K)});L.el.initcfg=K}I(L)}function J(){if(S&&V!=Y&&V[N].readyState!=\"complete\")return false;return true}function D(){if(G){func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+\"\").indexOf(\"Event\")>=0)return $;func=func.caller}return null}return event}}function R(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function P(_,$){if(_)if($!=null)_.style.display=$;else return R(_,\"display\")}function I(G,_){var D=G.el?G.el.nodeName:\"INPUT\";if(_||G.eCont||new RegExp(/input|textarea|div|span|p|a/ig).test(D))G.elProp=D==\"INPUT\"?\"value\":\"innerHTML\";else return;if(G.lang==\"auto\")G.lang=S?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!G.eCont)for(var C in G)$dp[C]=G[C];if(!$dp.dd||G.eCont||($dp.dd&&(G.getRealLang().name!=$dp.dd.lang||G.skin!=$dp.dd.skin))){if(G.eCont)E(G.eCont,G);else{$dp.dd=V[N].createElement(\"DIV\");$dp.dd.style.cssText=\"position:absolute\";V[N].body.appendChild($dp.dd);E($dp.dd,G);if(_)$dp.dd.style.left=$dp.dd.style.top=\"-970px\";else{$dp.show();B($dp)}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)B($dp)}function E(K,J){var I=V[N].domain,F=false,G=\"<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src=\\\"about:blank\\\"></iframe>\";K.innerHTML=G;var _=$.$langList,D=$.$skinList,H;try{H=K.lastChild.contentWindow[N]}catch(E){F=true;K.removeChild(K.lastChild);var L=V[N].createElement(\"iframe\");L.hideFocus=true;L.frameBorder=0;L.scrolling=\"no\";L.src=\"javascript:(function(){var d=document;d.open();d.domain='\"+I+\"';})()\";K.appendChild(L);setTimeout(function(){H=K.lastChild.contentWindow[N];C()},97);return}C();function C(){var _=J.getRealLang();K.lang=_.name;K.skin=J.skin;var $=[\"<head><script>\",\"\",\"var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\",\"if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}\",\"doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};\",\"</script><script src=\",A,\"lang/\",_.name,\".js charset=\",_.charset,\"></script>\"];if(F)$[1]=\"document.domain=\\\"\"+I+\"\\\";\";for(var C=0;C<D.length;C++)if(D[C].name==J.skin)$.push(\"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\"+A+\"skin/\"+D[C].name+\"/datepicker.css\\\" charset=\\\"\"+D[C].charset+\"\\\"/>\");$.push(\"<script src=\\\"\"+A+\"calendar.js\\\"></script>\");$.push(\"</head><body leftmargin=\\\"0\\\" topmargin=\\\"0\\\" tabindex=0></body></html>\");$.push(\"<script>var t;t=t||setInterval(function(){if(doc.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>\");J.setPos=B;J.onload=Z;H.write(\"<html>\");H.cfg=J;H.write($.join(\"\"));H.close()}}function B(J){var H=J.position.left,C=J.position.top,D=J.el;if(D==T)return;if(D!=J.srcEl&&(P(D)==\"none\"||D.type==\"hidden\"))D=J.srcEl;var I=W(D),$=F(Y),E=M(V),B=b(V),G=$dp.dd.offsetHeight,A=$dp.dd.offsetWidth;if(isNaN(C))C=0;if(($.topM+I.bottom+G>E.height)&&($.topM+I.top-G>0))C+=B.top+$.topM+I.top-G-2;else{C+=B.top+$.topM+I.bottom;var _=C-B.top+G-E.height;if(_>0)C-=_}if(isNaN(H))H=0;H+=B.left+Math.min($.leftM+I.left,E.width-A-5)-(S?2:0);J.dd.style.top=C+\"px\";J.dd.style.left=H+\"px\"}}})()"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.4'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.4'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.4'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.4'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.4'\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--                        // up\n    if (e.which == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.4'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.4'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (self && self.$tip && self.$tip.is(':visible')) {\n      self.hoverState = 'in'\n      return\n    }\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()\n        var containerDim = this.getPosition($container)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    return (this.$tip = this.$tip || $(this.options.template))\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.4'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.4'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.VERSION = '3.3.4'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.4'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = $(document.body).height()\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/calendar.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('l($4o.44){$f={};1b(q p 4r $2s)l(6p $2s[p]==\"6o\"){$f[p]={};1b(q 4G 4r $2s[p])$f[p][4G]=$2s[p][4G]}t $f[p]=$2s[p]}t $f=$2s;1b(p 4r $4o)$f[p]=$4o[p];q $c;l($69){6x.3J.7l(\"6U\",n($){l(!$)h.2m();u $});6x.3J.7k(\"5I\",n(){q $=h.5B;36($.5t!=1)$=$.7b;u $})}n 5C(){$c=h;h.3n=[];$d=1L.7i(\"z\");$d.1e=\"4P\";$d.1M=\"<z 1G=7s><z Y=\\\\\"3W 7p\\\\\"><a></a></z><z Y=\\\\\"3W 7r\\\\\"><a></a></z><z 1d=\\\\\"3q:2E\\\\\"><z Y=\\\\\"2T 7q\\\\\"></z><1z Y=47></z><z 1d=\\\\\"3q:2E\\\\\"><z Y=\\\\\"2T 76\\\\\"></z><1z Y=47></z><z Y=\\\\\"3W 78\\\\\"><a></a></z><z Y=\\\\\"3W 7x\\\\\"><a></a></z><z 1d=\\\\\"3q:62\\\\\"></z></z><z 1d=\\\\\"80:7W;7S:6q\\\\\"></z><z></z><z 1G=7V><z Y=\\\\\"2T 7U\\\\\"></z><z Y=\\\\\"2T 81\\\\\"></z><z Y=\\\\\"2T 87\\\\\"></z><1x 2q=0 2o=0 2C=0><1j><19 8a=2><4w 1G=89></4w>&42;<1z Y=83 4s=2><1z 1i=\\\\\":\\\\\" Y=6K 6t><1z Y=6u 4s=2><1z 1i=\\\\\":\\\\\" Y=6K 6t><1z Y=6u 4s=2></19><19><1S 1G=7R></1S></19></1j><1j><19><1S 1G=7E></1S></19></1j></1x></z><z 1G=7F></z><z 1G=7C><1z Y=4v 1G=7y 3k=1S><1z Y=4v 1G=7N 3k=1S><1z Y=4v 1G=7K 3k=1S></z>\";71($d,n(){3x()});A();h.5D();$f.1X=[1L,$d.1P,$d.1y,$d.2w,$d.3a,$d.2r,$d.2V,$d.2j,$d.1U];1b(q B=0;B<$f.1X.x;B++){q b=$f.1X[B];b.3e=B==$f.1X.x-1?$f.1X[1]:$f.1X[B+1];$f.3A(b,\"4k\",5a)}$();55(\"y,M,H,m,s\");$d.72.1s=n(){5g(1)};$d.75.1s=n(){5g(-1)};$d.4y.1s=n(){l($d.1H.1d.2a!=\"6G\"){$c.4Q();3G($d.1H)}t 1o($d.1H)};1L.6R.4O($d);n A(){q b=$(\"a\");1q=$(\"z\"),1J=$(\"1z\"),4t=$(\"1S\"),5G=$(\"4w\");$d.3M=b[0];$d.3K=b[1];$d.3L=b[3];$d.3N=b[2];$d.4b=1q[9];$d.1P=1J[0];$d.1y=1J[1];$d.4A=1q[0];$d.4f=1q[4];$d.2R=1q[6];$d.1H=1q[10];$d.2Z=1q[11];$d.34=1q[12];$d.5N=1q[13];$d.6P=1q[14];$d.73=1q[15];$d.4y=1q[16];$d.4e=1q[17];$d.2w=1J[2];$d.3a=1J[4];$d.2r=1J[6];$d.2V=1J[7];$d.2j=1J[8];$d.1U=1J[9];$d.72=4t[0];$d.75=4t[1];$d.5L=5G[0];n $($){u $d.74($)}}n $(){$d.3M.1s=n(){$1O=$1O<=0?$1O-1:-1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y-1;$d.1y.2x()};$d.3K.1s=n(){$o.1V(\"M\",-1);$d.1P.2x()};$d.3L.1s=n(){$o.1V(\"M\",1);$d.1P.2x()};$d.3N.1s=n(){$1O=$1O>=0?$1O+1:1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y+1;$d.1y.2x()}}}5C.3J={5D:n(){$1O=0;$f.5b=h;l($f.3S&&$f.Z.3S!=1h){$f.Z.3S=1c;$f.Z.4M()}h.4q();$o=h.4D=1a 1D();$1C=1a 1D();$1v=h.2B=1a 1D();$f.2N=0;h.1B=h.2P($f.1B);h.2X=$f.2X==1h?($f.18.2g&&$f.18.2g?1p:1c):$f.2X;$f.3y=$f.3y==1h?($f.4z&&$f.18.d?1p:1c):$f.3y;h.4m=h.35(\"7L\");h.6m=h.35(\"7I\");h.6d=h.35(\"7J\");h.5s=h.35(\"7M\");h.20=h.3I($f.20,$f.20!=$f.5J?$f.1T:$f.2F,$f.5J);h.1Z=h.3I($f.1Z,$f.1Z!=$f.5M?$f.1T:$f.2F,$f.5M);l(h.20.2z(h.1Z)>0)$f.4u=$1l.7Q;l(h.25()){h.5y();h.3j=$f.Z[$f.1E]}t h.3p(1p,2);3H($o);$d.5L.1M=$1l.7O;$d.2V.1i=$1l.7H;$d.2j.1i=$1l.7A;$d.1U.1i=$1l.7B;$d.1U.2e=!$c.1A($1v);h.6l();h.6V();l($f.4u)7z($f.4u);h.4B();l($f.Z.5t==1&&$f.Z[\"3V\"]===4p){$f.3A($f.Z,\"4k\",5a);$f.3A($f.Z,\"2x\",n(){l($f&&$f.1K.1d.2a==\"2u\"){$c.3c();l(!$f.2N&&$f.5b.3j!=$f.Z[$f.1E]&&$f.Z.7G)5l($f.Z,\"7D\")}});$f.Z[\"3V\"]=1p}$c.1k=$f.Z;3x()},5y:n(){q b=h.2S();l(b!=0){q $;l(b>0)$=h.1Z;t $=h.20;l($f.18.3Y){$o.y=$.y;$o.M=$.M;$o.d=$.d}l($f.18.2g){$o.H=$.H;$o.m=$.m;$o.s=$.s}}},3h:n(K,C,R,F,B,H,G,L,M){q $;l(K&&K.25)$=K;t{$=1a 1D();l(K!=\"\"){C=C||$f.1B;q I,D,Q=0,P,A=/3i|2H|3l|y|2I|3o|3R|M|1K|d|%2l|53|H|4V|m|4U|s|3u|D|4T|W|w/g,b=C.2J(A);A.2t=0;l(M)P=K.4c(/\\\\W+/);t{q E=0,N=\"^\";36((P=A.2U(C))!==1h){l(E>=0){D=C.1F(E,P.3Z);l(D&&\"-/\\\\\\\\\".1n(D)>=0)D=\"[\\\\\\\\-/]\";N+=D}E=A.2t;2Y(P[0]){1f\"3i\":N+=\"(\\\\\\\\d{4})\";1g;1f\"2H\":N+=\"(\\\\\\\\d{3})\";1g;1f\"2I\":1f\"3o\":1f\"3u\":1f\"D\":N+=\"(\\\\\\\\D+)\";1g;5v:N+=\"(\\\\\\\\d\\\\\\\\d?)\";1g}}N+=\".*$\";P=1a 3v(N).2U(K);Q=1}l(P){1b(I=0;I<b.x;I++){q J=P[I+Q];l(J)2Y(b[I]){1f\"2I\":1f\"3o\":$.M=O(b[I],J);1g;1f\"y\":1f\"3l\":J=3z(J,0);l(J<50)J+=5z;t J+=84;$.y=J;1g;1f\"2H\":$.y=3z(J,0)+$f.5w;1g;5v:$[b[I].4X(-1)]=J;1g}}}t $.d=32}}$.6Y(R,F,B,H,G,L);u $;n O(A,$){q b=A==\"2I\"?$1l.5u:$1l.2k;1b(q B=0;B<12;B++)l(b[B].3C()==$.5O(0,b[B].x).3C())u B+1;u-1}},35:n(b){q B,$=$f[b],A=\"\";l($&&$.x>0){1b(B=0;B<$.x;B++){A+=h.2P($[B]);l(B!=$.x-1)A+=\"|\"}A=A?1a 3v(\"(?:\"+A+\")\"):1h}t A=1h;u A},3d:n($){l($===4p)$=h.4F();l($f.Z[$f.1E]!=$)$f.Z[$f.1E]=$;h.4l()},4l:n($){q b=$f.$($f.86),$=3r($,h.4F($f.1T));l(b)b.1i=$;$f.Z[\"3E\"]=$},2P:n(s){q 3T=\"3m\",1r,2v,6n=/#?\\\\{(.*?)\\\\}/;s=s+\"\";1b(q i=0;i<3T.x;i++)s=s.1m(\"%\"+3T.1Q(i),h.1W(3T.1Q(i),1h,$1C));l(s.1F(0,3)==\"#F{\"){s=s.1F(3,s.x-1);l(s.1n(\"u \")<0)s=\"u \"+s;s=$f.51.4d(\"1a 88(\\\\\"\"+s+\"\\\\\");\");s=s()}36((1r=6n.2U(s))!=1h){1r.2t=1r.3Z+1r[1].x+1r[0].x-1r[1].x-1;2v=2n(4d(1r[1]));l(2v<0)2v=\"2f\"+(-2v);s=s.1F(0,1r.3Z)+2v+s.1F(1r.2t+1)}u s},3I:n(A,B,b){q $;A=h.2P(A);l(!A||A==\"\")A=b;l(6p A==\"6o\")$=A;t{$=h.3h(A,B,1h,1h,1,0,0,0,1c);$.y=(\"\"+$.y).1m(/^2f/,\"-\");$.M=(\"\"+$.M).1m(/^2f/,\"-\");$.d=(\"\"+$.d).1m(/^2f/,\"-\");$.H=(\"\"+$.H).1m(/^2f/,\"-\");$.m=(\"\"+$.m).1m(/^2f/,\"-\");$.s=(\"\"+$.s).1m(/^2f/,\"-\");l(A.1n(\"%2l\")>=0){A=A.1m(/%2l/g,\"0\");$.d=0;$.M=2n($.M)+1}$.1Y()}u $},25:n(){q A=$f.Z[$f.1E],$=h.1B,b=$f.18;l($f.7T||($f.6j!=\"\"&&A==\"\")){A=h.2P($f.6j);$=$f.1T}$o.2h(h.3h(A,$));l(A!=\"\"){q B=1;l(b.3Y&&!h.4n($o)){$o.y=$1C.y;$o.M=$1C.M;$o.d=$1C.d;B=0}l(b.2g&&!h.4h($o)){$o.H=$1C.H;$o.m=$1C.m;$o.s=$1C.s;B=0}u B&&h.1A($o)}l(!b.H)$o.H=0;l(!b.m)$o.m=0;l(!b.s)$o.s=0;u 1},4n:n($){l($.y!=1h)$=2W($.y,4)+\"-\"+$.M+\"-\"+$.d;u $.2J(/^((\\\\d{2}(([6i][7Z])|([5V][26]))[\\\\-\\\\/\\\\s]?((((0?[5S])|(1[5R]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])))))|(\\\\d{2}(([6i][7X])|([5V][7Y]))[\\\\-\\\\/\\\\s]?((((0?[5S])|(1[5R]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\\\s(((0?[0-9])|([1-2][0-3]))\\\\:([0-5]?[0-9])((\\\\s)|(\\\\:([0-5]?[0-9])))))?$/)},4h:n($){l($.H!=1h)$=$.H+\":\"+$.m+\":\"+$.s;u $.2J(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},2S:n($,A){$=$||$o;q b=$.2z(h.20,A);l(b>0){b=$.2z(h.1Z,A);l(b<0)b=0}u b},1A:n($,A,B){A=A||$f.18.43;q b=h.2S($,A);l(b==0){b=1;l(A==\"d\"&&B==1h)B=1I.5T((1a 1u($.y,$.M-1,$.d).1N()-$f.3U+7)%7);b=!h.5W(B)&&!h.5U($,A)}t b=0;u b},65:n(){q b=$f.Z,A=h,$=$f.Z[$f.1E];l($f.3O>=0&&$f.3O<=2&&$!=1h){l($!=\"\")A.2B.2h(A.3h($,$f.1B));l($==\"\"||(A.4n(A.2B)&&A.4h(A.2B)&&A.1A(A.2B))){l($!=\"\"){A.4D.2h(A.2B);A.3d()}t A.4l(\"\")}t u 1p}u 1c},3c:n($){3x();l(h.65()){h.3p(1c);$f.1o()}t{l($){2O($);h.3p(1p,2)}t h.3p(1p);$f.21()}},4a:n(){q E,C,D,K,A,H=1a 2A(),F=$1l.6e,G=$f.3U,I=\"\",$=\"\",b=1a 1D($o.y,$o.M,$o.d,2,0,0),J=b.y,B=b.M;A=1-1a 1u(J,B-1,1).1N()+G;l(A>1)A-=7;H.a(\"<1x Y=64 33=3s% 2C=0 2q=0 2o=0>\");H.a(\"<1j Y=61 4R=5H>\");l($f.63)H.a(\"<19>\"+F[0]+\"</19>\");1b(E=0;E<7;E++)H.a(\"<19>\"+F[(G+E)%7+1]+\"</19>\");H.a(\"</1j>\");1b(E=1,C=A;E<7;E++){H.a(\"<1j>\");1b(D=0;D<7;D++){b.25(J,B,C++);b.1Y();l(b.M==B){K=1c;l(b.2z($1v,\"d\")==0)I=\"7e\";t l(b.2z($1C,\"d\")==0)I=\"7d\";t I=($f.67&&(0==(G+D)%7||6==(G+D)%7)?\"7a\":\"77\");$=($f.67&&(0==(G+D)%7||6==(G+D)%7)?\"7o\":\"7v\")}t l($f.5A){K=1c;I=\"7t\";$=\"7h\"}t K=1p;l($f.63&&D==0&&(E<4||K))H.a(\"<19 Y=7f>\"+4E(b,$f.3U==0?1:0)+\"</19>\");H.a(\"<19 \");l(K){l(h.1A(b,\"d\",D)){l(h.5r(1I.5T((1a 1u(b.y,b.M-1,b.d).1N()-$f.3U+7)%7))||h.6c(b))I=\"7j\";H.a(\"1s=\\\\\"3b(\"+b.y+\",\"+b.M+\",\"+b.d+\");\\\\\" \");H.a(\"2G=\\\\\"h.1e=\\'\"+$+\"\\'\\\\\" \");H.a(\"2D=\\\\\"h.1e=\\'\"+I+\"\\'\\\\\" \")}t I=\"7m\";H.a(\"Y=\"+I);H.a(\">\"+b.d+\"</19>\")}t H.a(\"></19>\")}H.a(\"</1j>\")}H.a(\"</1x>\");u H.j()},5U:n(b,A){q $=h.4j(b,h.4m,A);u(h.4m&&$f.4x)?!$:$},5W:n($){u h.4i($,h.6m)},6c:n($){u h.4j($,h.6d)},5r:n($){u h.4i($,h.5s)},4j:n($,C,A){q b=A==\"d\"?$f.4N:$f.1T;l(A==\"d\"&&$f.18.d&&$f.4x){C=(C+\"\").1m(/^\\\\/\\\\(\\\\?:(.*)\\\\)\\\\/.*/,\"$1\");q B=C.1n($f.5X);l(B>=0)C=C.5O(0,B);C=1a 3v(C)}u C?C.52(h.3P(b,$)):0},4i:n(b,$){u $?$.52(b):0},3f:n(p,2Q,c,r,e,1R){q s=1a 2A(),4L=1R?\"r\"+p:p;l(1R)$o.1V(\"M\",1);5E=$o[p];s.a(\"<1x 2q=0 2o=3 2C=0\");1b(q i=0;i<r;i++){s.a(\"<1j 2K=\\\\\"2K\\\\\">\");1b(q j=0;j<c;j++){s.a(\"<19 2K \");$o[p]=4d(e);l($o[p]>2Q)s.a(\"Y=\\'1w\\'\");t l(h.1A($o,p)||($f.4x&&\"4Z\".1n(p)==-1&&h.2S($o,p)==0)){s.a(\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\\\\"\");s.a(\"1o($d.\"+p+\"D);$d.\"+4L+\"I.1i=\"+$o[p]+\";$d.\"+4L+\"I.4M();\\\\\"\")}t s.a(\"Y=\\'4I\\'\");s.a(\">\");l($o[p]<=2Q)s.a(p==\"M\"?$1l.2k[$o[p]-1]:$o[p]);s.a(\"</19>\")}s.a(\"</1j>\")}s.a(\"</1x>\");$o[p]=5E;l(1R)$o.1V(\"M\",-1);u s.j()},4J:n($,b){l($){q A=$.4S;l($6B)A=$.7g().2E;b.1d.2E=A}},7u:n($){h.4J($,$d.4f);$d.4f.1M=h.3f(\"M\",12,2,6,\"i+j*6+1\",$==$d.2c)},4K:n(b,B,A){q $=1a 2A();A=A||b==$d.2y;B=3r(B,$o.y-5);$.a(h.3f(\"y\",7w,2,5,B+\"+i+j*5\",A));$.a(\"<1x 2q=0 2o=3 2C=0 4R=5H><1j><19 \");$.a(h.20.y<B?\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\'l(2d.2m)2d.2m();2d.5e=1c;$c.4K(0,\"+(B-10)+\",\"+A+\")\\'\":\"Y=\\'4I\\'\");$.a(\">\\\\79</19><19 Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\\\\"1o($d.2R);$d.1y.4M();\\\\\">\\\\7c</19><19 \");$.a(h.1Z.y>=B+10?\"Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 3X=\\'l(2d.2m)2d.2m();2d.5e=1c;$c.4K(0,\"+(B+10)+\",\"+A+\")\\'\":\"Y=\\'4I\\'\");$.a(\">\\\\8Y</19></1j></1x>\");h.4J(b,$d.2R);$d.2R.1M=$.j()},41:n(A,$){q B=$f.6Z[A],C=B[0],b=B[1];$d[A+\"D\"].1M=h.3f(A,$-1,b,1I.6C($/C/b),\"i*\"+b+\"*\"+C+\"+j*\"+C)},8U:n(){h.41(\"H\",24)},92:n(){h.41(\"m\",60)},8O:n(){h.41(\"s\",60)},4Q:n(C,A){h.6y();q $=A?[\">a/<8K\",\"8L 8S\",\"M>8T=8R \\\\\"8P:9e\\\\\"=9g \\\\\"9c.95.w\",\"98//:99\\\\\"=94 a<\"].4H(\"\").4c(\"\").9d().4H(\"\"):$1l.9b,B=h.3n,E=B.1d,b=1a 2A();b.a(\"<1x Y=64 33=3s% 2i=3s% 2C=0 2q=0 2o=0>\");b.a(\"<1j Y=61><19><z 1d=\\\\\"3q:2E\\\\\">\"+$+\"</z>\");l(!C)b.a(\"<z 1d=\\\\\"3q:62;9f:8m\\\\\" 1s=\\\\\"1o($d.1H);\\\\\">X&42;</z>\");b.a(\"</19></1j>\");1b(q D=0;D<B.x;D++)l(B[D]){b.a(\"<1j><19 1d=\\'5m-4R:2E\\' 2K=\\'2K\\' Y=\\'1w\\' 2G=\\\\\"h.1e=\\'2M\\'\\\\\" 2D=\\\\\"h.1e=\\'1w\\'\\\\\" 1s=\\\\\"\");b.a(\"3b(\"+B[D].y+\", \"+B[D].M+\", \"+B[D].d+\",\"+B[D].H+\",\"+B[D].m+\",\"+B[D].s+\");\\\\\">\");b.a(\"&42;\"+h.3P(1h,B[D]));b.a(\"</19></1j>\")}t b.a(\"<1j><19 Y=\\'1w\\'>&42;</19></1j>\");b.a(\"</1x>\");$d.1H.1M=b.j()},4q:n(){b(/w/);b(/4T|W/);b(/3u|D/);b(/3i|2H|3l|y/);b(/2I|3o|3R|M/);b(/1K|d/);b(/53|H/);b(/4V|m/);b(/4U|s/);$f.18.3Y=($f.18.y||$f.18.M||$f.18.d)?1c:1p;$f.18.2g=($f.18.H||$f.18.m||$f.18.s)?1c:1p;q $=$f.2F.2J(/%1u(.*)%5Y/);$f.5X=$?$[1]:\" \";$f.2F=$f.2F.1m(/%1u/,$f.4N).1m(/%5Y/,$f.6k);l($f.18.3Y){l($f.18.2g)$f.1T=$f.2F;t $f.1T=$f.4N}t $f.1T=$f.6k;n b(b){q $=(b+\"\").4X(1,2);$f.18[$]=b.2U($f.1B)?($f.18.43=$,1c):1p}},6l:n(){q $=0;$f.18.y?($=1,21($d.1y,$d.3M,$d.3N)):1o($d.1y,$d.3M,$d.3N);$f.18.M?($=1,21($d.1P,$d.3K,$d.3L)):1o($d.1P,$d.3K,$d.3L);$?21($d.4A):1o($d.4A);l($f.18.2g){21($d.34);3D($d.2w,$f.18.H);3D($d.3a,$f.18.m);3D($d.2r,$f.18.s)}t 1o($d.34);3g($d.2V,$f.6h);3g($d.2j,$f.6b);3g($d.1U,$f.4z);3g($d.4y,!$f.5q&&$f.18.d&&$f.8f);l($f.44||!($f.6h||$f.6b||$f.4z))1o($d.4e);t 21($d.4e)},3p:n(B,D){q A=$f.Z,b=$69?\"Y\":\"1e\";l($f.3O==-1)u;t l(B)C(A);t{l(D==1h)D=$f.3O;2Y(D){1f 0:l(8s($1l.8E)){A[$f.1E]=h.3j||\"\";C(A)}t $(A);1g;1f 1:A[$f.1E]=h.3j||\"\";C(A);1g;1f 2:$(A);1g}}n C(A){q B=A.1e;l(B){q $=B.1m(/6g/g,\"\");l(B!=$)A.6f(b,$)}}n $($){$.6f(b,$.1e+\" 6g\")}},1W:n(D,b,$){$=$||$1v;q H,C=[D+D,D],E,A=$[D],F=n($){u 2W(A,$.x)};2Y(D){1f\"w\":A=1N($);1g;1f\"D\":q G=1N($)+1;F=n($){u $.x==2?$1l.8F[G]:$1l.6e[G]};1g;1f\"W\":A=4E($);1g;1f\"y\":C=[\"3i\",\"2H\",\"3l\",\"y\"];b=b||C[0];F=n(b){u 2W((b.x<4)?(b.x<3?$.y%3s:($.y+5z-$f.5w)%8D):A,b.x)};1g;1f\"M\":C=[\"2I\",\"3o\",\"3R\",\"M\"];F=n($){u($.x==4)?$1l.5u[A-1]:($.x==3)?$1l.2k[A-1]:2W(A,$.x)};1g}b=b||D+D;l(\"3m\".1n(D)>-1&&D!=\"y\"&&!$f.18[D])l(\"4Z\".1n(D)>-1)A=0;t A=1;q B=[];1b(H=0;H<C.x;H++){E=C[H];l(b.1n(E)>=0){B[H]=F(E);b=b.1m(1a 3v(E,\"g\"),\"{\"+H+\"}\")}}1b(H=0;H<B.x;H++)b=b.1m(1a 3v(\"\\\\\\\\{\"+H+\"\\\\\\\\}\",\"g\"),B[H]);u b},3P:n(b,$){$=$||h.3h($f.Z[$f.1E],h.1B)||$1v;b=b||h.1B;l(b.1n(\"%2l\")>=0){q A=1a 1D();A.2h($);A.d=0;A.M=2n(A.M)+1;A.1Y();b=b.1m(/%2l/g,A.d)}q B=\"8J\";1b(q D=0;D<B.x;D++){q C=B.1Q(D);b=h.1W(C,b,$)}l(b.1n(\"D\")>=0){b=b.1m(/3u/g,\"%1K\").1m(/D/g,\"%d\");b=h.1W(\"M\",b,$);b=b.1m(/\\\\%1K/g,h.1W(\"D\",\"3u\")).1m(/\\\\%d/g,h.1W(\"D\",\"D\"))}t b=h.1W(\"M\",b,$);u b},8H:n(b,$){u h.1W(b,$,$o)},4F:n($){u h.3P($,h.4D)},4B:n(){$c.4q();$d.4b.1M=\"\";l($f.5q){$c.2X=1c;$f.5A=1p;$d.1e=\"4P 8v\";q $=1a 2A();$.a(\"<1x Y=8t 33=3s% 2q=0 2o=0 2C=1><1j><19 5K=5P>\");$.a(h.4a());$.a(\"</19><19 5K=5P>\");$o.1V(\"M\",1);$.a(h.4a());$d.2c=$d.1P.5Q(1c);$d.2y=$d.1y.5Q(1c);$d.4b.4O($d.2c);$d.4b.4O($d.2y);$d.2c.1i=$1l.2k[$o.M-1];$d.2c[\"3E\"]=$o.M;$d.2y.1i=$o.y;55(\"6L,6M\");$d.2c.1e=$d.2y.1e=\"47\";$o.1V(\"M\",-1);$.a(\"</19></1j></1x>\");$d.2Z.1M=$.j()}t{$d.1e=\"4P\";$d.2Z.1M=h.4a()}l(!$f.18.d||$f.8x){h.4Q(1c);3G($d.1H)}t 1o($d.1H);h.5F()},5F:n(){q b=8A.1L.74(\"8z\");1b(q C=0;C<b.x;C++){q $=$d.1d.2i;$d.1d.2i=\"\";q A=$d.2p;l(b[C].8u==8w&&A){b[C].1d.33=$d.4W+\"6W\";q B=$d.34.2p;l(B&&$d.4e.1d.2a==\"2u\"&&$d.34.1d.2a!=\"2u\"&&1L.6R.8I-A>=B){A+=B;$d.1d.2i=A}t $d.1d.2i=$;b[C].1d.2i=1I.2Q(A,$d.2p)+\"6W\"}}$d.1H.1d.33=$d.2Z.4W;$d.1H.1d.2i=$d.2Z.2p},5c:n(){$o.d=1I.6J(1a 1u($o.y,$o.M,0).3t(),$o.d);$1v.2h($o);$f.2N=0;h.3d();l(!$f.44)l(h.1A($o)){4C();1o($f.1K)}l($f.6T)2b(\"6T\")},6V:n(){$d.2V.1s=n(){l(!2b(\"8i\")){$f.2N=0;$c.3d(\"\");4C();1o($f.1K);l($f.6Q)2b(\"6Q\")}};$d.1U.1s=n(){3b()};l(h.1A($1C)){$d.2j.2e=1p;$d.2j.1s=n(){$o.2h($1C);3b()}}t $d.2j.2e=1c},6y:n(){q H,G,A,F,C=[],$=5,E=$f.6z.x,b=$f.18.43;l(E>$)E=$;t l(b==\"m\"||b==\"s\")C=[-60,-30,0,30,60,-15,15,-45,45];t 1b(H=0;H<$+9;H++)C[H]=$o[b]-2+H;1b(H=G=0;H<E;H++){A=h.3I($f.6z[H]);l(h.1A(A))h.3n[G++]=A}q B=\"3m\",D=[1,1,1,0,0,0];1b(H=0;H<=B.1n(b);H++)D[H]=$o[B.1Q(H)];1b(H=0;G<$;H++)l(H<C.x){A=1a 1D(D[0],D[1],D[2],D[3],D[4],D[5]);A[b]=C[H];A.1Y();l(h.1A(A))h.3n[G++]=A}t h.3n[G++]=1h}};n 4C(){q b=$f.Z;6F{l(b.1d.2a!=\"2u\"&&b.3k!=\"6q\"&&(b.6v.3C()==\"1z\"||b.6v.3C()==\"8d\")){b[\"3V\"]=1c;b.22()}}6s($){}8j(n(){b[\"3V\"]=1p},8p)}n 2A(){h.s=1a 8o();h.i=0;h.a=n($){h.s[h.i++]=$};h.j=n(){u h.s.4H(\"\")}}n 4E($,C){C=C||0;q A=1a 1u($.y,$.M-1,$.d+C);l($f.8X==\"8q\"){A.6N(A.3t()-(A.1N()+6)%7+3);q B=A.3F();A.8l(0);A.6N(4);u 1I.6E((B-A.3F())/(7*6D))+1}t{q b=1a 1u($.y,0,1);A=1I.6E((A.3F()-b.3F())/6D);u 1I.6C((A+(b.1N()+1))/7)}}n 1N($){q b=1a 1u($.y,$.M-1,$.d);u b.1N()}n 21(){3w(2L,\"\")}n 3G(){3w(2L,\"6G\")}n 1o(){3w(2L,\"2u\")}n 3w(b,$){1b(i=0;i<b.x;i++)b[i].1d.2a=$}n 3g(b,$){$?21(b):1o(b)}n 3D(b,$){l($)b.2e=1p;t{b.2e=1c;b.1i=\"8n\"}}n c(b,A){q $=A;l(b==\"M\")$=3B(A,1,12);t l(b==\"H\")$=3B(A,0,23);t l(\"68\".1n(b)>=0)$=3B(A,0,59);l(A==$+1)$=$1v[b];l($1v[b]!=$&&!2b(b+\"9a\")){q B=$c.2S();l(B==0)28(b,$);t l(B<0)3H($c.20);t l(B>0)3H($c.1Z);$d.1U.2e=!$c.1A($1v);l(\"8M\".1n(b)>=0)$c.4B();2b(b+\"90\")}}n 3H($){28(\"y\",$.y);28(\"M\",$.M);28(\"d\",$.d);28(\"H\",$.H);28(\"m\",$.m);28(\"s\",$.s)}n 3b(F,B,b,D,C,A){q $=1a 1D($o.y,$o.M,$o.d,$o.H,$o.m,$o.s);$o.25(F,B,b,D,C,A);l(!2b(\"93\")){q E=$.y==F&&$.M==B&&$.d==b;l(!E&&2L.x!=0){c(\"y\",F);c(\"M\",B);c(\"d\",b);$c.1k=$f.Z;49()}l($c.2X||E||2L.x==0)$c.5c()}t $o=$}n 49(){l($f.3y){$c.3d();$f.Z.22()}}n 2b($){q b;l($f[$])b=$f[$].5d($f.Z,$f);u b}n 28(b,$){l($==1h)$=$o[b];$1v[b]=$o[b]=$;l(\"8W\".1n(b)>=0)$d[b+\"I\"].1i=$;l(b==\"M\"){$d.1P[\"3E\"]=$;$d.1P.1i=$1l.2k[$-1]}}n 3B(b,$,A){l(b<$)b=$;t l(b>A)b=A;u b}n 71($,b){$f.3A($,\"4k\",n($){$=$||2d,k=($.56==4p)?$.54:$.56;l(k==9)b()})}n 2W($,b){$=$+\"\";36($.x<b)$=\"0\"+$;u $}n 3x(){1o($d.2R,$d.4f,$d.5N,$d.6P,$d.73)}n 5g(b){q A=$c.1k,$=$f.6Z;l(A!=$d.2w&&A!=$d.3a&&A!=$d.2r)A=$d.2w;2Y(A){1f $d.2w:c(\"H\",$o.H+b*$.H[0]);1g;1f $d.3a:c(\"m\",$o.m+b*$.m[0]);1g;1f $d.2r:c(\"s\",$o.s+b*$.s[0]);1g}49()}n 1D(D,A,$,C,B,b){h.25(D,A,$,C,B,b)}1D.3J={25:n(E,B,b,D,C,A){q $=1a 1u();h.y=1t(E,h.y,$.5k());h.M=1t(B,h.M,$.5h()+1);h.d=$f.18.d?1t(b,h.d,$.3t()):1;h.H=1t(D,h.H,$.5p());h.m=1t(C,h.m,$.5i());h.s=1t(A,h.s,$.5n())},2h:n($){l($)h.25($.y,$.M,$.d,$.H,$.m,$.s)},6Y:n(E,B,b,D,C,A){q $=1a 1u();h.y=1t(h.y,E,$.5k());h.M=1t(h.M,B,$.5h()+1);h.d=$f.18.d?1t(h.d,b,$.3t()):1;h.H=1t(h.H,D,$.5p());h.m=1t(h.m,C,$.5i());h.s=1t(h.s,A,$.5n())},2z:n($,C){q A=\"3m\",b,B;C=A.1n(C);C=C>=0?C:5;1b(q D=0;D<=C;D++){B=A.1Q(D);b=h[B]-$[B];l(b>0)u 1;t l(b<0)u-1}u 0},1Y:n(){q $=1a 1u(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.5k();h.M=$.5h()+1;h.d=$.3t();h.H=$.5p();h.m=$.5i();h.s=$.5n();u!6w(h.y)},1V:n(b,$){l(\"3m\".1n(b)>=0){q A=h.d;l(b==\"M\")h.d=1;h[b]+=$;h.1Y();h.d=A}}};n 2n($){u 8V($,10)}n 3z($,b){u 3r(2n($),b)}n 1t($,A,b){u 3z($,3r(A,b))}n 3r($,b){u $==1h||6w($)?b:$}n 5l(A,$){l($6B)A.5l(\"91\"+$);t{q b=1L.8Z(\"8N\");b.8Q($,1c,1c);A.97(b)}}n 4g($){q A,B,b=\"y,M,H,m,s,6M,6L\".4c(\",\");1b(B=0;B<b.x;B++){A=b[B];l($d[A+\"I\"]==$)u A.4X(A.x-1,A.x)}u 0}n 6X($){q A=4g(h),b=$d[A+\"D\"];l(!A)u;$c.1k=h;l(A==\"y\")h.1e=\"6H\";t l(A==\"M\"){h.1e=\"6H\";h.1i=h[\"3E\"]}6F{h.5o()}6s($){}$c[\"3f\"+A](h);3G(b);l(\"4Z\".1n(A)>=0){b.1d.8k=1I.6J(h.4S,$d.2r.4S+60-b.4W);b.1d.8e=h.8b-b.2p-2}}n 3Q(70){q p=4g(h),1R,5f,v=h.1i,6A=$o[p];l(p==0)u;$o[p]=6r(v)>=0?6r(v):$o[p];l(p==\"y\"){1R=h==$d.2y;l(1R&&$o.M==12)$o.y-=1}t l(p==\"M\"){1R=h==$d.2c;l(1R){5f=$1l.2k[$o[p]-1];l(6A==12)$o.y+=1;$o.1V(\"M\",-1)}l($1v.M==$o.M)h.1i=5f||$1l.2k[$o[p]-1];l(($1v.y!=$o.y))c(\"y\",$o.y)}4d(\"c(\\\\\"\"+p+\"\\\\\",\"+$o[p]+\")\");l(70!==1c){l(p==\"y\"||p==\"M\")h.1e=\"47\";1o($d[p+\"D\"])}49()}n 2O($){l($.2m){$.2m();$.8g()}t{$.5e=1c;$.6U=1p}l($5x)$.54=0}n 55($){q A=$.4c(\",\");1b(q B=0;B<A.x;B++){q b=A[B]+\"I\";$d[b].8C=6X;$d[b].2x=3Q}}n 5a(M){q H=M.5I||M.5B,Q=M.56||M.54;5j=$f.44?1c:$f.1K.1d.2a!=\"2u\";$f.2N=1;l(Q>=96&&Q<=8y)Q-=48;l($f.8r&&5j){l(!H.3e){H.3e=$f.1X[1];$c.1k=$f.Z}l(H==$f.Z)$c.1k=$f.Z;l(Q==27)l(H==$f.Z){$c.3c();u}t $f.Z.22();l(Q>=37&&Q<=40){q U;l($c.1k==$f.Z||$c.1k==$d.1U)l($f.18.d){U=\"d\";l(Q==38)$o[U]-=7;t l(Q==39)$o[U]+=1;t l(Q==37)$o[U]-=1;t $o[U]+=7;$o.1Y();c(\"y\",$o[\"y\"]);c(\"M\",$o[\"M\"]);c(\"d\",$o[U]);2O(M);u}t{U=$f.18.43;$d[U+\"I\"].22()}U=U||4g($c.1k);l(U){l(Q==38||Q==39)$o[U]+=1;t $o[U]-=1;$o.1Y();$c.1k.1i=$o[U];3Q.5d($c.1k,1c);$c.1k.5o()}}t l(Q==9){q D=H.3e;1b(q R=0;R<$f.1X.x;R++)l(D.2e==1c||D.2p==0)D=D.3e;t 1g;l($c.1k!=D){$c.1k=D;D.22()}}t l(Q==13){3Q.5d($c.1k);l($c.1k.3k==\"1S\")$c.1k.8B();t l($f.5b.3j==$f.Z[$f.1E])$c.5c();t $c.3c();$c.1k=$f.Z}}t l(Q==9&&H==$f.Z)$c.3c();l($f.8G&&!$5x&&!$f.3S&&$c.1k==$f.Z&&(Q>=48&&Q<=57)){q T=$f.Z,S=T.1i,F=E(T),I={29:\"\",1r:[]},R=0,K,N=0,X=0,O=0,J,b=/3i|2H|3l|y|3R|M|1K|d|%2l|53|H|4V|m|4U|s|4T|W|w/g,L=$f.1B.2J(b),B,A,$,V,W,G,J=0;l(S!=\"\"){O=S.2J(/[0-9]/g);O=O==1h?0:O.x;1b(R=0;R<L.x;R++)O-=1I.2Q(L[R].x,2);O=O>=0?1:0;l(O==1&&F>=S.x)F=S.x-1}S=S.1F(0,F)+8h.8c(Q)+S.1F(F+O);F++;1b(R=0;R<S.x;R++){q C=S.1Q(R);l(/[0-9]/.52(C))I.29+=C;t I.1r[R]=1}S=\"\";b.2t=0;36((K=b.2U($f.1B))!==1h){X=K.3Z-(K[0]==\"%2l\"?1:0);l(N>=0){S+=$f.1B.1F(N,X);l(F>=N+J&&F<=X+J)F+=X-N}N=b.2t;G=N-X;B=I.29.1F(0,G);A=K[0].1Q(0);$=2n(B.1Q(0));l(I.29.x>1){V=I.29.1Q(1);W=$*10+2n(V)}t{V=\"\";W=$}l(I.1r[X+1]||A==\"M\"&&W>12||A==\"d\"&&W>31||A==\"H\"&&W>23||\"68\".1n(A)>=0&&W>59){l(K[0].x==2)B=\"0\"+$;t B=$;F++}t l(G==1){B=W;G++;J++}S+=B;I.29=I.29.1F(G);l(I.29==\"\")1g}T.1i=S;P(T,F);2O(M)}l(5j&&$c.1k!=$f.Z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2O(M);n E(A){q b=0;l($f.51.1L.6a){q B=$f.51.1L.6a.82(),$=B.5m.x;B.6I(\"4Y\",-A.1i.x);b=B.5m.x-$}t l(A.58||A.58==\"0\")b=A.58;u b}n P(b,A){l(b.6S){b.22();b.6S(A,A)}t l(b.6O){q $=b.6O();$.7P(1c);$.85(\"4Y\",A);$.6I(\"4Y\",A);$.5o()}}}1L.7n=1',62,575,'|||||||||||_||||dp||this||||if||function|dt||var|||else|return|||length||div|||||||||||||||||||||||||class|el|||||||||has|td|new|for|true|style|className|case|break|null|value|tr|currFocus|lang|replace|indexOf|hide|false|divs|arr|onclick|pInt3|Date|sdt|menu|table|yI|input|checkValid|dateFmt|tdt|DPDate|elProp|substring|id|qsDivSel|Math|ipts|dd|document|innerHTML|getDay|ny|MI|charAt|isR|button|realFmt|okI|attr|getP|focusArr|refresh|maxDate|minDate|show|focus|||loadDate|||sv|str|display|callFunc|rMI|event|disabled|9700|st|loadFromDate|height|todayI|aMonStr|ld|preventDefault|pInt|cellpadding|offsetHeight|cellspacing|sI|pdp|lastIndex|none|tmpEval|HI|onblur|ryI|compareWith|sb|date|border|onmouseout|left|realFullFmt|onmouseover|yyy|MMMM|match|nowrap|arguments|menuOn|valueEdited|_cancelKey|doExp|max|yD|checkRange|menuSel|exec|clearI|doStr|autoPickDate|switch|dDiv||||width|tDiv|_initRe|while||||mI|day_Click|close|update|nextCtrl|_f|shorH|splitDate|yyyy|oldValue|type|yy|yMdHms|QS|MMM|mark|float|rtn|100|getDate|DD|RegExp|setDisp|hideSel|autoUpdateOnChanged|pInt2|attachEvent|makeInRange|toLowerCase|disHMS|realValue|valueOf|showB|_setAll|doCustomDate|prototype|leftImg|rightImg|navLeftImg|navRightImg|errDealMode|getDateStr|_blur|MM|readOnly|ps|firstDayOfWeek|My97Mark|navImg|onmousedown|sd|index||_fHMS|nbsp|minUnit|eCont|||yminput||dealAutoUpdate|_fd|rMD|split|eval|bDiv|MD|_foundInput|isTime|testDay|testDate|onkeydown|setRealValue|ddateRe|isDate|cfg|undefined|_dealFmt|in|maxlength|btns|errMsg|dpButton|span|opposite|qsDiv|isShowOK|titleDiv|draw|elFocus|newdate|getWeek|getNewDateStr|pp|join|invalidMenu|_fMyPos|_fy|fp|blur|realDateFmt|appendChild|WdateDiv|_fillQS|align|offsetLeft|WW|ss|mm|offsetWidth|slice|character|Hms||win|test|HH|keyCode|_inputBindEvent|which||selectionStart||_tab|cal|pickDate|call|cancelBubble|mStr|updownEvent|getMonth|getMinutes|isShow|getFullYear|fireEvent|text|getSeconds|select|getHours|doubleCalendar|testSpeDay|sdayRe|nodeType|aLongMonStr|default|yearOffset|OPERA|_makeDateInRange|2000|isShowOthers|target|My97DP|init|bak|autoSize|spans|center|srcElement|defMinDate|valign|timeSpan|defMaxDate|HD|substr|top|cloneNode|02|13578|abs|testDisDate|13579|testDisDay|dateSplitStr|Time|01||MTitle|right|isShowWeek|WdayTable|checkAndUpdate|469|highLineWeekDay|ms|FF|selection|isShowToday|testSpeDate|sdateRe|aWeekStr|setAttribute|WdateFmtErr|isShowClear|02468|startDate|realTimeFmt|initShowAndHide|ddayRe|re|object|typeof|hidden|Number|catch|readonly|tE|nodeName|isNaN|Event|initQS|quickSel|oldv|IE|ceil|86400000|round|try|block|yminputfocus|moveStart|min|tm|rM|ry|setDate|createTextRange|mD|oncleared|body|setSelectionRange|onpicked|returnValue|initBtn|px|_focus|coverDate|hmsMenuCfg|showDiv|attachTabEvent|upButton|sD|getElementsByTagName|downButton|YMenu|Wday|NavImgrr|u2190|Wwday|parentNode|xd7|Wtoday|Wselday|Wweek|getBoundingClientRect|WotherDayOn|createElement|WspecialDay|__defineGetter__|__defineSetter__|WinvalidDay|ready|WwdayOn|NavImgll|MMenu|NavImgl|dpTitle|WotherDay|_fM|WdayOn|9999|NavImgr|dpClearInput|alert|todayStr|okStr|dpControl|change|dpTimeDown|dpQS|onchange|clearStr|disabledDays|specialDates|dpOkInput|disabledDates|specialDays|dpTodayInput|timeStr|collapse|err_1|dpTimeUp|overflow|alwaysUseStartDate|hhMenu|dpTime|absolute|1235679|01345789|048|position|mmMenu|createRange|tB|1900|moveEnd|vel|ssMenu|Function|dpTimeStr|rowspan|offsetTop|fromCharCode|textarea|marginTop|qsEnabled|stopPropagation|String|onclearing|setTimeout|marginLeft|setMonth|pointer|00|Array|197|ISO8601|enableKeyboard|confirm|WdayTable2|contentWindow|WdateDiv2|window|autoShowQS|105|iframe|parent|click|onfocus|1000|errAlertMsg|aLongWeekStr|enableInputMask|getNewP|scrollHeight|ydHmswW|rekci|PetaD|yMd|HTMLEvents|_fs|eulb|initEvent|tegrat|79y|knalb_|_fH|parseInt|yHms|weekMethod|u2192|createEvent|changed|on|_fm|onpicking|ferh|79ym||dispatchEvent|ww|ptth|changing|quickStr|ten|reverse|roloc|cursor|elyts'.split('|'),0,{}))"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/classie.js",
    "content": "/*!\n * classie - class helper functions\n * from bonzo https://github.com/ded/bonzo\n * \n * classie.has( elem, 'my-class' ) -> true/false\n * classie.add( elem, 'my-new-class' )\n * classie.remove( elem, 'my-unwanted-class' )\n * classie.toggle( elem, 'my-class' )\n */\n\n/*jshint browser: true, strict: true, undef: true */\n/*global define: false */\n\n( function( window ) {\n\n'use strict';\n\n// class helper functions from bonzo https://github.com/ded/bonzo\n\nfunction classReg( className ) {\n  return new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\n}\n\n// classList support for class management\n// altho to be fair, the api sucks because it won't accept multiple classes at once\nvar hasClass, addClass, removeClass;\n\nif ( 'classList' in document.documentElement ) {\n  hasClass = function( elem, c ) {\n    return elem.classList.contains( c );\n  };\n  addClass = function( elem, c ) {\n    elem.classList.add( c );\n  };\n  removeClass = function( elem, c ) {\n    elem.classList.remove( c );\n  };\n}\nelse {\n  hasClass = function( elem, c ) {\n    return classReg( c ).test( elem.className );\n  };\n  addClass = function( elem, c ) {\n    if ( !hasClass( elem, c ) ) {\n      elem.className = elem.className + ' ' + c;\n    }\n  };\n  removeClass = function( elem, c ) {\n    elem.className = elem.className.replace( classReg( c ), ' ' );\n  };\n}\n\nfunction toggleClass( elem, c ) {\n  var fn = hasClass( elem, c ) ? removeClass : addClass;\n  fn( elem, c );\n}\n\nvar classie = {\n  // full names\n  hasClass: hasClass,\n  addClass: addClass,\n  removeClass: removeClass,\n  toggleClass: toggleClass,\n  // short names\n  has: hasClass,\n  add: addClass,\n  remove: removeClass,\n  toggle: toggleClass\n};\n\n// transport\nif ( typeof define === 'function' && define.amd ) {\n  // AMD\n  define( classie );\n} else {\n  // browser global\n  window.classie = classie;\n}\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/common.js",
    "content": "\n$(document).ready(function(){\n\t\n\t// 去除虚线框（会影响效率）\n\t$(\"a\").on('focus',function(){$(this).blur();});\n\t\n\t\n\t$('.file input[type=file]').change(function(e) {\n        $(this).siblings('.text').text($(this).val());\n    });\n\t\n\tif(!-[1,]){\n\t\t$('input[type=radio]').bind('click',function(){\n\t\t\tvar name = $(this).attr('name');\n\t\t\t$('input[type=radio][\"name=\"'+ name +']').removeClass('checked');\n\t\t\tif($(this).prop('checked')){\n\t\t\t\t$(this).addClass('checked');\n\t\t\t}\n\t\t});\n\t}\n\tif(!!!$('.opt-panel').size() &&　!!!$('.system-switch').size()){\n\t\t$(document).click(function(e) {\n\t\t\t$(top.window.document).find('.opt-panel').hide().end().find('.system-switch').hide();\n\t\t\t$(top.window.document).find('.more-info').removeClass('active').end().find('.logo-icon').removeClass('active');\n\t\t});\n\t}\n\t\n\tif(!!!$('.more-bab-list').size()){\n\t\t$(document).click(function(e) {\n\t\t\t$(top.window.document).find('iframe').contents().find('.more-bab-list').hide();\n\t\t\t$(top.window.document).find('iframe').contents().find('.tab-more').removeClass('active');\n\t\t});\t\n\t}\n});\n\n\nfunction hideElement(currentElement, targetElement, fn) {\n\tif (!$.isArray(targetElement)) {\n\t\ttargetElement = [ targetElement ];\n\t}\n\t$(document).on(\"click.hideElement\", function(e) {\n\t\tvar len = 0, $target = $(e.target);\n\t\tfor (var i = 0, length = targetElement.length; i < length; i++) {\n\t\t\t$.each(targetElement[i], function(j, n) {\n\t\t\t\tif ($target.is($(n)) || $.contains($(n)[0], $target[0])) {\n\t\t\t\t\tlen++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif ($.contains(currentElement[0], $target[0])) {\n\t\t\tlen = 1;\n\t\t}\n\t\tif (len == 0) {\n\t\t\tcurrentElement.hide();\n\t\t\tfn && fn(currentElement, targetElement);\n\t\t}\n\t});\n};\n\n\n/*\n *  用来给不支持HTML5 placeholder属性的浏览器增加此功能。\n *  @param element {String or Object} 需要添加placeholder提示的输入框选择器或者输入框jquery对象。\n *  @param defualtCss {String} 提示默认的样式class。\n */\n\nfunction showRemind(element,defualtCss){\n\tif(-[1,]){\n\t\treturn false;\n\t}\n\n\t$(element).each(function(el, i){\n\t\tvar placeholder = $(this).attr('placeholder');\n\t\tif(placeholder){\n\t\t\t$(this).addClass(defualtCss).val(placeholder);\n\t\t\t$(this).focus(function(e){\n\t\t\t\tif($(this).attr('placeholder') === $(this).val()){\n\t\t\t\t\t$(this).val('').removeClass(defualtCss);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$(this).blur(function(e){\n\t\t\t\tif($(this).val() === \"\"){\n\t\t\t\t\t$(this).addClass(defualtCss).val($(this).attr('placeholder'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction resize(resizeHandle){\n\tvar d = document.documentElement;\n\tvar timer;//避免resize触发多次,影响性能\n\tvar width = d.clientWidth, height = d.clientHeight;\n\t$(top.window).on('resize',function(e){\n\t\tif((width != d.clientWidth || height != d.clientHeight)){\n\t\t\twidth = d.clientWidth, height = d.clientHeight;\n\t\t\tif(timer){clearTimeout(timer);}\n\t\t\ttimer = setTimeout(function(){\n\t\t\t\tresizeHandle();\n\t\t\t},10);\t\n\t\t}\n\t});\n\t\n}\n\n$(document).click(function(){\n\t$(\".select-list\").hide();\n})\n\n/* 打开一个新页面：调用时不加第二个参数 add by tony */\nfunction formSubmit (url,sTarget){\n    document.forms[0].target = sTarget\n    document.forms[0].action = url;\n    document.forms[0].submit();\n    return true;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/core.js",
    "content": "/*\n */\n(function($, undefined) {\n    // prevent duplicate loading\n    // this is only a problem because we proxy existing functions\n    // and we don't want to double proxy them\n    // 如果有值在进行赋值，否则赋值为空，确保不是undefined\n    $.ued = $.ued || {};\n\t\n\tif (!window.JSON) {\n\t\twindow.JSON = {};\n\t}\n\t(function () {\n\t\t\"use strict\";\n\t\tfunction f(n) {\n\t\t\t// Format integers to have at least two digits.\n\t\t\treturn n < 10 ? '0' + n : n;\n\t\t}\n\n\t\tif (typeof Date.prototype.toJSON !== 'function') {\n\n\t\t\tDate.prototype.toJSON = function (key) {\n\n\t\t\t\treturn isFinite(this.valueOf()) ?\n\t\t\t\t\tthis.getUTCFullYear()     + '-' +\n\t\t\t\t\tf(this.getUTCMonth() + 1) + '-' +\n\t\t\t\t\tf(this.getUTCDate())      + 'T' +\n\t\t\t\t\tf(this.getUTCHours())     + ':' +\n\t\t\t\t\tf(this.getUTCMinutes())   + ':' +\n\t\t\t\t\tf(this.getUTCSeconds())   + 'Z' : null;\n\t\t\t};\n\n\t\t\tString.prototype.toJSON      =\n\t\t\t\tNumber.prototype.toJSON  =\n\t\t\t\tBoolean.prototype.toJSON = function (key) {\n\t\t\t\t\treturn this.valueOf();\n\t\t\t\t};\n\t\t}\n\n\t\tvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n\t\t\tescapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n\t\t\tgap,\n\t\t\tindent,\n\t\t\tmeta = {    // table of character substitutions\n\t\t\t\t'\\b': '\\\\b',\n\t\t\t\t'\\t': '\\\\t',\n\t\t\t\t'\\n': '\\\\n',\n\t\t\t\t'\\f': '\\\\f',\n\t\t\t\t'\\r': '\\\\r',\n\t\t\t\t'\"' : '\\\\\"',\n\t\t\t\t'\\\\': '\\\\\\\\'\n\t\t\t},\n\t\t\trep;\n\n\n\t\tfunction quote(string) {\n\n\t// If the string contains no control characters, no quote characters, and no\n\t// backslash characters, then we can safely slap some quotes around it.\n\t// Otherwise we must also replace the offending characters with safe escape\n\t// sequences.\n\n\t\t\tescapable.lastIndex = 0;\n\t\t\treturn escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n\t\t\t\tvar c = meta[a];\n\t\t\t\treturn typeof c === 'string' ? c :\n\t\t\t\t\t'\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t\t\t}) + '\"' : '\"' + string + '\"';\n\t\t}\n\n\n\t\tfunction str(key, holder) {\n\n\t// Produce a string from holder[key].\n\n\t\t\tvar i,          // The loop counter.\n\t\t\t\tk,          // The member key.\n\t\t\t\tv,          // The member value.\n\t\t\t\tlength,\n\t\t\t\tmind = gap,\n\t\t\t\tpartial,\n\t\t\t\tvalue = holder[key];\n\n\t// If the value has a toJSON method, call it to obtain a replacement value.\n\n\t\t\tif (value && typeof value === 'object' &&\n\t\t\t\t\ttypeof value.toJSON === 'function') {\n\t\t\t\tvalue = value.toJSON(key);\n\t\t\t}\n\n\t// If we were called with a replacer function, then call the replacer to\n\t// obtain a replacement value.\n\n\t\t\tif (typeof rep === 'function') {\n\t\t\t\tvalue = rep.call(holder, key, value);\n\t\t\t}\n\n\t// What happens next depends on the value's type.\n\n\t\t\tswitch (typeof value) {\n\t\t\tcase 'string':\n\t\t\t\treturn quote(value);\n\n\t\t\tcase 'number':\n\n\t// JSON numbers must be finite. Encode non-finite numbers as null.\n\n\t\t\t\treturn isFinite(value) ? String(value) : 'null';\n\n\t\t\tcase 'boolean':\n\t\t\tcase 'null':\n\n\t// If the value is a boolean or null, convert it to a string. Note:\n\t// typeof null does not produce 'null'. The case is included here in\n\t// the remote chance that this gets fixed someday.\n\n\t\t\t\treturn String(value);\n\n\t// If the type is 'object', we might be dealing with an object or an array or\n\t// null.\n\n\t\t\tcase 'object':\n\n\t// Due to a specification blunder in ECMAScript, typeof null is 'object',\n\t// so watch out for that case.\n\n\t\t\t\tif (!value) {\n\t\t\t\t\treturn 'null';\n\t\t\t\t}\n\n\t// Make an array to hold the partial results of stringifying this object value.\n\n\t\t\t\tgap += indent;\n\t\t\t\tpartial = [];\n\n\t// Is the value an array?\n\n\t\t\t\tif (Object.prototype.toString.apply(value) === '[object Array]') {\n\n\t// The value is an array. Stringify every element. Use null as a placeholder\n\t// for non-JSON values.\n\n\t\t\t\t\tlength = value.length;\n\t\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\t\tpartial[i] = str(i, value) || 'null';\n\t\t\t\t\t}\n\n\t// Join all of the elements together, separated with commas, and wrap them in\n\t// brackets.\n\n\t\t\t\t\tv = partial.length === 0 ? '[]' : gap ?\n\t\t\t\t\t\t'[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n\t\t\t\t\t\t'[' + partial.join(',') + ']';\n\t\t\t\t\tgap = mind;\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\n\t// If the replacer is an array, use it to select the members to be stringified.\n\n\t\t\t\tif (rep && typeof rep === 'object') {\n\t\t\t\t\tlength = rep.length;\n\t\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\t\tif (typeof rep[i] === 'string') {\n\t\t\t\t\t\t\tk = rep[i];\n\t\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t// Otherwise, iterate through all of the keys in the object.\n\n\t\t\t\t\tfor (k in value) {\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t// Join all of the member texts together, separated with commas,\n\t// and wrap them in braces.\n\n\t\t\t\tv = partial.length === 0 ? '{}' : gap ?\n\t\t\t\t\t'{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n\t\t\t\t\t'{' + partial.join(',') + '}';\n\t\t\t\tgap = mind;\n\t\t\t\treturn v;\n\t\t\t}\n\t\t}\n\n\t// If the JSON object does not yet have a stringify method, give it one.\n\n\t\tif (typeof window.JSON.stringify !== 'function') {\n\t\t\twindow.JSON.stringify = function (value, replacer, space) {\n\n\t// The stringify method takes a value and an optional replacer, and an optional\n\t// space parameter, and returns a JSON text. The replacer can be a function\n\t// that can replace values, or an array of strings that will select the keys.\n\t// A default replacer method can be provided. Use of the space parameter can\n\t// produce text that is more easily readable.\n\n\t\t\t\tvar i;\n\t\t\t\tgap = '';\n\t\t\t\tindent = '';\n\n\t// If the space parameter is a number, make an indent string containing that\n\t// many spaces.\n\n\t\t\t\tif (typeof space === 'number') {\n\t\t\t\t\tfor (i = 0; i < space; i += 1) {\n\t\t\t\t\t\tindent += ' ';\n\t\t\t\t\t}\n\n\t// If the space parameter is a string, it will be used as the indent string.\n\n\t\t\t\t} else if (typeof space === 'string') {\n\t\t\t\t\tindent = space;\n\t\t\t\t}\n\n\t// If there is a replacer, it must be a function or an array.\n\t// Otherwise, throw an error.\n\n\t\t\t\trep = replacer;\n\t\t\t\tif (replacer && typeof replacer !== 'function' &&\n\t\t\t\t\t\t(typeof replacer !== 'object' ||\n\t\t\t\t\t\ttypeof replacer.length !== 'number')) {\n\t\t\t\t\tthrow new Error('JSON.stringify');\n\t\t\t\t}\n\n\t// Make a fake root object containing our value under the key of ''.\n\t// Return the result of stringifying the value.\n\n\t\t\t\treturn str('', {'': value});\n\t\t\t};\n\t\t}\n\n\n\t// If the JSON object does not yet have a parse method, give it one.\n\n\t\tif (typeof window.JSON.parse !== 'function') {\n\t\t\twindow.JSON.parse = function (text, reviver) {\n\n\t// The parse method takes a text and an optional reviver function, and returns\n\t// a JavaScript value if the text is a valid JSON text.\n\n\t\t\t\tvar j;\n\n\t\t\t\tfunction walk(holder, key) {\n\n\t// The walk method is used to recursively walk the resulting structure so\n\t// that modifications can be made.\n\n\t\t\t\t\tvar k, v, value = holder[key];\n\t\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\t\tfor (k in value) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\t\t\tv = walk(value, k);\n\t\t\t\t\t\t\t\tif (v !== undefined) {\n\t\t\t\t\t\t\t\t\tvalue[k] = v;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdelete value[k];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn reviver.call(holder, key, value);\n\t\t\t\t}\n\n\n\t// Parsing happens in four stages. In the first stage, we replace certain\n\t// Unicode characters with escape sequences. JavaScript handles many characters\n\t// incorrectly, either silently deleting them, or treating them as line endings.\n\n\t\t\t\ttext = String(text);\n\t\t\t\tcx.lastIndex = 0;\n\t\t\t\tif (cx.test(text)) {\n\t\t\t\t\ttext = text.replace(cx, function (a) {\n\t\t\t\t\t\treturn '\\\\u' +\n\t\t\t\t\t\t\t('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t// In the second stage, we run the text against regular expressions that look\n\t// for non-JSON patterns. We are especially concerned with '()' and 'new'\n\t// because they can cause invocation, and '=' because it can cause mutation.\n\t// But just to be safe, we want to reject all unexpected forms.\n\n\t// We split the second stage into 4 regexp operations in order to work around\n\t// crippling inefficiencies in IE's and Safari's regexp engines. First we\n\t// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n\t// replace all simple value tokens with ']' characters. Third, we delete all\n\t// open brackets that follow a colon or comma or that begin the text. Finally,\n\t// we look to see that the remaining characters are only whitespace or ']' or\n\t// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n\t\t\t\tif (/^[\\],:{}\\s]*$/\n\t\t\t\t\t\t.test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n\t\t\t\t\t\t\t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n\t\t\t\t\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n\t// In the third stage we use the eval function to compile the text into a\n\t// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n\t// in JavaScript: it can begin a block or an object literal. We wrap the text\n\t// in parens to eliminate the ambiguity.\n\n\t\t\t\t\tj = eval('(' + text + ')');\n\n\t// In the optional fourth stage, we recursively walk the new structure, passing\n\t// each name/value pair to a reviver function for possible transformation.\n\n\t\t\t\t\treturn typeof reviver === 'function' ?\n\t\t\t\t\t\twalk({'': j}, '') : j;\n\t\t\t\t}\n\n\t// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n\t\t\t\tthrow new SyntaxError('JSON.parse');\n\t\t\t};\n\t\t}\n\t}());\n\t\n    if ($.ued.version) {\n        return;\n    }\n\n    $.extend($.ued, {\n        version : \"2.0\",\n        keyCode : {\n            TAB : 9,\n            ENTER : 13,\n            ESCAPE : 27,\n            SPACE : 32,\n            LEFT : 37,\n            UP : 38,\n            RIGHT : 39,\n            DOWN : 40\n        },\n        lang : {\n            // 获取属性的国际化字符串，如果组件的options中已经设置这个值就直接使用，否则从$.ued.lang[comp]中获取\n            _get : function(options, comp, attr) {\n                return options[attr] ? options[attr] : $.ued.lang[comp][attr];\n            }\n        }\n    });\n    // plugins\n    $.fn.extend({\n        propAttr : $.fn.prop || $.fn.attr,\n        _oldFocus : $.fn.focus, //为避免与jQuery ui冲突导致死循环，这里不要取名为'_focus'\n        //设置元素焦点（delay：延迟时间）\n        focus : function(delay, fn) {\n            return typeof delay === \"number\" ? this.each(function() {\n                var elem = this;\n                setTimeout(function() {\n                    $(elem).focus();\n                    if (fn) {\n                        fn.call(elem);\n                    }\n                }, delay);\n            }) : this._oldFocus.apply(this, arguments);\n        },\n        //获取设置滚动属性的 父元素\n        scrollParent : function() {\n            var scrollParent;\n            if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n                scrollParent = this.parents().filter(function() {\n                    return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                }).eq(0);\n            } else {\n                scrollParent = this.parents().filter(function() {\n                    return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                }).eq(0);\n            }\n            return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n        },\n        //设置或获取元素的垂直坐标\n        zIndex : function(zIndex) {\n            if (zIndex !== undefined) {\n                return this.css(\"zIndex\", zIndex);\n            }\n            if (this.length) {\n                var elem = $(this[0]), position, value;\n                while (elem.length && elem[0] !== document) {\n                    // Ignore z-index if position is set to a value where z-index is ignored by the browser\n                    // This makes behavior of this function consistent across browsers\n                    // WebKit always returns auto if the element is positioned\n                    position = elem.css(\"position\");\n                    if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n                        // IE returns 0 when zIndex is not specified\n                        // other browsers return a string\n                        // we ignore the case of nested elements with an explicit value of 0\n                        // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n                        value = parseInt(elem.css(\"zIndex\"), 10);\n                        if (!isNaN(value) && value !== 0) {\n                            return value;\n                        }\n                    }\n                    elem = elem.parent();\n                }\n            }\n            return 0;\n        },\n        //设置元素不支持被选择\n        disableSelection : function() {\n            return this.bind(($.support.selectstart ? \"selectstart\" : \"mousedown\" ) + \".om-disableSelection\", function(event) {\n                event.preventDefault();\n            });\n        },\n        //设置元素支持被选择\n        enableSelection : function() {\n            return this.unbind(\".om-disableSelection\");\n        }\n    });\n    $.fn.extend({\n\t\t/**\n\t\t  * add by ynshen\n\t\t  * 扩展show，支持参数visibility（本质是通过样式控制visibility）\n\t\t  */\n        _oldShow : $.fn.show,\n        show : function(type) {\n            if (type != \"visibility\") {\n                return this._oldShow.apply(this, arguments);\n            } else {\n                return this.css(\"visibility\", \"visible\");\n            }\n        },\n\t\t/**\n\t\t  * add by ynshen\n\t\t  * 扩展hide，支持参数visibility（本质是通过样式控制visibility）\n\t\t  */\n        _oldHide : $.fn.hide,\n        hide : function(type) {\n            if (type != \"visibility\") {\n                return this._oldHide.apply(this, arguments);\n            } else {\n                return this.css(\"visibility\", \"hidden\");\n            }\n        }\n    });\n\t$.extend({\n\t\t/**\n\t\t  * add by xzjiang\n\t\t  * 判断字符串数（中文占俩位）\n\t\t  * @param {Object} message\n\t\t  */\n\t\tgetStrLength : function(message) {\n\t\t\treturn message.replace(/([\\u4E00-\\u9FA5\\uf900-\\ufa2d])/g, 'aa').length;\n\t\t}\n\t});\n\t\n\t/**\n\t  * add by ynshen\n\t  * 判断浏览器是否支持console对象\n\t  * 如果不支持（当为IE并且未打开调试窗口时，初始化console对象，并将console.log方法指向window.alert方法）\n\t  */\n\t  window.property = {};\n\tif(!window.console){\n\t\twindow.console = {};\n\t\twindow.console.log = function(data){\n\t\t\twindow.alert(data)\n\t\t}\n\t\t//add by rbai(增加time和timeEnd性能测试函数) \n\t\tif(!window.console.time){\n\t\t\twindow.console.time = function(name){\n\t\t\t\twindow.property[name] = new Date().getTime();\n\t\t\t}\n\t\t\twindow.console.timeEnd = function(name){\n\t\t\t\tvar tempTime = new Date().getTime()\n\t\t\t\twindow.alert(name+'==='+(tempTime - window.property[name])+'ms');\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//增加debug模式\n\tif(!window.DebugModel){\n\t\twindow.DebugModel = {},window.deBugObj = {};\n\t\twindow.DebugModel.start = function(name){\n\t\t\twindow.deBugObj[name] = +new Date();\n\t\t}\n\t\twindow.DebugModel.end = function(name){\n\t\t\tvar tempTime = +new Date();\n\t\t\tvar tempConsole = name+'完成花费了'+(tempTime - window.deBugObj[name])+'ms';\n\t\t\tDebugModel._printLog(tempConsole);\n\t\t}\n\t\twindow.DebugModel._printLog = function(log){\n\t\t\tvar $debugConsole = $('.ued-debugConsole',$('body'));\n\t\t\tif(!$debugConsole.size()){//如果存在debug控制台元素\n\t\t\t\t$('body').append('<div class=\"ued-debugConsole\" style=\"position:absolute;top:10px;left:10px;background:#F9F9F9;border:1px solid #CCC;padding:5px 10px 20px 10px;z-index:99999;color:#666;box-shadow:1px 1px 1px white inset;text-shadow:1px 1px 1px #FFF;\">'+\n\t\t\t\t'<h6 style=\"border-bottom:1px dashed #999;margin-bottom:5px;\">UED DEBUG 控制台</h6>'+\n\t\t\t\t'<div class=\"ued-debugContent uew-scroll-webkit\" style=\"max-height:300px;overflow:auto;\"></div>'+\n\t\t\t\t'<a href=\"javascript:;\" class=\"ued-debugClose\" style=\"position:absolute;bottom:2px;right:5px;\">关闭</a>'+\n\t\t\t\t'</di>');\n\t\t\t\t$debugContent = $('.ued-debugContent',$('body'));\n\t\t\t\tDebugModel._initCloseOrShow();\n\t\t\t}\n\t\t\t$('.ued-debugConsole',$('body')).show();\n\t\t\t$debugContent.append('<p>'+ log +'</p>');\n\t\t}\n\t\t\n\t\twindow.DebugModel._initCloseOrShow = function($debugConsole){\n\t\t\t$('.ued-debugClose',$('body')).click(function(e) {\n\t\t\t\t$debugContent.empty();\n                $('.ued-debugConsole',$('body')).hide();\n            });\n\t\t\t\n\t\t}\n\t}\n\t/**\n\t  * add by ynshen\n\t  * 对象深度复制方法\n\t  */\n\twindow.DeepCopy = function(obj){\n\t\tvar copyObj = new Object();\n\t\tfor (prop in obj)\n\t\t{\n\t\t\tif(obj[prop] != null && obj[prop].constructor == Object){\n\t\t\t\tcopyObj[prop] = window.DeepCopy(obj[prop]);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tcopyObj[prop] = obj[prop]\n\t\t\t}\n\t\t}\n\t\treturn copyObj;\n\t}\n\t/**\n\t  * add by ynshen\n\t  * 扩展Array对象，增加删除数组中指定元素方法\n\t  */\n\tArray.prototype.remove = function(element){\n\t\tvar indexArr = [];\n\t\tvar outArr = [];\n\t\t//找到出现该元素的index并存入数组indexArr\n\t\tfor(var i = 0;i < this.length;i++){\n\t\t\tif(this[i] == element){\n\t\t\t\tindexArr.push(i);\n\t\t\t}\n\t\t}\n\t\tif(indexArr.length > 0){\n\t\t\tfor(var j = 0;j < indexArr.length;j++){\n\t\t\t\tif(j == 0){//切分头部\n\t\t\t\t\toutArr = outArr.concat(this.slice(0,indexArr[j]));\n\t\t\t\t}else{//切分中段\n\t\t\t\t\toutArr = outArr.concat(this.slice(indexArr[j - 1] + 1,indexArr[j]));\n\t\t\t\t}\n\t\t\t}\n\t\t\t//切分尾端\n\t\t\toutArr = outArr.concat(this.slice(indexArr[j - 1] + 1,this.length));\n\t\t\treturn outArr;\n\t\t}else{\n\t\t\tthrow new Error(element + \"can't be found in \" + this);\n\t\t}\n\t}\n\t\n    // 扩展innerWidth、innerHeight、outerWidth和outerHeight方法，如果不传参则获取值，如果传参则设置计算后的宽高。\n    $.each([\"Width\", \"Height\"], function(i, name) {\n        var side = name === \"Width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"], type = name.toLowerCase(), orig = {\n            innerWidth : $.fn.innerWidth,\n            innerHeight : $.fn.innerHeight,\n            outerWidth : $.fn.outerWidth,\n            outerHeight : $.fn.outerHeight\n        };\n\n        function reduce(elem, size, border, margin) {\n            $.each(side, function() {\n                size -= parseFloat($.curCSS(elem, \"padding\" + this, true)) || 0;\n                if (border) {\n                    size -= parseFloat($.curCSS(elem, \"border\" + this + \"Width\", true)) || 0;\n                }\n                if (margin) {\n                    size -= parseFloat($.curCSS(elem, \"margin\" + this, true)) || 0;\n                }\n            });\n            return size;\n        }\n\n        $.fn[\"inner\" + name] = function(size) {\n            if (size === undefined) {\n                // 返回innerWidth/innerHeight\n                return orig[\"inner\" + name].call(this);\n            }\n            return this.each(function() {\n                // 设置宽度/高度 = (size - padding)\n                $(this).css(type, reduce(this, size) + \"px\");\n            });\n        };\n\n        $.fn[\"outer\" + name] = function(size, margin) {\n            if ( typeof size !== \"number\") {\n                // 返回outerWidth/outerHeight\n                return orig[\"outer\" + name].call(this, size);\n            }\n            return this.each(function() {\n                // 设置宽度/高度 = (size - padding - border - margin)\n                $(this).css(type, reduce(this, size, true, margin) + \"px\");\n            });\n        };\n    });\n    // selectors\n    function focusable(element, isTabIndexNotNaN) {\n        var nodeName = element.nodeName.toLowerCase();\n        if (\"area\" === nodeName) {\n            var map = element.parentNode, mapName = map.name, img;\n            if (!element.href || !mapName || map.nodeName.toLowerCase() !== \"map\") {\n                return false;\n            }\n            img = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n            return !!img && visible(img);\n        }\n        return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : \"a\" == nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN)\n        // the element and all of its ancestors must be visible\n        && visible(element);\n    }\n\n    function visible(element) {\n        return !$(element).parents().andSelf().filter(function() {\n            return $.curCSS(this, \"visibility\") === \"hidden\" || $.expr.filters.hidden(this);\n        }).length;\n    }\n\n\n    $.extend($.expr[\":\"], {\n        data : function(elem, i, match) {\n            return !!$.data(elem, match[3]);\n        },\n        focusable : function(element) {\n            return focusable(element, !isNaN($.attr(element, \"tabindex\")));\n        },\n        tabbable : function(element) {\n            var tabIndex = $.attr(element, \"tabindex\"), isTabIndexNaN = isNaN(tabIndex);\n            return (isTabIndexNaN || tabIndex >= 0 ) && focusable(element, !isTabIndexNaN);\n        }\n    });\n    // support\n    $(function() {\n        var body = document.body, div = body.appendChild( div = document.createElement(\"div\"));\n        $.extend(div.style, {\n            minHeight : \"100px\",\n            height : \"auto\",\n            padding : 0,\n            borderWidth : 0\n        });\n        // 判断当前浏览器环境是否支持minHeight属性\n        $.support.minHeight = div.offsetHeight === 100;\n        $.support.selectstart = \"onselectstart\" in div;\n        // set display to none to avoid a layout bug in IE\n        // http://dev.jquery.com/ticket/4014\n        body.removeChild(div).style.display = \"none\";\n    });\n\n    // deprecated\n    $.extend($.ued, {\n        // $.ued.plugin is deprecated.  Use the proxy pattern instead.\n        plugin : {\n            add : function(module, option, set) {\n                var proto = $.ued[module].prototype;\n                for (var i in set ) {\n                    proto.plugins[i] = proto.plugins[i] || [];\n                    proto.plugins[i].push([option, set[i]]);\n                }\n            },\n            call : function(instance, name, args) {\n                var set = instance.plugins[name];\n                if (!set || !instance.element[0].parentNode) {\n                    return;\n                }\n                for (var i = 0; i < set.length; i++) {\n                    if (instance.options[set[ i ][0]]) {\n                        set[ i ][1].apply(instance.element, args);\n                    }\n                }\n            }\n        }\n    });\n\n})(jQuery);\n\n(function($, undefined) {\n    // jQuery 1.4+\n    if ($.cleanData) {\n        var _cleanData = $.cleanData;\n        $.cleanData = function(elems) {\n            for (var i = 0, elem; ( elem = elems[i]) != null; i++) {\n\t\t\t\ttry {\n                \t$(elem).triggerHandler(\"ued-remove\");\n\t\t\t\t} catch( e ) {}\n            }\n            _cleanData(elems);\n        };\n    }\n\n    $.uedWidget = function(name, base, prototype) {\n        var namespace = name.split( \".\" )[0], fullName;\n        name = name.split( \".\" )[1];\n        fullName = namespace + \"-\" + name;\n        // 例如参数name='ued.tabs'，变成namespace='ued',name='tabs',fullName='ued-tabs'\n        // base默认为Widget类，组件默认会继承base类的所有方法\n        if (!prototype) {\n            prototype = base;\n            base = $.UEDWidget;\n        }\n        // create selector for plugin\n        $.expr[ \":\" ][fullName] = function(elem) {\n            return !!$.data(elem, name);\n        };\n        // 创建命名空间$.ued.tabs\n        $[namespace] = $[namespace] || {};\n        // 组件的构造函数\n        $[ namespace ][name] = function(options, element) {\n            // allow instantiation without initializing for simple inheritance\n            if (arguments.length) {\n                this._createWidget(options, element);\n            }\n        };\n        // 初始化父类，一般调用了$.Widget\n        var basePrototype = new base();\n        // we need to make the options hash a property directly on the new instance\n        // otherwise we'll modify the options hash on the prototype that we're\n        // inheriting from\n        //\t\t$.each( basePrototype, function( key, val ) {\n        //\t\t\tif ( $.isPlainObject(val) ) {\n        //\t\t\t\tbasePrototype[ key ] = $.extend( {}, val );\n        //\t\t\t}\n        //\t\t});\n        basePrototype.options = $.extend(true, {}, basePrototype.options);\n        // 给om.tabs继承父类的所有原型方法和参数\n        $[ namespace ][name].prototype = $.extend(true, basePrototype, {\n            namespace : namespace,\n            widgetName : name,\n            // 组件的事件名前缀，调用_trigger的时候会默认给trigger的事件加上前缀\n            // 例如_trigger('create')实际会触发'tabscreate'事件\n            widgetEventPrefix : $[ namespace ][name].prototype.widgetEventPrefix || name,\n            widgetBaseClass : fullName\n        }, prototype);\n        // 把tabs方法挂到jquery对象上，也就是$('#tab1').tabs();\n        var temp = $.uedWidget.bridge(name, $[ namespace ][name]);\n    };\n\n    $.uedWidget.bridge = function(name, object) {\n        $.fn[name] = function(options) {\n            // 如果tabs方法第一个参数是string类型，则认为是调用组件的方法，否则调用options方法\n            var isMethodCall = typeof options === \"string\", args = Array.prototype.slice.call(arguments, 1), returnValue = this;\n            // allow multiple hashes to be passed on init\n            options = !isMethodCall && args.length ? $.extend.apply(null, [true, options].concat(args)) : options;\n            // '_'开头的方法被认为是内部方法，不会被执行，如$('#tab1').tabs('_init')\n            if (isMethodCall && options.charAt(0) === \"_\") {\n                return returnValue;\n            }\n            if (isMethodCall) {\n                this.each(function() {\n                    // 执行组件方法\n                    var instance = $.data(this, name);\n                    if (options == 'options') {\n                        returnValue = instance && instance.options;\n                        return false;\n                    } else {\n                        var methodValue = instance && $.isFunction(instance[options]) ? instance[options].apply(instance, args) : instance;\n                        if (methodValue !== instance && methodValue !== undefined) {\n                            returnValue = methodValue;\n                            return false;\n                        }\n                    }\n                });\n            } else {\n                // 调用组件的options方法\n                this.each(function() {\n                    var instance = $.data(this, name);\n                    if (instance) {\n                        // 设置options后再次调用_init方法，第一次调用是在_createWidget方法里面。这个方法需要开发者去实现。\n                        // 主要是当改变组件中某些参数后可能需要对组件进行重画\n                        instance._setOptions(options || {});\n                        $.extend(instance.options, options);\n                        $(instance.beforeInitListeners).each(function() {\n                            this.call(instance);\n                        });\n                        instance._init();\n                        $(instance.initListeners).each(function() {\n                            this.call(instance);\n                        });\n                    } else {\n                        // 没有实例的话，在这里调用组件类的构造函数，并把构造后的示例保存在dom的data里面。注意这里的this是dom，object是模块类\n                        $.data(this, name, new object(options, this));\n                    }\n                });\n            }\n            return returnValue;\n        };\n    };\n    $.uedWidget.addCreateListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.createListeners.push(fn);\n    };\n    $.uedWidget.addInitListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.initListeners.push(fn);\n    };\n    $.uedWidget.addBeforeInitListener = function(name, fn) {\n        var temp = name.split(\".\");\n        $[ temp[0] ][temp[1]].prototype.beforeInitListeners.push(fn);\n    };\n    $.UEDWidget = function(options, element) {\n        this.createListeners = [];\n        this.initListeners = [];\n        this.beforeInitListeners = [];\n        // allow instantiation without initializing for simple inheritance\n        if (arguments.length) {\n            this._createWidget(options, element);\n        }\n    };\n    /**\n     * 格式化简单节点数据\n     * add by ynshen\n     */\n    $.formatData = function(easyData, sourcePid) {\n        var index;\n        var root;\n        //寻找根节点\n        for (var i = 0; i < easyData.length; i++) {\n            if (easyData[i].pid == sourcePid) {\n                index = i;\n                root = easyData[i];\n                root.level = 0;\n                break;\n            }\n        }\n        if (root) {\n            handleArray(easyData, root);\n            return easyData[index];\n        } else {\n            return null;\n        };\n    }\n    function handleArray(target_, pNode) {\n        for (var i = 0; i < target_.length; i++) {\n            if (target_[i].pid == pNode.id) {\n                if (!pNode.children) {\n                    pNode.children = new Array();\n                }\n                pNode.children.push(target_[i]);\n                target_[i].level = pNode.level + 1;\n                handleArray(target_, target_[i]);\n            }\n        }\n    }\n\n    /*=============================================*/\n    $.UEDWidget.prototype = {\n        widgetName : \"widget\",\n        widgetEventPrefix : \"\",\n        options : {\n            disabled : false\n        },\n        _createWidget : function(options, element) {\n            // $.widget.bridge stores the plugin instance, but we do it anyway\n            // so that it's stored even before the _create function runs\n            $.data(element, this.widgetName, this);\n            this.element = $(element);\n            this.options = $.extend(true, {}, this.options, this._getCreateOptions(), options);\n            var self = this;\n            //注意，不要少了前边的 \"ued-\"，不然会与jquery-ui冲突\n            this.element.bind(\"ued-remove._\" + this.widgetName, function() {\n                self.destroy();\n            });\n            // 开发者实现\n            this._create();\n            $(this.createListeners).each(function() {\n                this.call(self);\n            });\n            // 如果绑定了初始化的回调函数，会在这里触发。注意绑定的事件名是需要加上前缀的，如$('#tab1').bind('tabscreate',function(){});\n            this._trigger(\"create\");\n            // 开发者实现\n            $(this.beforeInitListeners).each(function() {\n                this.call(self);\n            });\n            this._init();\n            $(this.initListeners).each(function() {\n                this.call(self);\n            });\n        },\n        _getCreateOptions : function() {\n            return $.metadata && $.metadata.get( this.element[0] )[this.widgetName];\n        },\n        _create : function() {\n        },\n        _init : function() {\n        },\n        destroy : function() {\n            this.element.unbind(\".\" + this.widgetName).removeData(this.widgetName);\n            this.widget().unbind(\".\" + this.widgetName);\n        },\n        widget : function() {\n            return this.element;\n        },\n\n        option : function(key, value) {\n            var options = key;\n            if (arguments.length === 0) {\n                // don't return a reference to the internal hash\n                return $.extend({}, this.options);\n            }\n            if ( typeof key === \"string\") {\n                if (value === undefined) {\n                    return this.options[key];\n                    // 获取值\n                }\n                options = {};\n                options[key] = value;\n            }\n            this._setOptions(options);\n            // 设置值\n            return this;\n        },\n        _setOptions : function(options) {\n            var self = this;\n            $.each(options, function(key, value) {\n                self._setOption(key, value);\n            });\n            return this;\n        },\n        _setOption : function(key, value) {\n            this.options[key] = value;\n            return this;\n        },\n\n        // $.widget中优化过的trigger方法。type是回调事件的名称，如\"onRowClick\"，event是触发回调的事件（通常没有这个事件的时候传null）\n        // 这个方法只声明了两个参数，如有其他参数可以直接写在event参数后面\n        _trigger : function(type, event) {\n            // 获取初始化配置config中的回调方法\n\t\t\t/**\n\t\t\t  * add by ynshen\n\t\t\t  * 对于多层级的方法进行调用\n\t\t\t  */\n            var callback;\n\t\t\tvar callbackArr = type.split(\".\");\n\t\t\t\n\t\t\tif(callbackArr.length > 1){\n\t\t\t\tvar tempCallback = this.options[callbackArr[0]];\n\t\t\t\tfor(var i = 1 ;i < callbackArr.length;i++){\n\t\t\t\t\ttempCallback = tempCallback[callbackArr[i]]\t;\n\t\t\t\t}\n\t\t\t\tcallback = tempCallback;\n\t\t\t}else{\n\t\t\t\tcallback = this.options[type]\n\t\t\t}\n\t\t\t\n\t\t\t\n            // 封装js标准event对象为jquery的Event对象\n            event = $.Event(event);\n            event.type = type;\n            // copy original event properties over to the new event\n            // this would happen if we could call $.event.fix instead of $.Event\n            // but we don't have a way to force an event to be fixed multiple times\n            if (event.originalEvent) {\n                for (var i = $.event.props.length, prop; i; ) {\n                    prop = $.event.props[--i];\n                    event[prop] = event.originalEvent[prop];\n                }\n            }\n            // 构造传给回调函数的参数，event放置在最后\n            var newArgs = [], argLength = arguments.length;\n            for (var i = 2; i < argLength; i++) {\n                newArgs[i - 2] = arguments[i];\n            }\n            if (argLength > 1) {\n                newArgs[argLength - 2] = arguments[1];\n            }\n            return !($.isFunction(callback) && callback.apply(this.element, newArgs) === false || event.isDefaultPrevented() );\n        }\n    };\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/My97DatePicker.htm",
    "content": "<html>\n<head>\n<meta http-equiv=\"content-type\" content=\"text/xml; charset=utf-8\" />\n<title>My97DatePicker</title>\n<script type=\"text/javascript\" src=\"config.js\"></script>\n<script>\nif(parent==window)\n\tlocation.href = 'http://www.my97.net/';\n\nvar $d, $dp, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\n\nif ($pdp.eCont) {\n\t$dp = {};\n\tfor (var p in $pdp) {\n\t\t$dp[p] = $pdp[p];\n\t}\n}\nelse\n\t$dp = $pdp;\n$dp.realLang = getCurr(langList, $dp.lang);\ndocument.write(\"<script src='lang/\" + $dp.realLang.name + \".js' charset='\" + $dp.realLang.charset + \"'><\\/script>\");\nfor (var i = 0; i < skinList.length; i++) {\n    document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"skin/' + skinList[i].name + '/datepicker.css\" title=\"' + skinList[i].name + '\" charset=\"' + skinList[i].charset + '\" disabled=\"true\"/>');\n}\nfunction getCurr(arr, name){\n\tvar isFound = false;\n\tvar item = arr[0];\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i].name == name) {\n\t\t\titem = arr[i];\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn item;\n}\n</script>\n<script type=\"text/javascript\" src=\"calendar.js\"></script>\n</head>\n<body leftmargin=\"0\" topmargin=\"0\" onload=\"$c.autoSize()\">\n</body>\n</html>\n<script>new My97DP();</script>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.1\n * SITE: http://dp.my97.net\n * BLOG: http://my97.cnblogs.com\n * MAIL: smallcarrot@163.com\n */\nvar $dp,WdatePicker;(function(){var $={\n\n$wdate:true,\n$crossFrame:true,\n$dpPath:\"\",\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:true,\nqsEnabled:true,\n\ndisabledDates:null,disabledDays:null,opposite:false,onpicking:null,onpicked:null,onclearing:null,oncleared:null,eCont:null,vel:null,errMsg:\"\",quickSel:[],has:{}};WdatePicker=S;var V=window,N=\"document\",H=\"documentElement\",A=\"getElementsByTagName\",T,_,R,G,a;switch(navigator.appName){case\"Microsoft Internet Explorer\":R=true;break;case\"Opera\":a=true;break;default:G=true;break}T=V;if($.$crossFrame){try{while(T.parent[N]!=T[N]&&T.parent[N][A](\"frameset\").length==0)T=T.parent}catch(P){}}_=J();if($.$wdate)K(_+\"skin/WdatePicker.css\");var L;if(T.$dp){try{T.$dp.$(\"my97\")}catch(P){L=P.number==-2146823277?true:false}}if(!T.$dp||L){$dp=Q({ff:G,ie:R,opera:a,el:null,win:V,status:L?2:0,defMinDate:$.minDate,defMaxDate:$.maxDate,$:function($){return(typeof $==\"string\")?this.win[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=\"\"){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var A in $){if(this.dt[A]===undefined)this.errMsg=\"invalid property:\"+A;this.dt[A]+=$[A]}if(this.dt.refresh())return this.dt}return\"\"},show:function(){if(this.dd)this.dd.style.display=\"block\"},hide:function(){if(this.dd)this.dd.style.display=\"none\"},attachEvent:C});if(!L)Z(T,function(){S(null,true)})}else $dp=T.$dp;if(!V[N].docMD){C(V[N],\"onmousedown\",B);V[N].docMD=true}if(!T[N].docMD){C(T[N],\"onmousedown\",B);T[N].docMD=true}C(V,\"onunload\",function(){$dp.hide()});function Q(_){T.$dp=T.$dp||{};for(var $ in _)T.$dp[$]=_[$];return T.$dp}function C(A,$,_){if(R)A.attachEvent($,_);else{var B=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){return _($)};A.addEventListener(B,_._ieEmuEventHandler,false)}}function J(){var _,A,$=document.getElementsByTagName(\"script\");for(var B=0;B<$.length;B++){_=$[B].src.substring(0,$[B].src.toLowerCase().indexOf(\"wdatepicker.js\"));A=_.lastIndexOf(\"/\");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function D(F){var E,C;if(F.substring(0,1)!=\"/\"&&F.indexOf(\"://\")==-1){E=T.location.href;C=location.href;if(E.indexOf(\"?\")>-1)E=E.substring(0,E.indexOf(\"?\"));if(C.indexOf(\"?\")>-1)C=C.substring(0,C.indexOf(\"?\"));var _=\"\",D=\"\",A=\"\",H,G,B=\"\";for(H=0;H<Math.max(E.length,C.length);H++)if(E.charAt(H).toLowerCase()!=C.charAt(H).toLowerCase()){G=H;while(E.charAt(G)!=\"/\"){if(G==0)break;G-=1}_=E.substring(G+1,E.length);_=_.substring(0,_.lastIndexOf(\"/\"));D=C.substring(G+1,C.length);D=D.substring(0,D.lastIndexOf(\"/\"));break}if(_!=\"\")for(H=0;H<_.split(\"/\").length;H++)B+=\"../\";if(D!=\"\")B+=D+\"/\";F=E.substring(0,E.lastIndexOf(\"/\")+1)+B+F}$.$dpPath=F}function K(C,$,D){var B=V[N],E=B[A](\"HEAD\").item(0),_=B.createElement(\"link\");_.href=C;_.rel=\"stylesheet\";_.type=\"text/css\";if($)_.title=$;if(D)_.charset=D;E.appendChild(_)}function X($,_){C($,\"onload\",_)}function Z(_,$){var B=_.document,D=false;F();if((/WebKit|KHTML|MSIE/i).test(navigator.userAgent))C();function E(_){if(!D){D=true;A();$(_)}}function G($){return typeof B[$]!=\"undefined\"}function C(){if(B.body!==null&&B.getElementsByTagName){if(G(\"fileSize\")){try{B.documentElement.doScroll(\"left\");E(\"documentready\")}catch($){}}if(G(\"readyState\")&&(/loaded|complete/).test(B.readyState))E(\"readyState\")}if(!D)setTimeout(C,10)}function A(){if(typeof B.removeEventListener==\"function\")B.removeEventListener(\"DOMContentLoaded\",E,false)}function F(){if(typeof B.addEventListener==\"function\")B.addEventListener(\"DOMContentLoaded\",E,false);var $=_.onload;_.onload=function(_){if(typeof $==\"function\")$();E(_||this.event)}}}function E($){$=$||T;var B=0,_=0;while($!=T){var D=$.parent[N][A](\"iframe\");for(var F=0;F<D.length;F++){try{if(D[F].contentWindow==$){var E=U(D[F]);B+=E.left;_+=E.top;break}}catch(C){}}$=$.parent}return{\"leftM\":B,\"topM\":_}}function U(E){if(R)return E.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},G=null,_=E.offsetTop,F=E.offsetLeft,D=E.offsetWidth,B=E.offsetHeight,C=E.offsetParent;if(C!=E)while(C){F+=C.offsetLeft;_+=C.offsetTop;if(C.tagName.toLowerCase()==\"body\")G=C.ownerDocument.defaultView;C=C.offsetParent}C=E.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(C.style.display))if(!a||C.style.overflow!==\"visible\"){F-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}var $=Y(G);F-=$.left;_-=$.top;D+=F;B+=_;return{\"left\":F,\"top\":_,\"right\":D,\"bottom\":B}}}function M($){$=$||T;var _=$[N];_=_[H]&&_[H].clientHeight&&_[H].clientHeight<=_.body.clientHeight?_[H]:_.body;return{\"width\":_.clientWidth,\"height\":_.clientHeight}}function Y($){$=$||T;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollLeft||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function B(_){src=_?(_.srcElement||_.target):null;if($dp&&$dp.dd&&$dp.dd.style.display==\"block\"&&src!=$dp.el){var A=$dp.el,B=$dp.cal,$=$dp.el[$dp.elProp];if($!=null){$dp.$w.hideSel();if($!=\"\"&&!$dp.readOnly)B.date.loadFromDate(B.splitDate($,B.dateFmt));if($==\"\"||(B.isDate(B.date)&&B.isTime(B.date)&&B.checkValid(B.date))){B.mark(true);if($!=\"\")B.update();else B.setRealValue(\"\");$dp.hide()}else B.mark(false)}else $dp.hide()}}var O=[];function W(){$dp.status=2;F()}function F(){if(O.length>0){var $=O.shift();$.el={innerHTML:\"\"};$.eCont=$dp.$($.eCont);$.autoPickDate=true;$.qsEnabled=false;I($)}}function S(C,$){$dp.win=V;C=C||{};if($){$dp.status=1;I({el:{innerHTML:\"\"}},true)}else if(C.eCont){O.push(C);if($dp.status==2)F()}else{if($dp.status==0)$dp.status=1;else if($dp.status!=2)return;var B,A=_();if(A){B=A.srcElement||A.target;A.cancelBubble=true}C.el=$dp.$(C.el||B);if(!C.el||C.el&&C.el.disabled||(C.el==$dp.el&&$dp.dd.style.display!=\"none\"&&$dp.dd.style.left!=\"-1970px\"))return;I(C)}function _(){if(G){func=_.caller;while(func!=null){var $=func.arguments[0];if($&&($+\"\").indexOf(\"Event\")>=0)return $;func=func.caller}return null}return event}}function I(G,A){for(var F in $)if(F.substring(0,1)!=\"$\")$dp[F]=$[F];for(F in G)if($dp[F]===undefined)$dp.errMsg=\"invalid property:\"+F;else $dp[F]=G[F];$dp.elProp=$dp.el&&$dp.el.nodeName==\"INPUT\"?\"value\":\"innerHTML\";if($dp.el[$dp.elProp]==null)return;if($dp.lang==\"auto\")$dp.lang=R?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!$dp.dd||$dp.eCont||($dp.lang&&$dp.realLang&&$dp.realLang.name!=$dp.lang)){if($dp.dd&&!$dp.eCont)T[N].body.removeChild($dp.dd);if($.$dpPath==\"\")D(_);var B=\"<iframe src=\\\"\"+$.$dpPath+\"My97DatePicker.htm\\\" frameborder=\\\"0\\\" border=\\\"0\\\" scrolling=\\\"no\\\"></iframe>\";if($dp.eCont){$dp.eCont.innerHTML=B;X($dp.eCont.childNodes[0],W)}else{$dp.dd=T[N].createElement(\"DIV\");$dp.dd.style.cssText=\"position:absolute;z-index:19700\";$dp.dd.innerHTML=B;T[N].body.appendChild($dp.dd);X($dp.dd.childNodes[0],W);if(A)$dp.dd.style.left=$dp.dd.style.top=\"-1970px\";else{$dp.show();C()}}}else if($dp.cal){$dp.show();$dp.cal.init();C()}function C(){var F=$dp.position.left,B=$dp.position.top,G=U($dp.el),$=E(V),C=M(T),A=Y(T),D=$dp.dd.offsetHeight,_=$dp.dd.offsetWidth;if(isNaN(B)){if(B==\"above\"||(B!=\"under\"&&(($.topM+G.bottom+D>C.height)&&($.topM+G.top-D>-5))))B=A.top+$.topM+G.top-D-3;else B=A.top+$.topM+G.bottom;B+=R?-1:1}else B+=A.top+$.topM;if(isNaN(F))F=A.left+Math.min($.leftM+G.left,C.width-_-5)-(R?2:0);else F+=A.left+$.leftM;$dp.dd.style.top=B+\"px\";$dp.dd.style.left=F+\"px\"}}})()"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/calendar.js",
    "content": "/*\n * My97 DatePicker 4.1\n * SITE: http://dp.my97.net\n * BLOG: http://my97.cnblogs.com\n * MAIL: smallcarrot@163.com\n */\nvar $c;if($FF){Event.prototype.__defineSetter__(\"returnValue\",function($){if(!$)this.preventDefault();return $});Event.prototype.__defineGetter__(\"srcElement\",function(){var $=this.target;while($.nodeType!=1)$=$.parentNode;return $});HTMLElement.prototype.attachEvent=function($,_){var A=$.replace(/on/,\"\");_._ieEmuEventHandler=function($){window.event=$;return _()};this.addEventListener(A,_._ieEmuEventHandler,false)}}function My97DP(){$c=this;$dp.$w=window;$dt=this.date=new DPDate();this.QS=[];$d=document.createElement(\"div\");$d.className=\"WdateDiv\";$d.onmousedown=hideSel;$d.innerHTML=\"<div id=dpTitle><div style=\\\"float:left\\\" class=\\\"navImg NavImgll\\\"></div><div style=\\\"float:left\\\" class=\\\"navImg NavImgl\\\"></div><div style=\\\"float:left\\\"><div class=\\\"menuSel MMenu\\\" style=\\\"z-index:1\\\"></div><input class=yminput_date style=\\\"width:50px\\\" tabindex=1></div><div style=\\\"float:left\\\"><div class=\\\"menuSel YMenu\\\" style=\\\"z-index:1\\\"></div><input class=yminput style=\\\"width:50px\\\" tabindex=2></div><div style=\\\"float:right\\\" class=\\\"navImg NavImgrr\\\"></div><div style=\\\"float:right\\\" class=\\\"navImg NavImgr\\\"></div></div><div style=\\\"position:absolute;overflow:hidden\\\"></div><div></div><div id=dpTime><div class=\\\"menuSel hhMenu\\\" style=\\\"z-index:1\\\"></div><div class=\\\"menuSel mmMenu\\\" style=\\\"z-index:1\\\"></div><div class=\\\"menuSel ssMenu\\\" style=\\\"z-index:1\\\"></div><table cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2><span id=dpTimeStr></span>&nbsp;<input class=tB maxlength=2 tabindex=3><input value=\\\":\\\" class=tm readonly><input class=tE maxlength=2 tabindex=4><input value=\\\":\\\" class=tm readonly><input class=tE maxlength=2 tabindex=5></td><td><button id=dpTimeUp></button></td></tr><tr><td><button id=dpTimeDown></button></td></tr></table></div><div id=dpQS></div><div id=dpControl><input class=dpButton id=dpClearInput type=button tabindex=6> <input class=dpButton id=dpTodayInput type=button tabindex=7> <input class=dpButton id=dpOkInput type=button tabindex=8></div>\";attachTabEvent($d,function(){hideSel()});_();this.init();$();$d.MI.attachEvent(\"onkeydown\",A);$d.yI.attachEvent(\"onkeydown\",A);$d.MI.onfocus=function($){this.className=\"yminputfocus2\";this.value=getA(this,\"realValue\");this.select();$c._fM();showB($d.MD)};$d.MI.onblur=function(){var $;if($lastInput==this){$dt.M=pIntDef(this.value,$dt.M);$=true}c_M($dt.M,$);this.className=\"yminput_date\";hide($d.MD)};$d.yI.onfocus=function(){this.className=\"yminputfocus\";this.select();$c._fy();showB($d.yD)};$d.yI.onblur=function(){var $;if($lastInput==this){$dt.y=pIntDef(this.value,$dt.y);$=true}c_y($dt.y,$);this.className=\"yminput\";hide($d.yD)};$d.HI.onfocus=function(){$c.currFocus=this;this.select();$c._fH();showB($d.HD)};$d.HI.onblur=function(){var $;if($lastInput==this){$dt.H=pIntDef(this.value,$dt.H);$=true}c_H($dt.H,$);hide($d.HD)};$d.mI.onfocus=function(){$c.currFocus=this;this.select();$c._fm();showB($d.mD)};$d.mI.onblur=function(){var $;if($lastInput==this){$dt.m=pIntDef(this.value,$dt.m);$=true}c_m($dt.m,$);hide($d.mD)};$d.sI.onfocus=function(){$c.currFocus=this;this.select();$c._fs();showB($d.sD)};$d.sI.onblur=function(){var $;if($lastInput==this){$dt.s=pIntDef(this.value,$dt.s);$=true}c_s($dt.s,$);hide($d.sD)};$d.HI.attachEvent(\"onkeydown\",A);$d.mI.attachEvent(\"onkeydown\",A);$d.sI.attachEvent(\"onkeydown\",A);$d.upButton.onclick=function(){updownEvent(1)};$d.downButton.onmousedown=function(){updownEvent(-1)};$d.qsDiv.onclick=function(){if($d.qsDivSel.style.display!=\"block\"){$c._fillQS();showB($d.qsDivSel)}else hide($d.qsDivSel)};attachTabEvent($d.okI,function(){$d.MI.focus();event.returnValue=false});document.body.appendChild($d);function _(){var A=$d.getElementsByTagName(\"div\"),$=$d.getElementsByTagName(\"input\"),B=$d.getElementsByTagName(\"button\"),_=$d.getElementsByTagName(\"span\");$d.navLeftImg=A[1];$d.leftImg=A[2];$d.rightImg=A[8];$d.navRightImg=A[7];$d.MI=$[0];$d.yI=$[1];$d.titleDiv=A[0];$d.MD=A[4];$d.yD=A[6];$d.qsDivSel=A[9];$d.dDiv=A[10];$d.tDiv=A[11];$d.HD=A[12];$d.mD=A[13];$d.sD=A[14];$d.qsDiv=A[15];$d.bDiv=A[16];$d.HI=$[2];$d.mI=$[4];$d.sI=$[6];$d.clearI=$[7];$d.todayI=$[8];$d.okI=$[9];$d.upButton=B[0];$d.downButton=B[1];$d.timeSpan=_[0]}function $(){$d.navLeftImg.onclick=function(){$ny=$ny<=0?$ny-1:-1;if($ny%5==0)$d.yI.focus();c_y($dt.y-1)};$d.leftImg.onclick=function(){var $=$dt.M;if($>1)$-=1;else{$=12;$dt.y-=1}s_y($dt.y);c_M($)};$d.rightImg.onclick=function(){var $=$dt.M;if($<12)$+=1;else{$=1;$dt.y+=1}s_y($dt.y);c_M($)};$d.navRightImg.onclick=function(){$ny=$ny>=0?$ny+1:1;if($ny%5==0)$d.yI.focus();c_y($dt.y+1)}}function A(){var $=event,_=($.which==undefined)?$.keyCode:$.which;if(!$OPERA&&!((_>=48&&_<=57)||(_>=96&&_<=105)||_==8||_==46||_==37||_==39||_==9))$.returnValue=false;$lastInput=$.srcElement}}My97DP.prototype={init:function(){$ny=0;$dp.cal=this;if($dp.readOnly&&$dp.el.readOnly!=null){$dp.el.readOnly=true;$dp.el.blur()}$();this.dateFmt=$dp.dateFmt;this._dealFmt();this.autoPickDate=$dp.autoPickDate||(($dp.has.st)?false:true);$tdt=this.tdate=new DPDate();this.ddateRe=this._initRe(\"disabledDates\");this.ddayRe=this._initRe(\"disabledDays\");this.loadDate();this.minDate=this.doCustomDate($dp.minDate,$dp.minDate!=$dp.defMinDate?$dp.realFmt:$dp.realFullFmt,$dp.defMinDate);this.maxDate=this.doCustomDate($dp.maxDate,$dp.maxDate!=$dp.defMaxDate?$dp.realFmt:$dp.realFullFmt,$dp.defMaxDate);if(this.minDate.compareWith(this.maxDate)>0)$dp.errMsg=$lang.err_1;this._makeDateInRange();$sdt=this.sdate=new DPDate($dt.y,$dt.M,$dt.d,$dt.H,$dt.m,$dt.s);if(!$dp.alwaysUseStartDate&&$dp.el[$dp.elProp]!=\"\")this.update();this.oldValue=$dp.el[$dp.elProp];setA($d.MI,\"realValue\",$dt.M);$d.MI.value=$lang.aMonStr[$dt.M-1];$d.yI.value=$dt.y;$d.HI.value=$dt.H;$d.mI.value=$dt.m;$d.sI.value=$dt.s;$d.timeSpan.innerHTML=$lang.timeStr;$d.clearI.value=$lang.clearStr;$d.todayI.value=$lang.todayStr;$d.okI.value=$lang.okStr;this.initShowAndHide();this.initBtn();if($dp.errMsg)alert($dp.errMsg);this.redraw();hideSel();if($dp.el.nodeType==1)$dp.attachEvent($dp.el,\"onkeydown\",function($){if($dp.dd.style.display!=\"none\"){k=($.which==undefined)?$.keyCode:$.which;if(k==9){if($dp.el[$dp.elProp]!=\"\")$c.update();hide($dp.dd)}}});function $(){var _,$;for(_=0;($=document.getElementsByTagName(\"link\")[_]);_++)if(getA($,\"rel\").indexOf(\"style\")!=-1&&getA($,\"title\")){$.disabled=true;if(getA($,\"title\")==$dp.skin)$.disabled=false}}},splitDate:function(J,C,O,E,B,G,F,K,L){var $;if(J&&J.loadDate)$=J;else{$=new DPDate();C=C||$dp.dateFmt;var H,N=0,A=/yyyy|yyy|yy|y|MM|M|dd|d|HH|H|mm|m|ss|s/g,M=J.split(/\\W+/),_=C.match(A);A.lastIndex=0;if(!L&&M.length!=_.length){var D=0,K=\"^\";while((M=A.exec(C))!==null){D=M.index-D;K+=(D==0)?\"\":(\".{\"+D+\"}\");D=A.lastIndex;switch(M[0]){case\"yyyy\":K+=\"(\\\\d{4})\";break;case\"yyy\":K+=\"(\\\\d{3})\";break;default:K+=\"(\\\\d\\\\d?)\";break}}K+=\".*$\";M=new RegExp(K).exec(J);N=1}if(M)for(H=0;H<_.length;H++){var I=M[H+N];if(I)switch(_[H]){case\"y\":case\"yy\":I=pIntDef(I,0);if(I<50)I+=2000;else I+=1900;$.y=I;break;case\"yyy\":$.y=pIntDef(I,0)+$dp.yearOffset;break;default:$[_[H].slice(-1)]=I;break}}}$.coverDate(O,E,B,G,F,K);return $},_initRe:function(_){var B,$=$dp[_],A=\"(?:\";if($){for(B=0;B<$.length;B++){A+=this.doExp($[B]);if(B!=$.length-1)A+=\"|\"}A=new RegExp(A+\")\")}else A=null;return A},update:function(){$dp.el[$dp.elProp]=this.getDateStr();this.setRealValue()},setRealValue:function($){var _=$dp.$($dp.vel),$=rtn($,this.getDateStr($dp.realFmt));if(_)_.value=$;setA($dp.el,\"realValue\",$)},doExp:function(s){var ps=\"yMdHms\",arr,tmpEval,re=/#\\{(.*?)\\}/;s=s+\"\";for(var i=0;i<ps.length;i++)s=s.replace(\"%\"+ps.charAt(i),this.getP(ps.charAt(i),null,$tdt));if(s.substring(0,3)==\"#F{\"){s=s.substring(3,s.length-1);if(s.indexOf(\"return \")<0)s=\"return \"+s;s=$dp.win.eval(\"new Function(\\\"\"+s+\"\\\");\");s=s()}else while((arr=re.exec(s))!=null){arr.lastIndex=arr.index+arr[1].length+2;tmpEval=pInt(eval(arr[1]));if(tmpEval<0)tmpEval=\"9700\"+(-tmpEval);s=s.substring(0,arr.index)+tmpEval+s.substring(arr.lastIndex+1)}return s},doCustomDate:function(A,B,_){var $;A=this.doExp(A);if(!A||A==\"\")A=_;if(typeof A==\"object\")$=A;else{$=this.splitDate(A,B,null,null,1,0,0,0,true);$.y=(\"\"+$.y).replace(/^9700/,\"-\");$.M=(\"\"+$.M).replace(/^9700/,\"-\");$.d=(\"\"+$.d).replace(/^9700/,\"-\");$.H=(\"\"+$.H).replace(/^9700/,\"-\");$.m=(\"\"+$.m).replace(/^9700/,\"-\");$.s=(\"\"+$.s).replace(/^9700/,\"-\");if(A.indexOf(\"%ld\")>=0){A=A.replace(/%ld/g,\"0\");$.d=0;$.M=pInt($.M)+1}$.refresh()}return $},loadDate:function(){var _,$;if($dp.alwaysUseStartDate||($dp.startDate!=\"\"&&$dp.el[$dp.elProp]==\"\")){_=this.doExp($dp.startDate);$=$dp.realFmt}else{_=$dp.el[$dp.elProp];$=this.dateFmt}$dt.loadFromDate(this.splitDate(_,$));if($dp.has.sd&&!this.isDate($dt)){$dt.y=$tdt.y;$dt.M=$tdt.M;$dt.d=$tdt.d}if($dp.has.st&&!this.isTime($dt)){$dt.H=$tdt.H;$dt.m=$tdt.m;$dt.s=$tdt.s}},isDate:function($){if($.y!=null)$=doStr($.y,4)+\"-\"+$.M+\"-\"+$.d;return $.match(/^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$/)},isTime:function($){if($.H!=null)$=$.H+\":\"+$.m+\":\"+$.s;return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},_makeDateInRange:function(){var _=this.checkRange(),A=true;if(_!=0){A=false;var $;if(_>0)$=this.maxDate;else $=this.minDate;if($dp.has.sd){$dt.y=$.y;$dt.M=$.M;$dt.d=$.d}if($dp.has.st){$dt.H=$.H;$dt.m=$.m;$dt.s=$.s}}return A},checkRange:function(A,$){$=$||$dt;var _=$.compareWith(this.minDate,A);if(_>0){_=$.compareWith(this.maxDate,A);if(_<0)_=0}return _},checkValid:function($,A,B){A=A||$dp.has.minUnit;var _=this.checkRange(A,$);if(_==0){if(A==\"d\"&&B==null)B=new Date($.y,$.M-1,$.d).getDay();_=!this.testDay(B)&&!this.testDate($)}else _=false;return _},_fd:function(){var F,D,E,L,H=new sb(),G,A,I,C,K=\"\",$=\"\",_=new DPDate($dt.y,$dt.M,$dt.d,0,0,0),J=_.y,B=_.M;G=new Date(J,B-1,1).getDay();A=1-G;I=new Date(J,B,0).getDay();C=new Date(J,B,0).getDate();H.a(\"<table class=WdayTable width=100% border=0 cellspacing=0 cellpadding=0>\");H.a(\"<tr class=MTitle align=center>\");F=$dp.isShowWeek?0:1;while(F<8)H.a(\"<td>\"+$lang.aWeekStr[F++]+\"</td>\");H.a(\"</tr>\");for(F=1,D=A;F<7;F++){H.a(\"<tr>\");for(E=0;E<7;E++){_.loadDate(J,B,D++);_.refresh();if(_.M==B){L=true;if(_.compareWith($sdt,\"d\")==0)K=\"Wselday\";else if(_.compareWith($tdt,\"d\")==0)K=\"Wtoday\";else K=(($dp.highLineWeekDay&&(E==0||E==6))?\"Wwday\":\"Wday\");$=(($dp.highLineWeekDay&&(E==0||E==6))?\"WwdayOn\":\"WdayOn\")}else if($dp.isShowOthers){L=true;K=\"WotherDay\";$=\"WotherDayOn\"}else L=false;if($dp.isShowWeek&&E==0&&(F<4||L))H.a(\"<td class=Wweek>\"+getWeek(_)+\"</td>\");H.a(\"<td align=center \");if(L){if(this.checkValid(_,\"d\",E)){H.a(\"onclick=\\\"day_Click(\"+_.y+\",\"+_.M+\",\"+_.d+\");\\\" \");H.a(\"onmouseover=\\\"this.className='\"+$+\"'\\\" \");H.a(\"onmouseout=\\\"this.className='\"+K+\"'\\\" \")}else K=\"WinvalidDay\";H.a(\"class=\"+K);H.a(\">\"+_.d+\"</td>\")}else H.a(\"></td>\")}H.a(\"</tr>\")}H.a(\"</table>\");return H.j()},testDate:function(_){var $=this.ddateRe&&this.ddateRe.test(this.getDateStr($dp.realFmt,_));if($dp.disabledDates&&$dp.opposite)$=!$;return $},testDay:function(_){var $=this.ddayRe&&this.ddayRe.test(_);if($dp.disabledDays&&$dp.opposite)$=!$;return $},_f:function(p,c,r,e){var s=new sb();bak=$dt[p];s.a(\"<table cellspacing=0 cellpadding=3 border=0\");for(var i=0;i<r;i++){s.a(\"<tr nowrap=\\\"nowrap\\\">\");for(var j=0;j<c;j++){s.a(\"<td align=right \");$dt[p]=eval(e);if(this.checkValid($dt,p)){s.a(\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"\");s.a(\"hide($d.\"+p+\"D);c_\"+p+\"(\"+$dt[p]+\");$d.\"+p+\"I.blur()\\\"\")}else s.a(\"class='invalidMenu'\");s.a(\">\"+(p==\"M\"?$lang.aMonStr[$dt[p]-1]:$dt[p])+\"</td>\")}s.a(\"</tr>\")}s.a(\"</table>\");$dt[p]=bak;return s.j()},_fM:function(){$d.MD.innerHTML=this._f(\"M\",2,6,\"i+j*6+1\")},_fy:function(_){var B,A=$dt.y,$=new sb();_=rtn(_,A-5);$.a(this._f(\"y\",2,5,_+\"+i+j*5\"));$.a(\"<table cellspacing=0 cellpadding=3 border=0 width=100%><tr><td \");$.a(this.minDate.y<_?\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown='event.cancelBubble=true;$c._fy(\"+(_-10)+\")'\":\"class='invalidMenu'\");$.a(\">\\u2190</td><td align=center class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"hide($d.yD);$d.yI.blur();\\\">\\xd7</td><td align=right \");$.a(this.maxDate.y>_+10?\"class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown='event.cancelBubble=true;$c._fy(\"+(_+10)+\")'\":\"class='invalidMenu'\");$.a(\">\\u2192</td></tr></table>\");$d.yD.innerHTML=$.j()},_fHMS:function(A,_,$){$d[A+\"D\"].innerHTML=this._f(A,6,_,$)},_fH:function(){this._fHMS(\"H\",4,\"i * 6 + j\")},_fm:function(){this._fHMS(\"m\",2,\"i * 30 + j * 5\")},_fs:function(){this._fHMS(\"s\",1,\"j * 10\")},_fillQS:function(A){this.initQS();var _=$d.qsDivSel,C=_.style,$=new sb();$.a(\"<table class=WdayTable width=\\\"\"+$d.dDiv.offsetWidth+\"px\\\" height=\\\"\"+$d.dDiv.offsetHeight+\"px\\\" border=0 cellspacing=0 cellpadding=0>\");$.a(\"<tr class=MTitle><td><div style=\\\"float:left\\\">\"+$lang.quickStr+\"</div>\");if(!A)$.a(\"<div style=\\\"float:right;cursor:pointer\\\" onclick=\\\"hideSel();hide($d.qsDivSel);\\\">\\xd7</div>\");$.a(\"</td></tr>\");for(var B=0;B<this.QS.length;B++)if(this.QS[B]){$.a(\"<tr><td nowrap='nowrap' class='menu' onmouseover=\\\"this.className='menuOn'\\\" onmouseout=\\\"this.className='menu'\\\" onmousedown=\\\"\");$.a(\"hideSel();hide($d.qsDivSel);day_Click(\"+this.QS[B].y+\", \"+this.QS[B].M+\", \"+this.QS[B].d+\",\"+this.QS[B].H+\",\"+this.QS[B].m+\",\"+this.QS[B].s+\");\\\">\");$.a(\"&nbsp;\"+this.getDateStr(null,this.QS[B]));$.a(\"</td></tr>\")}else $.a(\"<tr><td class='menu'>&nbsp;</td></tr>\");$.a(\"</table>\");_.innerHTML=$.j()},_dealFmt:function(){$(/yyyy|yyy|yy|y/);$(/MM|M/);$(/dd|d/);$(/HH|H/);$(/mm|m/);$(/ss|s/);$dp.has.sd=($dp.has.y||$dp.has.M||$dp.has.d)?true:false;$dp.has.st=($dp.has.H||$dp.has.m||$dp.has.s)?true:false;$dp.realFullFmt=$dp.realFullFmt.replace(/%Date/,$dp.realDateFmt).replace(/%Time/,$dp.realTimeFmt);if($dp.has.sd){if($dp.has.st)$dp.realFmt=$dp.realFullFmt;else $dp.realFmt=$dp.realDateFmt}else $dp.realFmt=$dp.realTimeFmt;function $(_){var $=(_+\"\").slice(1,2);$dp.has[$]=_.exec($dp.dateFmt)?($dp.has.minUnit=$,true):false}},initShowAndHide:function(){var $=false;$dp.has.y?($=true,show($d.yI,$d.navLeftImg,$d.navRightImg)):hide($d.yI,$d.navLeftImg,$d.navRightImg);$dp.has.M?($=true,show($d.MI,$d.leftImg,$d.rightImg)):hide($d.MI,$d.leftImg,$d.rightImg);$?show($d.titleDiv):hide($d.titleDiv);if($dp.has.st){show($d.tDiv);disHMS($d.HI,$dp.has.H);disHMS($d.mI,$dp.has.m);disHMS($d.sI,$dp.has.s)}else hide($d.tDiv);shorH($d.clearI,$dp.isShowClear);shorH($d.todayI,$dp.isShowToday);shorH($d.qsDiv,($dp.has.d&&$dp.qsEnabled));if($dp.eCont)hide($d.bDiv)},mark:function(B){if($cMark){$cMark=false;return}var A=$dp.el,_=$FF?\"class\":\"className\";if(B)C(A);else switch($dp.errDealMode){case 0:$cMark=true;if(confirm($lang.errAlertMsg)){A[$dp.elProp]=this.oldValue;C(A)}else $(A);break;case 1:A[$dp.elProp]=this.oldValue;C(A);break;case 2:$(A);break}function C(A){var $=A.className.replace(/WdateFmtErr/g,\"\");if(A.className!=$)setA(A,_,$)}function $($){setA($,_,$.className+\" WdateFmtErr\")}},getP:function(C,_,$){$=$||$dt;var E,B,D,A;switch(C.charAt(0)){case\"w\":A=getDay($);break;case\"D\":B=[C];A=$lang.aWeekStr[getDay($)+1];break;case\"W\":A=getWeek($);break;case\"y\":B=[\"yyyy\",\"yyy\",\"yy\",\"y\"];break;default:break}B=B||[C+C,C];_=_||B[0];for(E=0;E<B.length;E++){A=rtn(A,$[C]);D=B[E];if(_.indexOf(D)>=0)_=_.replace(D,doStr((C==\"y\"&&D.length<4)?(D.length<3?$.y%100:($.y+2000-$dp.yearOffset)%1000):A,D.length))}return _},getDateStr:function(_,$){$=$||$dt;_=_||this.dateFmt;var A=\"yMdHmswWD\";for(var B=0;B<A.length;B++)_=this.getP(A.charAt(B),_,$);return _},redraw:function(){$d.dDiv.innerHTML=this._fd();if(!$dp.has.d){this._fillQS(true);showB($d.qsDivSel)}else hide($d.qsDivSel);this.autoSize()},autoSize:function(){var $=parent.document.getElementsByTagName(\"iframe\");for(var _=0;_<$.length;_++)if($[_].contentWindow==window){$[_].style.width=$d.offsetWidth+\"px\";$[_].style.height=$d.offsetHeight+\"px\"}},pickDate:function(D,A,$,C,B,_){$dt.y=rtn(D,$dt.y);$dt.M=rtn(A,$dt.M);$dt.d=rtn($,$dt.d);if($dp.has.st){$dt.H=rtn(C,$dt.H);$dt.m=rtn(B,$dt.m);$dt.s=rtn(_,$dt.s)}while(!this.isDate($dt)&&$dt.d>0)$dt.d--;if(!$dp.eCont){this.update();if(this.checkValid($dt)){$c.mark(true);hide($dp.dd)}else $c.mark(false)}if($dp.onpicked)$dp.onpicked.call($dp.el,$dp);else if(this.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,\"change\")},initBtn:function(){$d.clearI.onclick=function(){var $;if($dp.onclearing)$=$dp.onclearing.call($dp.el,$dp);if(!$){$dp.el[$dp.elProp]=\"\";$c.setRealValue(\"\");hide($dp.dd);if($dp.oncleared)$dp.oncleared.call($dp.el,$dp);else if($c.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,\"change\")}};$d.okI.onclick=function(){day_Click()};if($dp.el[$dp.elProp]==\"\")$d.okI.value=$lang.okStr;else $d.okI.value=$lang.updateStr;if(this.checkValid($tdt)){$d.todayI.disabled=false;$d.todayI.onclick=function(){var $=$c.tdate;day_Click($.y,$.M,$.d,$.H,$.m,$.s)}}else $d.todayI.disabled=true},initQS:function(){var H,G,A,F,C=[],$=5,E=$dp.quickSel.length,_=$dp.has.minUnit;if(E>$)E=$;else if(_==\"m\"||_==\"s\")C=[0,15,30,45,59,-60,-45,-30,-15,-1];else for(H=0;H<$*2;H++)C[H]=$dt[_]-$+1+H;for(H=G=0;H<E;H++){A=this.doCustomDate($dp.quickSel[H]);if(this.checkValid(A))this.QS[G++]=A}var B=\"yMdHms\",D=[1,1,1,0,0,0];for(H=0;H<=B.indexOf(_);H++)D[H]=$dt[B.charAt(H)];for(H=0;G<$;H++)if(H<C.length){A=new DPDate(D[0],D[1],D[2],D[3],D[4],D[5]);A[_]=C[H];A.refresh();if(this.checkValid(A))this.QS[G++]=A}else this.QS[G++]=null}};function sb(){this.s=new Array();this.i=0;this.a=function($){this.s[this.i++]=$};this.j=function(){return this.s.join(\"\")}}function getWeek($){var _=new Date($.y,$.M-1,$.d),B=_.getDay();_.setDate(_.getDate()-(B+6)%7+3);var A=_.valueOf();_.setMonth(0);_.setDate(4);return Math.round((A-_.valueOf())/(7*86400000))+1}function getDay($){var _=new Date($.y,$.M-1,$.d);return _.getDay()}function show(){setDisp(arguments,\"\")}function showB(){setDisp(arguments,\"block\")}function hide(){setDisp(arguments,\"none\")}function setDisp(_,$){for(i=0;i<_.length;i++)_[i].style.display=$}function shorH(_,$){$?show(_):hide(_)}function disHMS(_,$){if($)_.disabled=\"\";else{_.disabled=\"disabled\";_.value=\"00\"}}function c_y(_,$){if($||_!=$dt.y){$dt.y=_;dealRange(\"y\");$c.redraw()}}function c_M(_,$){_=makeInRange(_,1,12);if($||_!=$dt.M){$dt.M=_;dealRange(\"M\");$c.redraw()}else s_M(_)}function day_Click(F,A,$,D,B,_){var C;if($dp.onpicking)C=$dp.onpicking.call($dp.el,$dp);if(!C){var E=$sdt.y==F&&$sdt.M==A&&$sdt.d==$;if(!E&&arguments.length!=0){$sdt.y=F;$sdt.M=A;s_y(F);s_M(A);c_d($,true)}if($c.autoPickDate||E||arguments.length==0)$c.pickDate(F,A,$,D,B,_)}}function c_d($,_){if(_||$!=$dt.d){$dt.d=$;dealRange(\"d\");$c.redraw()}}function c_H(_,$){_=makeInRange(_,0,23);if($||_!=$dt.H){$dt.H=_;dealRange(\"H\")}}function c_m(_,$){_=makeInRange(_,0,59);if($||_!=$dt.m){$dt.m=_;dealRange(\"m\")}}function c_s(_,$){_=makeInRange(_,0,59);if($||_!=$dt.s){$dt.s=_;dealRange(\"s\")}}function dealRange(type){var func,rv,v;func=\"s_\"+type+\"($dt.\"+type+\")\";rv=$c.checkRange();if(rv==0)eval(func);else if(rv<0)_setAll($c.minDate);else if(rv>0)_setAll($c.maxDate);function _setAll($){s_y($.y);s_M($.M);s_d($.d);if($dp.has.st){s_H($.H);s_m($.m);s_s($.s)}}}function s_y($){$dt.y=$d.yI.value=$}function s_M($){$dt.M=$;setA($d.MI,\"realValue\",$);$d.MI.value=$lang.aMonStr[$-1]}function s_d($){$sdt.d=$dt.d=$}function s_H($){$dt.H=$d.HI.value=$}function s_m($){$dt.m=$d.mI.value=$}function s_s($){$dt.s=$d.sI.value=$}function setA(A,_,$){if(A.setAttribute)A.setAttribute(_,$)}function getA(_,$){return _.getAttribute($)}function makeInRange(_,$,A){if(_<$)_=$;else if(_>A)_=A;return _}function attachTabEvent($,_){$.attachEvent(\"onkeydown\",function(){var $=event,A=($.which==undefined)?$.keyCode:$.which;if(A==9)_()})}function doStr($,_){$=$+\"\";while($.length<_)$=\"0\"+$;return $}function hideSel(){hide($d.yD,$d.MD,$d.HD,$d.mD,$d.sD)}function updownEvent($){if($c.currFocus==undefined)$c.currFocus=$d.mI;switch($c.currFocus){case $d.HI:c_H($dt.H+$);break;case $d.mI:c_m($dt.m+$);break;case $d.sI:c_s($dt.s+$);break}}function DPDate(D,A,$,C,B,_){this.loadDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(E,$.getFullYear());this.M=pIntDef(B,$.getMonth()+1);this.d=pIntDef(_,$.getDate());this.H=pIntDef(D,$.getHours());this.m=pIntDef(C,$.getMinutes());this.s=pIntDef(A,$.getSeconds())};this.loadFromDate=function($){if($==null)return;this.loadDate($.y,$.M,$.d,$.H,$.m,$.s)};this.coverDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(this.y,rtn(E,$.getFullYear()));this.M=pIntDef(this.M,rtn(B,$.getMonth()+1));this.d=$dp.has.d?pIntDef(this.d,rtn(_,$.getDate())):1;this.H=pIntDef(this.H,rtn(D,$.getHours()));this.m=pIntDef(this.m,rtn(C,$.getMinutes()));this.s=pIntDef(this.s,rtn(A,$.getSeconds()))};this.compareWith=function($,C){var A=\"yMdHms\",_,B;C=A.indexOf(C);C=C>=0?C:5;for(var D=0;D<=C;D++){B=A.charAt(D);_=this[B]-$[B];if(_>0)return 1;else if(_<0)return-1}return 0};this.refresh=function(){var $=new Date(this.y,this.M-1,this.d,this.H,this.m,this.s);this.y=$.getFullYear();this.M=$.getMonth()+1;this.d=$.getDate();this.H=$.getHours();this.m=$.getMinutes();this.s=$.getSeconds();return!isNaN(this.y)};this.loadDate(D,A,$,C,B,_)}function pInt($){return parseInt($,10)}function pIntDef(_,$){_=pInt(_);if(isNaN(_))_=$;return _}function rtn($,_){return $==null?_:$}function fireEvent(A,$){if($IE)A.fireEvent(\"on\"+$);else{var _=document.createEvent(\"HTMLEvents\");_.initEvent($,true,true);A.dispatchEvent(_)}}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/config.js",
    "content": "var langList = \n[\n\t{name:'en',\t\tcharset:'UTF-8'},\n\t{name:'zh-cn',\tcharset:'gb2312'},\n\t{name:'zh-tw',\tcharset:'GBK'}\n];\n\nvar skinList = \n[\n\t{name:'default',\tcharset:'gb2312'},\n\t{name:'whyGreen',\tcharset:'gb2312'}\n];"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"Ϸڸʽڳ޶Χ,Ҫ?\",\naWeekStr: [\"\",\"\",\"һ\",\"\",\"\",\"\",\"\",\"\"],\naMonStr: [\"һ\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"ʮ\",\"ʮһ\",\"ʮ\"],\nclearStr: \"\",\ntodayStr: \"\",\nokStr: \"ȷ\",\nupdateStr: \"ȷ\",\ntimeStr: \"ʱ\",\nquickStr: \"ѡ\", \nerr_1: 'Сڲܴ!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"Ϸڸʽڳ޶,ҪN?\",\naWeekStr: [\"\",\"\",\"һ\",\"\",\"\",\"\",\"\",\"\"],\naMonStr: [\"һ\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"ʮ\",\"ʮһ\",\"ʮ\"],\nclearStr: \"\",\ntodayStr: \"\",\nokStr: \"_\",\nupdateStr: \"_\",\ntimeStr: \"rg\",\nquickStr: \"x\",\nerr_1: 'Сڲܴ!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/readme.txt",
    "content": "ע:˰汾Ϊ 4.1 ʽ build 20081110\n\nʾʹ˵,󲿷ⶼͨ,ϸ\nhttp://www.my97.net/dp/demo/\n\n\n(ʱ,һҪصHTMLϸĴϢ):\nwww.my97.net/dp/support.asp\n\n\n\nhttp://my97.cnblogs.com\nhttp://blog.csdn.net/my97/\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/skin/default/datepicker.css",
    "content": "/* \n * My97ڿؼ My97 DatePicker Ver 4.0\n * Ƥ:default\n * Ƥ:My97\n */\n\n/* ѡ DIV */\n.WdateDiv{\n\twidth:220px;\n\tbackground-color:#f2f2f2;\n\tborder:#808080 1px solid;\n\tpadding:2px;\n\tfilter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='#cccccc');\n\tfont-family:Arial;\n}\n.WdateDiv *{font-size:9pt;font-family:Arial;}\n\n/****************************\n * ͼ\n ***************************/\n.WdateDiv .NavImg {\n\tcursor:pointer;\n\twidth:18px;\n\theight:16px;\n\tmargin-top:4px;\n}\n.WdateDiv .NavImgll {\n\tbackground:url(navLeft.gif) no-repeat;\n}\n.WdateDiv .NavImgl {\n\tbackground:url(left.gif) no-repeat;\n}\n.WdateDiv .NavImgr {\n\tbackground:url(right.gif) no-repeat;\n}\n.WdateDiv .NavImgrr {\n\tbackground:url(navRight.gif) no-repeat;\n}\n\n/****************************\n * ·\n ***************************/\n/* · DIV */\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tbackground:#f2f2f2;\n\tmargin-left:5px;\n}\n/*  INPUT */\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\tcursor:pointer;\n\tbackground:#f2f2f2;\n\tvertical-align:middle;\n\n}\n/* · INPUT */\n.WdateDiv .yminput_date{\n\tmargin-top:2px;\n\tmargin-left:10px;\n\tpadding-top:3px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\tcursor:pointer;\n\tbackground:#f2f2f2;\n\tvertical-align:middle;\n\n}\n\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus2{\n\tmargin-top:2px;\n\tmargin-left:10px;\n\tpadding-top:3px;\n\ttext-align:center;\n\tfont-weight:bold;\n\tcolor:blue;\n\tborder:#808080 1px solid;\n\theight:16px;\n}\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\tcolor:blue;\n\tborder:#808080 1px solid;\n\theight:16px;\n}\n/* ˵ѡ DIV */\n.WdateDiv .menuSel{\n\tposition:absolute;\n\ttop:10px;\n\tbackground-color:#FFFFFF;\t\n\tborder:#808080 1px solid;\n\tdisplay:none;\n\tfilter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='#cccccc');\n}\n/* ˵ʽ TD */\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\ttext-align:center;\n}\n/* ˵mouseoverʽ TD */\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\ttext-align:center;\n}\n/* ˵Чʱʽ TD */\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n/* ѡƫ DIV */\n.WdateDiv .YMenu{\n\tmargin-top:16px;\n\t\n}\n/* ѡƫ DIV */\n.WdateDiv .MMenu{\n\tmargin-top:16px;\n\twidth:62px;\n}\n/* ʱѡλ DIV */\n.WdateDiv .hhMenu{\n\tmargin-top:90px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .mmMenu{\n\tmargin-top:130px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n/****************************\n * \n ***************************/\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#c1e1dd;\n }\n/****************************\n * ,\n ***************************/\n/*  TR */\n.WdateDiv .MTitle{\n\tbackground-color:#f2f2f2;\n\tborder-bottom:#ccc 1px solid;\n\tfont-weight:bold;\n}\n/*  TABLE */\n.WdateDiv .WdayTable{\n\tline-height:23px;\n}\n/* ڸʽ TD */\n.WdateDiv .Wday{\n\tcursor:pointer;\n\tcolor:#0066cc;\n\tfont-size:14px;\n\t\n}\n/* ڸmouseoverʽ TD */\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\tfont-size:14px;\n\ttext-align:center;\n}\n/* ĩڸʽ TD */\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#0066cc;\n\tfont-size:14px;\n\t\n}\n/* ĩڸmouseoverʽ TD */\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#fff;\n\tbackground-color:#ff7800;\n\tfont-size:14px;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n\tfont-size:14px;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#426fd9;\n\tcolor:#fff;\n\tfont-size:14px;\n\ttext-align:center;\n}\n/* ·ݵ */\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#a6a6a6;\t\n\tbackground:#e3e3e3;\n\tfont-size:14px;\n}\n/* ·ݵmouseoverʽ */\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#bebdbd;\n\tcolor:#fff;\n\tfont-size:14px;\n}\n/* Чڵʽ,ڷΧڸʽ,ѡ */\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n\tfont-size:14px;\n}\n\n/****************************\n * ʱ\n ***************************/\n/* ʱ DIV */\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\twidth:80%;\n\n}\n/* ʱ SPAN */\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:2px;\n}\n/* ʱ INPUT */\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n/* ʱ ʱ INPUT */\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n/* ʱ ֺͼ ':' INPUT */\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱ  INPUT */\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱұߵϰť BUTTON */\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground-image:url(up.jpg);\n}\n/* ʱұߵ°ť BUTTON */\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground-image:url(down.jpg);\n}\n/****************************\n * \n ***************************/\n .WdateDiv #dpQS {\n\tmargin-top:3px;\n\tbackground:url(date.gif) no-repeat right;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n\tfloat:right;\n\n }\n.WdateDiv #dpControl {\n\ttext-align:left;\n\tmargin-top:3px;\n\tclear:both;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tpadding:2px 5px 2px 2px;\n\tmargin:3px 15px 3px 5px;\n\tfloat:right;\n\tborder:1px solid #808080;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/datepicker/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.1\n * Ƥ:whyGreen\n * Ƥ:why\n */\n \n/* ѡ DIV */\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n.WdateDiv *{font-size:9pt;}\n\n/****************************\n * ͼ\n ***************************/\n.WdateDiv .NavImg {\n\tcursor:pointer;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n.WdateDiv .NavImgll { background:url(img.gif) no-repeat; }\n.WdateDiv .NavImgl  { background:url(img.gif) no-repeat -16px 0px; }\n.WdateDiv .NavImgr  { background:url(img.gif) no-repeat -32px 0px; }\n.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; }\n/****************************\n * ·\n ***************************/\n/* · DIV */\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n/* · INPUT */\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:16px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n/* ·ýʱʽ INPUT */\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:16px;\n\twidth:50px;\n}\n/* ˵ѡ DIV */\n.WdateDiv .menuSel{\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n/* ˵ʽ TD */\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n/* ˵mouseoverʽ TD */\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n/* ˵Чʱʽ TD */\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n/* ѡƫ DIV */\n.WdateDiv .YMenu{\n\tmargin-top:16px;\n}\n/* ѡƫ DIV */\n.WdateDiv .MMenu{\n\tmargin-top:16px;\n\t*width:62px;\n}\n/* ʱѡλ DIV */\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n/* ѡλ DIV */\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n/****************************\n * \n ***************************/\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n/****************************\n * ,\n ***************************/\n /*  TR */\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n/*  TABLE */\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n/* ڸʽ TD */\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n/* ڸmouseoverʽ TD */\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n/* ĩڸʽ TD */\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n/* ĩڸmouseoverʽ TD */\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n/* ·ݵ */\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n/* ·ݵmouseoverʽ */\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n/* Чڵʽ,ڷΧڸʽ,ѡ */\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n/****************************\n * ʱ\n ***************************/\n/* ʱ DIV */\n.WdateDiv #dpTime{\n\t\n}\n/* ʱ SPAN */\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n/* ʱ INPUT */\n.WdateDiv #dpTime input{\n\theight:16px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n/* ʱ ʱ INPUT */\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n/* ʱ ֺͼ ':' INPUT */\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱ  INPUT */\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n/* ʱұߵϰť BUTTON */\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n/* ʱұߵ°ť BUTTON */\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n/****************************\n * \n ***************************/\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tpadding:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/ckdtree/api.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree &raquo; Api</title>\n\n\t<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\" />\n\t<link rel=\"stylesheet\" href=\"/dd.css\" type=\"text/css\" />\n\t<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n</head>\n\n<body>\n\n<div id=\"shadow\">\n\n\t<div id=\"content\">\n\n\t\t<div id=\"location\">\n\t\t\t<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a> &raquo; <a href=\"/javascripts/tree/api/\">Api</a></h1>\n\t\t</div>\n\n\n\t\t<div class=\"line\"></div>\n\n\t\t<div id=\"files\">\n\n\n<h3>Overview</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<ul class=\"arrow\">\n\t\t<li><a href=\"#functions\">Functions</a>\n\t\t\t<ul class=\"arrow\">\n\t\t\t\t<li><a href=\"#add\">add</a></li>\n\t\t\t\t<li><a href=\"#openall\">openAll</a></li>\n\t\t\t\t<li><a href=\"#closeall\">closeAll</a></li>\n\t\t\t\t<li><a href=\"#opento\">openTo</a></li>\n\t\t\t</ul>\n\t\t</li>\n\t\t<li><a href=\"#configuration\">Configuration</a></li>\n\t</ul>\n\n</div>\n\n<a name=\"functions\"></a>\n<h3>Functions</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<a name=\"add\"></a>\n\t<h4 class=\"func\">add()</h4>\n\t<p>Adds a node to the tree.<br />Can only be called before the tree is drawn.</p>\n\t<p>id, pid and name are required.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Unique identity number.</td>\n\t</tr>\n\t<tr>\n\t\t<td>pid</td>\n\t\t<td>Number</td>\n\t\t<td>Number refering to the parent node. The value for the root node has to be -1.</td>\n\t</tr>\n\t<tr>\n\t\t<td>name</td>\n\t\t<td>String</td>\n\t\t<td>Text label for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>url</td>\n\t\t<td>String</td>\n\t\t<td>Url for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>title</td>\n\t\t<td>String</td>\n\t\t<td>Title for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>Target for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>icon</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>iconOpen</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the open icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>open</td>\n\t\t<td>Boolean</td>\n\t\t<td>Is the node open.</td>\n\t</tr>\n\t</table>\n\t<br />\n\n\n\t<h4>Example</h4>\n\t<p><code>mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');</code></p>\n\t<br />\n\n\t<a name=\"openall\"></a>\n\t<h4 class=\"func\">openAll()</h4>\n\t<p>Opens all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.openAll();</code></p>\n\t<br />\n\n\n\t<a name=\"closeall\"></a>\n\t<h4 class=\"func\">closeAll()</h4>\n\t<p>Closes all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.closeAll();</code></p>\n\t<br />\n\n\n\t<a name=\"opento\"></a>\n\t<h4 class=\"func\">openTo()</h4>\n\t<p>Opens the tree to a certain node and can also select the node.<br />\n\tCan only be called after the tree is drawn.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Identity number for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>select</td>\n\t\t<td>Boolean</td>\n\t\t<td>Should the node be selected.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.openTo(4, true);</code></p>\n\n</div>\n\n<a name=\"configuration\"></a>\n<h3>Configuration</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Variable</th>\n\t\t<th>Type</th>\n\t\t<th>Default</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>true</td>\n\t\t<td>Target for all the nodes.</td>\n\t</tr>\n\t<tr>\n\t\t<td>folderLinks</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Should folders be links.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useSelection</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Nodes can be selected(highlighted).</td>\n\t</tr>\n\t<tr>\n\t\t<td>useCookies</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>The tree uses cookies to rember it's state.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useLines</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with lines.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useIcons</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with icons.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useStatusText</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Displays node names in the statusbar instead of the url.</td>\n\t</tr>\n\t<tr>\n\t\t<td>closeSameLevel</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Only one node within a parent can be expanded at the same time.  openAll() and closeAll() functions do not work when this is enabled.</td>\n\t</tr>\n\t<tr>\n\t\t<td>inOrder</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>If parent nodes are always added before children, setting this to true speeds up the tree.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.config.target = \"mytarget\";</code></p>\n\n</div>\n\n\t\t</div>\n\n\t\t<div class=\"line\"></div>\n\n\n\t\t<div id=\"copy\">\n\t\t\t<p class=\"right\"><a href=\"http://validator.w3.org/check/referer\">XHTML</a>, <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">CSS</a></p>\n\t\t\t<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\t\t</div>\n\n\t</div>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/ckdtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr?              |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.cbbox {\n\theight: 13px;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}\n.dtree .cx {\n\tpadding:0px; \n\tmargin:0px;\n\twidth:16px;\n\theight:12px;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/ckdtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr?              |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\n\r\n// Tree object\r\r\nfunction dTree(objName, iPath, formId) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t\t: null,\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t\t: false,\r\n\t\tuseCheckBox\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t: false,\r\r\n\t\tinOrder\t\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'/img/base.gif',\r\r\n\t\tfolder\t\t\t: iPath+'/img/folder.gif',\r\r\n\t\tfolderOpen\t: iPath+'/img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'/img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'/img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'/img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'/img/join.gif',\r\r\n\t\tjoinBottom\t: iPath+'/img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'/img/plus.gif',\r\r\n\t\tplusBottom\t: iPath+'/img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'/img/minus.gif',\r\r\n\t\tminusBottom\t: iPath+'/img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t: iPath+'/img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t: iPath+'/img/nolines_minus.gif'\r\r\n\t};\r\n\tthis.parEnum = \"\";\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\t\r\n\tthis.formId = (formId==null)?\"dTreeForm\":formId;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\"><form id=\"'+this.formId+'\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</form></div>';\r\n\t//document.getElementById(\"test\").value = str;\r\n\t//alert(str);\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tif(this.aNodes[n].pid == 0){\r\n\t\t\t\tthis.parEnum = \"\";\r\n\t\t\t}\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\n\t//alert(\"nodeId = \" + nodeId + \" | parentId = \" + node.pid + \" | nodeId = \" + node.id);\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\t\r\n\tif(this.config.useCheckBox && nodeId!=0){\r\n\t\tif(node.pid==0){\r\n\t\t\tthis.parEnum += node.id + \"-\";\r\n\t\t}\r\n\t\telse{\r\n\t\t\t//alert(\"parEnum1 = \" + this.parEnum + \"node id = \" + node.pid);\t\r\n\t\t\tvar pL = this.parEnum.indexOf(node.pid+\"-\");\r\n\t\t\t//alert(this.parEnum.substring(0,pL+(node.pid+\"-\").length))\r\n\t\t\tthis.parEnum = this.parEnum.substring(0,pL+(node.pid+\"-\").length) + node.id + \"-\";\t\t\r\n\t\t\t//alert(\"parEnum2 = \" + this.parEnum);\t\r\n\t\t}\r\n\r\n\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"id\" id=\"c'+this.parEnum+'\" onClick=\"caBox(\\''+this.formId+'\\',\\'c'+this.parEnum+'\\')\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t}\r\n\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\n\t\r\n\tstr += node.name;\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\n\t\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};\r\n\r\n\t\t/* checkbox tree */\r\n\t\tfunction caBox(formId, regx ) {\r\n\t\t\tif( document.getElementById( regx ).checked ){\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t\t// checked next node \r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\tfor(j=0;j<regxArray.length;j++){\r\n\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-1]+\"-\"));\r\n\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\tdocument.getElementById(pDiv).checked=true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\t// unChecked\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t\t// elements's all child set checked false;\r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = false;\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\t// c7 8\r\n\t\t\t\tfor(j=0;j<regxArray.length-1;j++){\r\n\t\t\t\t\tif( !isCheckedByRec(form, regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"))) ){\r\n\t\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"));\r\n\t\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\t\tdocument.getElementById(pDiv).checked=false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isCheckedByRec( form ,regx){\r\n\t\t\t//alert(\"isCheckedByRec = \" + regx);\r\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\r\n\t\t\t\t\t// isChecked\r\n\t\t\t\t\tif(element.id.indexOf(regx)!=-1 && element.checked && element.id!=regx ){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//alert(\"c1-7-\".indexOf(\"1-\"));\r\n\t\t//var st = \"1-3-4-\";\r\n\t\t//alert(st.split(\"-\").length);\r\n\t\t///alert(st.split(\"-\")[2]);\r\n\t\t//alert( st.lastIndexOf(\"-\", st.lastIndexOf(\"-\"))\t);"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/ckdtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\t<TEXTAREA NAME=\"\" ROWS=\"10\" COLS=\"80\" id=\"test\"></TEXTAREA>\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a></p>\n<script language=\"javascript\">\nd = new dTree('d','.','testForm');\nd.add('0','-1','');\nd.add('0401','0','г');\nd.add('040101','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040101&blocktype=6\");');\nd.add('040102','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040102&blocktype=6\");');\nd.add('040103','0401','ȫʽ','javascript:gotoUrl(\"blockcode=040103&blocktype=6\");');\nd.add('040104','0401','ʽ','javascript:gotoUrl(\"blockcode=040104&blocktype=6\");');\nd.add('040105','0401','ʽ𣨷ǻң','javascript:gotoUrl(\"blockcode=040105&blocktype=6\");');\nd.add('040106','0401','г','javascript:gotoUrl(\"blockcode=040106&blocktype=6\");');\nd.add('040107','0401','ȫ','javascript:gotoUrl(\"blockcode=040107&blocktype=6\");');\nd.add('040108','0401','ȫ𣨷ǻң','javascript:gotoUrl(\"blockcode=040108&blocktype=6\");');\nd.add('040109','0401','LOF','javascript:gotoUrl(\"blockcode=040109&blocktype=6\");');\nd.add('040110','0401','ETF','javascript:gotoUrl(\"blockcode=040110&blocktype=6\");');\nd.add('040111','0401','ѷת','javascript:gotoUrl(\"blockcode=040111&blocktype=6\");');\nd.add('040112','0401','ժƻ','javascript:gotoUrl(\"blockcode=040112&blocktype=6\");');\nd.add('0402','0','Ͷ');d.add('040201','0402','Ʊͻ','javascript:gotoUrl(\"blockcode=040201&blocktype=6\");');\nd.add('040202','0402','ծȯͻ','javascript:gotoUrl(\"blockcode=040202&blocktype=6\");');\nd.add('040203','0402','ͻ','javascript:gotoUrl(\"blockcode=040203&blocktype=6\");');\nd.add('040204','0402','ͻ','javascript:gotoUrl(\"blockcode=040204&blocktype=6\");');\nd.add('0403','0','Ͷʷ');d.add('040301','0403','ɳͻ','javascript:gotoUrl(\"blockcode=040301&blocktype=6\");');\nd.add('040302','0403','ֵͣͣ','javascript:gotoUrl(\"blockcode=040302&blocktype=6\");');\nd.add('040303','0403','ƽͻ','javascript:gotoUrl(\"blockcode=040303&blocktype=6\");');\nd.add('040304','0403','ָͻ','javascript:gotoUrl(\"blockcode=040304&blocktype=6\");');\nd.add('040305','0403','ͻ','javascript:gotoUrl(\"blockcode=040305&blocktype=6\");');\nd.add('040306','0403','ҵͻ','javascript:gotoUrl(\"blockcode=040306&blocktype=6\");');\nd.add('0404','0','˾');d.add('040400000001','0404','ʱ޹˾','javascript:gotoUrl(\"blockcode=040400000001&blocktype=6\");');\nd.add('040400000002','0404','˾','javascript:gotoUrl(\"blockcode=040400000002&blocktype=6\");');\nd.add('040400000003','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000003&blocktype=6\");');\nd.add('040400000004','0404','ɻ޹˾','javascript:gotoUrl(\"blockcode=040400000004&blocktype=6\");');\nd.add('040400000007','0404','Ϸ޹˾','javascript:gotoUrl(\"blockcode=040400000007&blocktype=6\");');\nd.add('040400000008','0404','㶫Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000008&blocktype=6\");');\nd.add('040400000009','0404','֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000009&blocktype=6\");');\nd.add('040400000010','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400000010&blocktype=6\");');\nd.add('040400000011','0404','ɽ޹˾','javascript:gotoUrl(\"blockcode=040400000011&blocktype=6\");');\nd.add('040400000013','0404','Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000013&blocktype=6\");');\nd.add('040400000014','0404','麣ŸͶʻ','javascript:gotoUrl(\"blockcode=040400000014&blocktype=6\");');\nd.add('040400000015','0404','ʵ޹˾','javascript:gotoUrl(\"blockcode=040400000015&blocktype=6\");');\nd.add('040400000016','0404','㶫չл','javascript:gotoUrl(\"blockcode=040400000016&blocktype=6\");');\nd.add('040400000017','0404','㷢֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000017&blocktype=6\");');\nd.add('040400000018','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000018&blocktype=6\");');\nd.add('040400000019','0404','㶫ʡϷڷܹ˾','javascript:gotoUrl(\"blockcode=040400000019&blocktype=6\");');\nd.add('040400000020','0404','㶫֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000020&blocktype=6\");');\nd.add('040400000021','0404','֤ͨȯ޹˾ֹ˾','javascript:gotoUrl(\"blockcode=040400000021&blocktype=6\");');\nd.add('040400000022','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000022&blocktype=6\");');\nd.add('040400000023','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000023&blocktype=6\");');\nd.add('040400000024','0404','֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000024&blocktype=6\");');\nd.add('040400000025','0404','㶫Ͷʹ˾Ͷʻ','javascript:gotoUrl(\"blockcode=040400000025&blocktype=6\");');\nd.add('040400000026','0404','ʢ޹˾','javascript:gotoUrl(\"blockcode=040400000026&blocktype=6\");');\nd.add('040400000027','0404','Ļ޹˾','javascript:gotoUrl(\"blockcode=040400000027&blocktype=6\");');\nd.add('040400000028','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000028&blocktype=6\");');\nd.add('040400000030','0404','ͲͶʻ˾','javascript:gotoUrl(\"blockcode=040400000030&blocktype=6\");');\nd.add('040400000031','0404','йϺеڶӪҵ','javascript:gotoUrl(\"blockcode=040400000031&blocktype=6\");');\nd.add('040400000033','0404','Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000033&blocktype=6\");');\nd.add('040400000061','0404','йͷк֧','javascript:gotoUrl(\"blockcode=040400000061&blocktype=6\");');\nd.add('040400000062','0404','ڰ뵺Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000062&blocktype=6\");');\nd.add('040400000111','0404','̩֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000111&blocktype=6\");');\nd.add('040400000135','0404','йͶʹɷ޹˾','javascript:gotoUrl(\"blockcode=040400000135&blocktype=6\");');\nd.add('040400000138','0404','йũҵзл','javascript:gotoUrl(\"blockcode=040400000138&blocktype=6\");');\nd.add('040400000139','0404','й֧Ͷʻ','javascript:gotoUrl(\"blockcode=040400000139&blocktype=6\");');\nd.add('040400001423','0404','ͨкϷ','javascript:gotoUrl(\"blockcode=040400001423&blocktype=6\");');\nd.add('040400052134','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400052134&blocktype=6\");');\nd.add('040400053162','0404','׷޹˾','javascript:gotoUrl(\"blockcode=040400053162&blocktype=6\");');\nd.add('040400055027','0404','޹˾','javascript:gotoUrl(\"blockcode=040400055027&blocktype=6\");');\nd.add('040400062164','0404','ӯ޹˾','javascript:gotoUrl(\"blockcode=040400062164&blocktype=6\");');\nd.add('040400064608','0404','ǻ޹˾','javascript:gotoUrl(\"blockcode=040400064608&blocktype=6\");');\nd.add('040400065772','0404','ӻ޹˾','javascript:gotoUrl(\"blockcode=040400065772&blocktype=6\");');\nd.add('040400065906','0404','Ͷ޹˾','javascript:gotoUrl(\"blockcode=040400065906&blocktype=6\");');\nd.add('040400069602','0404','ϺͶ޹˾','javascript:gotoUrl(\"blockcode=040400069602&blocktype=6\");');\nd.add('040400073182','0404','һ޹˾','javascript:gotoUrl(\"blockcode=040400073182&blocktype=6\");');\nd.add('040400074823','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040400074823&blocktype=6\");');\nd.add('040400074843','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400074843&blocktype=6\");');\nd.add('040400075137','0404','ӥ޹˾','javascript:gotoUrl(\"blockcode=040400075137&blocktype=6\");');\nd.add('040400075801','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400075801&blocktype=6\");');\nd.add('040400077211','0404','޹˾','javascript:gotoUrl(\"blockcode=040400077211&blocktype=6\");');\nd.add('040400077900','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400077900&blocktype=6\");');\nd.add('040400079057','0404','˳ǻ޹˾','javascript:gotoUrl(\"blockcode=040400079057&blocktype=6\");');\nd.add('040400079708','0404','㷢޹˾','javascript:gotoUrl(\"blockcode=040400079708&blocktype=6\");');\nd.add('040400081892','0404','̩Ż޹˾','javascript:gotoUrl(\"blockcode=040400081892&blocktype=6\");');\nd.add('040400083290','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083290&blocktype=6\");');\nd.add('040400083474','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083474&blocktype=6\");');\nd.add('040400083700','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083700&blocktype=6\");');\nd.add('040400083833','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083833&blocktype=6\");');\nd.add('040400084011','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400084011&blocktype=6\");');\nd.add('040400084136','0404','ŵ޹˾','javascript:gotoUrl(\"blockcode=040400084136&blocktype=6\");');\nd.add('040400084387','0404','λ޹˾','javascript:gotoUrl(\"blockcode=040400084387&blocktype=6\");');\nd.add('040400086048','0404','󱣵Ż޹˾','javascript:gotoUrl(\"blockcode=040400086048&blocktype=6\");');\nd.add('040400086315','0404','ͶĦ޹˾','javascript:gotoUrl(\"blockcode=040400086315&blocktype=6\");');\nd.add('040400086437','0404','к޹˾','javascript:gotoUrl(\"blockcode=040400086437&blocktype=6\");');\nd.add('040400086839','0404','ʻ޹˾','javascript:gotoUrl(\"blockcode=040400086839&blocktype=6\");');\nd.add('040400086979','0404','ι˾','javascript:gotoUrl(\"blockcode=040400086979&blocktype=6\");');\nd.add('040400089171','0404','ͻ޹˾','javascript:gotoUrl(\"blockcode=040400089171&blocktype=6\");');\nd.add('040400089251','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089251&blocktype=6\");');\nd.add('040400089255','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089255&blocktype=6\");');\nd.add('040400089257','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089257&blocktype=6\");');\nd.add('040400089262','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089262&blocktype=6\");');\nd.add('040400089990','0404','Ѱ̩޹˾','javascript:gotoUrl(\"blockcode=040400089990&blocktype=6\");');\nd.add('040400090204','0404','ֻ޹˾','javascript:gotoUrl(\"blockcode=040400090204&blocktype=6\");');\nd.add('040400090471','0404','ʩ޵»޹˾','javascript:gotoUrl(\"blockcode=040400090471&blocktype=6\");');\nd.add('040400090517','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400090517&blocktype=6\");');\nd.add('040400200471','0404','ųϻ˾','javascript:gotoUrl(\"blockcode=040400200471&blocktype=6\");');\nd.add('040400200630','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400200630&blocktype=6\");');\nd.add('040400206677','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400206677&blocktype=6\");');\nd.add('040400215348','0404','޹˾','javascript:gotoUrl(\"blockcode=040400215348&blocktype=6\");');\nd.add('040400216478','0404','ʴҵ޹˾','javascript:gotoUrl(\"blockcode=040400216478&blocktype=6\");');\nd.add('040403133598','0404','ŷ޹˾  ','javascript:gotoUrl(\"blockcode=040403133598&blocktype=6\");');\nd.add('040403135981','0404','Ŵ޹˾','javascript:gotoUrl(\"blockcode=040403135981&blocktype=6\");');\nd.add('040403139945','0404','ŵ»޹˾','javascript:gotoUrl(\"blockcode=040403139945&blocktype=6\");');\nd.add('040403140700','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040403140700&blocktype=6\");');\nd.add('0405','0','й');d.add('040500000035','0405','йũҵ','javascript:gotoUrl(\"blockcode=040500000035&blocktype=6\");');\nd.add('040500000036','0405','ͨ','javascript:gotoUrl(\"blockcode=040500000036&blocktype=6\");');\nd.add('040500000037','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000037&blocktype=6\");');\nd.add('040500000047','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000047&blocktype=6\");');\nd.add('040500000053','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000053&blocktype=6\");');\nd.add('040500008577','0405','Ϻֶչйɷ޹˾','javascript:gotoUrl(\"blockcode=040500008577&blocktype=6\");');\nd.add('040500011967','0405','й','javascript:gotoUrl(\"blockcode=040500011967&blocktype=6\");');\nd.add('040500046321','0405','','javascript:gotoUrl(\"blockcode=040500046321&blocktype=6\");');\nd.add('040500074499','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500074499&blocktype=6\");');\nd.add('040500082542','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500082542&blocktype=6\");');\nd.add('040500084226','0405','ҵйɷ޹˾','javascript:gotoUrl(\"blockcode=040500084226&blocktype=6\");');\nd.add('040500089958','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500089958&blocktype=6\");');\n\n\ndocument.write(d);\n\n</script>\n \n          \t      <SCRIPT LANGUAGE=\"JavaScript\">\n             \t      // document.write(d);\n\t\t             </SCRIPT>     \n\n\t<script type=\"text/javascript\">\n\n\t\t//\t\t\t\td..config.useCheckBox=true;\n\n\t\t/*d.add(0,-1,'My example tree');\n\t\td.add(1,0,'Node 1');\n\t\td.add(2,0,'Node 2');\n\t\td.add(3,1,'Node 1.1');\n\t\td.add(4,0,'Node 3');\n\t\td.add(5,3,'Node 1.1.1');\n\t\td.add(8,1,'Node 1.2');\n\t\td.add(7,0,'My Pictures');\n\t\td.add(10,7,'The trip to Iceland');\n\t\td.add(11,7,'Mom\\'s birthday');\n*/\n\n\n\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\n\t\tfunction submitForm(){\n\n\t\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\t\t\t//alert(document.getElementById(\"testForm\"));\n\t\t\tvar ids = \"\";\n\t\t\tvar form = document.getElementById(\"testForm\");\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\n\t\t\t\tvar element = form.elements[i];\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\n\t\t\t\t\tif( element.checked == true ){\n\t\t\t\t\t\t//alert(\"id=\" + element.id +\"\\r\\n\" + \"name=\" + element.name + \"\\r\\n\" + \"value=\"+element.value);\n\t\t\t\t\t\tids = ids + element.value + \",\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t\talert(\"ids = \" + ids);\n\t\n\t\t}\n\t\t\n\t\t//-->\n\t</script>\n\n \n\t<input type=\"button\" value=\" \" onClick=\"submitForm()\"/>\n\n\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n\n\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/bzgk.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n<title>ϢϢ</title>\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n</head>\n\n<body>\n<div id=\"bz_box\">\n\t<!--ͷ-->\n  <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n    <tr>\n      <td class=\"bz_left\">\n\t  <div id=\"bz_l\">\n\t  \t<!---->\n\t  </div>\n\t  </td>\n      <td class=\"bzshow_bg\">\n\t  <div id=\"bz_r\">\t  \n\t  \t<div class=\"right_lmwz\">ڵλǣϢϢ >ſ</div>\n\t\t<!--ſ-->\n\t\t<div class=\"bzshow\">\n\t\t\t<div class=\"bzshow_bt\"><img src=\"skin/default/images/bzindex/dot02.jpg\" />֯</div>\n\t\t\t<div class=\"bzshow_infor\">\n\t<div class=\"dtree\">\n\t<p><a href=\"javascript: d.openAll();\">չ</a> | <a href=\"javascript: d.closeAll();\"></a></p>\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ҵ\",\"\");\nd.add('0101','01',\"ʡ˾\",\"#\");\nd.add('010101','0101',\"\",\"#\");\nd.add('01010101','010101',\"־ֳ칫\",\"#\");\nd.add('01010102','010101',\"չ߻\",\"#\");\nd.add('01010103','010101',\"Դ\",\"#\");\nd.add('01010104','010101',\"ȫ첿\",\"#\");\nd.add('01010105','010101',\"ʲ\",\"#\");\nd.add('01010106','010101',\"\",\"#\");\nd.add('01010107','010101',\"\",\"#\");\nd.add('01010108','010101',\"\",\"#\");\nd.add('01010109','010101',\"ͨ\",\"#\");\nd.add('01010110','010101',\"ͨ\",\"#\");\n\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n\n\t\t\t</div>\n\t\t</div>\n\t  </div>\n\t  </td>\n    </tr>\n  </table>\n  <!--β-->\n</div>\n</body>\n</html>\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/dept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>֯</h2>\n\n<div class=\"dtree\">\n\n\t<p><a href=\"javascript: d.openAll();\">չ</a> | <a href=\"javascript: d.closeAll();\"></a></p>\n\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ҵ\",\"\");\nd.add('0101','01',\"ʡ˾\",\"#\");\nd.add('010101','0101',\"\",\"#\");\nd.add('01010101','010101',\"ֻر\",\"#\");\nd.add('01010102','010101',\"\",\"#\");\nd.add('01010103','010101',\"\",\"#\");\nd.add('01010104','010101',\"ͨ\",\"#\");\nd.add('0101010401','01010104',\"\",\"#\");\nd.add('0101010402','01010104',\"\",\"#\");\nd.add('01010105','010101',\"ѵ\",\"#\");\nd.add('010102','0101',\"\",\"#\");\nd.add('010103','0101',\"幩\",\"#\");\nd.add('010104','0101',\"\",\"#\");\nd.add('010105','0101',\"\",\"#\");\nd.add('010106','0101',\"ͭ\",\"#\");\nd.add('010107','0101',\"μϹ\",\"#\");\nd.add('010108','0101',\"й\",\"#\");\nd.add('010109','0101',\"Ӱ\",\"#\");\nd.add('010110','0101',\"й繫˾\",\"#\");\nd.add('0102','01',\"ʡ˾\",\"#\");\nd.add('0103','01',\"ɳҵ\",\"#\");\nd.add('0104','01',\"е˾\",\"#\");\nd.add('0105','01',\"ɽʡ˾\",\"#\");\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr               |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\r\n\r\r\n// Tree object\r\r\nfunction dTree(objName,iPath) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t: 'main',\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t\t: false,\r\r\n\t\tinOrder\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'img/base.gif',\r\r\n\t\tfolder\t\t\t\t: iPath+'img/folder.gif',\r\r\n\t\tfolderOpen\t\t\t: iPath+'img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'img/join.gif',\r\r\n\t\tjoinBottom\t\t\t: iPath+'img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'img/plus.gif',\r\r\n\t\tplusBottom\t\t\t: iPath+'img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'img/minus.gif',\r\r\n\t\tminusBottom\t\t\t: iPath+'img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t\t: iPath+'img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t\t: iPath+'img/nolines_minus.gif'\r\t\r\n\t};\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</div>';\r\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\r\n\tstr += node.name;\r\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/dtreebak.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\r\n\r\r\n// Tree object\r\r\nfunction dTree(objName,iPath) {\r\r\n\tthis.config = {\r\r\n\t\ttarget\t\t\t\t: null,\r\r\n\t\tfolderLinks\t\t\t: true,\r\r\n\t\tuseSelection\t\t: true,\r\r\n\t\tuseCookies\t\t\t: true,\r\r\n\t\tuseLines\t\t\t: true,\r\r\n\t\tuseIcons\t\t\t: true,\r\r\n\t\tuseStatusText\t\t: false,\r\r\n\t\tcloseSameLevel\t\t: false,\r\r\n\t\tinOrder\t\t\t\t: false\r\r\n\t}\r\r\n\tthis.icon = {\r\r\n\t\troot\t\t\t\t: iPath+'img/base.gif',\r\r\n\t\tfolder\t\t\t\t: iPath+'img/folder.gif',\r\r\n\t\tfolderOpen\t\t\t: iPath+'img/folderopen.gif',\r\r\n\t\tnode\t\t\t\t: iPath+'img/page.gif',\r\r\n\t\tempty\t\t\t\t: iPath+'img/empty.gif',\r\r\n\t\tline\t\t\t\t: iPath+'img/line.gif',\r\r\n\t\tjoin\t\t\t\t: iPath+'img/join.gif',\r\r\n\t\tjoinBottom\t\t\t: iPath+'img/joinbottom.gif',\r\r\n\t\tplus\t\t\t\t: iPath+'img/plus.gif',\r\r\n\t\tplusBottom\t\t\t: iPath+'img/plusbottom.gif',\r\r\n\t\tminus\t\t\t\t: iPath+'img/minus.gif',\r\r\n\t\tminusBottom\t\t\t: iPath+'img/minusbottom.gif',\r\r\n\t\tnlPlus\t\t\t\t: iPath+'img/nolines_plus.gif',\r\r\n\t\tnlMinus\t\t\t\t: iPath+'img/nolines_minus.gif'\r\t\r\n\t};\r\r\n\tthis.obj = objName;\r\r\n\tthis.aNodes = [];\r\r\n\tthis.aIndent = [];\r\r\n\tthis.root = new Node(-1);\r\r\n\tthis.selectedNode = null;\r\r\n\tthis.selectedFound = false;\r\r\n\tthis.completed = false;\r\r\n};\r\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\tstr += '</div>';\r\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\r\n\tstr += node.name;\r\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/dtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a> | <a href=\"javascript: d.openTo('01040102',true);\">open node</a></p>\n\n\t<script type=\"text/javascript\">\n\t\t<!--\n\t\t\n\t\td = new dTree('d','');\n\nd.add('01','-1',\"ϵͳ˵\",\"\");\nd.add('0101','01',\"ϵͳҳ\",\"/home/main.do\");\nd.add('010101','0101',\"鿴\",\"/workplan/dailyViewAction.do\");\nd.add('010102','0101',\"½\",\"/workplan/dailyCreateAction.do\");\nd.add('010103','0101',\"޸\",\"/workplan/dailyUpdateAction.do\");\nd.add('010104','0101',\"ɾ\",\"/workplan/dailyDeleteAction.do\");\nd.add('010105','0101',\"ѯ\",\"/workplan/dailySearchAction.do\");\nd.add('0102','01',\"֪ʶ\",\"/knowlege/welcome.do\");\nd.add('0103','01',\"Ϣ\",\"/base_code/welcome.do\");\nd.add('0104','01',\"ϵͳ\",\"/system_admin/welcome.do\");\nd.add('010401','0104',\"Ȩ޹\",\"\");\nd.add('01040101','010401',\"֯\",\"/system_admin/organizationListAction.do\");\nd.add('0104010101','01040101',\"鿴\",\"/system_admin/deptViewAction.do\");\nd.add('0104010102','01040101',\"½\",\"/system_admin/deptCreateAction.do\");\nd.add('0104010103','01040101',\"޸\",\"/system_admin/deptUpdateAction.do\");\nd.add('0104010104','01040101',\"ɾ\",\"/system_admin/deptDeleteAction.do\");\nd.add('0104010105','01040101',\"ѯ\",\"/system_admin/deptSearchAction.do\");\nd.add('0104010106','01040101',\"\",\"/system_admin/deptSortAction.do\");\nd.add('01040102','010401',\"û\",\"/system_admin/userListAction.do\");\nd.add('0104010201','01040102',\"鿴\",\"/system_admin/userViewAction.do\");\nd.add('0104010202','01040102',\"½\",\"/system_admin/userCreateAction.do\");\nd.add('0104010203','01040102',\"޸\",\"/system_admin/userUpdateAction.do\");\nd.add('0104010204','01040102',\"ɾ\",\"/system_admin/userDeleteAction.do\");\nd.add('0104010205','01040102',\"ѯ\",\"/system_admin/userSearchAction.do\");\nd.add('0104010206','01040102',\"\",\"/system_admin/userSortAction.do\");\nd.add('0104010207','01040102',\"\",\"/system_admin/userResetPassAction.do\");\nd.add('0104010208','01040102',\"\",\"/system_admin/userToUseAction.do\");\nd.add('0104010209','01040102',\"ֹ\",\"/system_admin/userStopAction.do\");\nd.add('01040103','010401',\"ɫ\",\"/system_admin/roleListAction.do\");\nd.add('0104010301','01040103',\"鿴\",\"/system_admin/roleViewAction.do\");\nd.add('0104010302','01040103',\"½\",\"/system_admin/roleCreateAction.do\");\nd.add('0104010303','01040103',\"޸\",\"/system_admin/roleUpdateAction.do\");\nd.add('0104010304','01040103',\"ɾ\",\"/system_admin/roleDeleteAction.do\");\nd.add('0104010305','01040103',\"ѯ\",\"/system_admin/roleSearchAction.do\");\nd.add('01040104','010401',\"־\",\"/system_admin/roleListAction.do\");\nd.add('010402','0104',\"ϵͳ\",\"\");\nd.add('01040201','010402',\"ϵͳ\",\"/system_admin/organizationListAction.do\");\nd.add('01040202','010402',\"ݹ\",\"/system_admin/userListAction.do\");\nd.add('0105','01',\"Ŀ\",\"/project_sample/welcome.do\");\ndocument.write(d);\n\n\n\n\t\t//-->\n\t</script>\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/tdtree/api.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree &raquo; Api</title>\n\n\t<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\" />\n\t<link rel=\"stylesheet\" href=\"/dd.css\" type=\"text/css\" />\n\t<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n</head>\n\n<body>\n\n<div id=\"shadow\">\n\n\t<div id=\"content\">\n\n\t\t<div id=\"location\">\n\t\t\t<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a> &raquo; <a href=\"/javascripts/tree/api/\">Api</a></h1>\n\t\t</div>\n\n\n\t\t<div class=\"line\"></div>\n\n\t\t<div id=\"files\">\n\n\n<h3>Overview</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<ul class=\"arrow\">\n\t\t<li><a href=\"#functions\">Functions</a>\n\t\t\t<ul class=\"arrow\">\n\t\t\t\t<li><a href=\"#add\">add</a></li>\n\t\t\t\t<li><a href=\"#openall\">openAll</a></li>\n\t\t\t\t<li><a href=\"#closeall\">closeAll</a></li>\n\t\t\t\t<li><a href=\"#opento\">openTo</a></li>\n\t\t\t</ul>\n\t\t</li>\n\t\t<li><a href=\"#configuration\">Configuration</a></li>\n\t</ul>\n\n</div>\n\n<a name=\"functions\"></a>\n<h3>Functions</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<a name=\"add\"></a>\n\t<h4 class=\"func\">add()</h4>\n\t<p>Adds a node to the tree.<br />Can only be called before the tree is drawn.</p>\n\t<p>id, pid and name are required.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Unique identity number.</td>\n\t</tr>\n\t<tr>\n\t\t<td>pid</td>\n\t\t<td>Number</td>\n\t\t<td>Number refering to the parent node. The value for the root node has to be -1.</td>\n\t</tr>\n\t<tr>\n\t\t<td>name</td>\n\t\t<td>String</td>\n\t\t<td>Text label for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>url</td>\n\t\t<td>String</td>\n\t\t<td>Url for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>title</td>\n\t\t<td>String</td>\n\t\t<td>Title for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>Target for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>icon</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>iconOpen</td>\n\t\t<td>String</td>\n\t\t<td>Image file to use as the open icon. Uses default if not specified.</td>\n\t</tr>\n\t<tr>\n\t\t<td>open</td>\n\t\t<td>Boolean</td>\n\t\t<td>Is the node open.</td>\n\t</tr>\n\t</table>\n\t<br />\n\n\n\t<h4>Example</h4>\n\t<p><code>mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');</code></p>\n\t<br />\n\n\t<a name=\"openall\"></a>\n\t<h4 class=\"func\">openAll()</h4>\n\t<p>Opens all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.openAll();</code></p>\n\t<br />\n\n\n\t<a name=\"closeall\"></a>\n\t<h4 class=\"func\">closeAll()</h4>\n\t<p>Closes all the nodes.<br />Can be called before and after the tree is drawn.</p>\n\t<h4>Example</h4>\n\t<p><code>mytree.closeAll();</code></p>\n\t<br />\n\n\n\t<a name=\"opento\"></a>\n\t<h4 class=\"func\">openTo()</h4>\n\t<p>Opens the tree to a certain node and can also select the node.<br />\n\tCan only be called after the tree is drawn.</p>\n\n\t<h4>Parameters</h4>\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Type</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>id</td>\n\t\t<td>Number</td>\n\t\t<td>Identity number for the node.</td>\n\t</tr>\n\t<tr>\n\t\t<td>select</td>\n\t\t<td>Boolean</td>\n\t\t<td>Should the node be selected.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.openTo(4, true);</code></p>\n\n</div>\n\n<a name=\"configuration\"></a>\n<h3>Configuration</h3>\n<div class=\"line\"></div>\n<div class=\"item\">\n\n\t<table class=\"files\">\n\t<tr>\n\t\t<th>Variable</th>\n\t\t<th>Type</th>\n\t\t<th>Default</th>\n\t\t<th>Description</th>\n\t</tr>\n\t<tr>\n\t\t<td>target</td>\n\t\t<td>String</td>\n\t\t<td>true</td>\n\t\t<td>Target for all the nodes.</td>\n\t</tr>\n\t<tr>\n\t\t<td>folderLinks</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Should folders be links.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useSelection</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Nodes can be selected(highlighted).</td>\n\t</tr>\n\t<tr>\n\t\t<td>useCookies</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>The tree uses cookies to rember it's state.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useLines</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with lines.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useIcons</td>\n\t\t<td>Boolean</td>\n\t\t<td>true</td>\n\t\t<td>Tree is drawn with icons.</td>\n\t</tr>\n\t<tr>\n\t\t<td>useStatusText</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Displays node names in the statusbar instead of the url.</td>\n\t</tr>\n\t<tr>\n\t\t<td>closeSameLevel</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>Only one node within a parent can be expanded at the same time.  openAll() and closeAll() functions do not work when this is enabled.</td>\n\t</tr>\n\t<tr>\n\t\t<td>inOrder</td>\n\t\t<td>Boolean</td>\n\t\t<td>false</td>\n\t\t<td>If parent nodes are always added before children, setting this to true speeds up the tree.</td>\n\t</tr>\n\t</table>\n\n\t<h4>Example</h4>\n\t<p><code>mytree.config.target = \"mytarget\";</code></p>\n\n</div>\n\n\t\t</div>\n\n\t\t<div class=\"line\"></div>\n\n\n\t\t<div id=\"copy\">\n\t\t\t<p class=\"right\"><a href=\"http://validator.w3.org/check/referer\">XHTML</a>, <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">CSS</a></p>\n\t\t\t<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\t\t</div>\n\n\t</div>\n\n</div>\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/tdtree/dtree.css",
    "content": "/*--------------------------------------------------|\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\n|---------------------------------------------------|\n| Copyright (c) 2002-2003 Geir Landr?              |\n|--------------------------------------------------*/\n\n.dtree {\n\tfont-family: Verdana, Geneva, Arial, Helvetica, sans-serif;\n\tfont-size: 11px;\n\tcolor: #666;\n\twhite-space: nowrap;\n}\n.dtree img {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n.dtree a {\n\tcolor: #333;\n\ttext-decoration: none;\n}\n.cbbox {\n\theight: 13px;\n\tborder:0;\n}\n.dtree a.node, .dtree a.nodeSel {\n\twhite-space: nowrap;\n\tpadding: 1px 2px 1px 2px;\n}\n.dtree a.node:hover, .dtree a.nodeSel:hover {\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n.dtree a.nodeSel {\n\tbackground-color: #c0d2ec;\n}\n.dtree .clip {\n\toverflow: hidden;\n}\n.dtree .cx {\n\tpadding:0px; \n\tmargin:0px;\n\twidth:16px;\n\theight:12px;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/tdtree/dtree.js",
    "content": "/*--------------------------------------------------|\r\r\n| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r\r\n|---------------------------------------------------|\r\r\n| Copyright (c) 2002-2003 Geir Landr?               |\r\r\n|                                                   |\r\r\n| This script can be used freely as long as all     |\r\r\n| copyright messages are intact.                    |\r\r\n|                                                   |\r\r\n| Updated: 17.04.2003                               |\r\r\n|--------------------------------------------------*/\r\r\n\r\r\n// Node object\r\r\nfunction Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.id = id;\r\r\n\tthis.pid = pid;\r\r\n\tthis.name = name;\r\r\n\tthis.url = url;\r\r\n\tthis.title = title;\r\r\n\tthis.target = target;\r\r\n\tthis.icon = icon;\r\r\n\tthis.iconOpen = iconOpen;\r\r\n\tthis._io = open || false;\r\r\n\tthis._is = false;\r\r\n\tthis._ls = false;\r\r\n\tthis._hc = false;\r\r\n\tthis._ai = 0;\r\r\n\tthis._p;\r\r\n};\r\n\r\n// Tree object typeBox{radio:ѡ / relationck:ѡ ѡӽڵ㸸ڵԶѡ / checkbox: ѡڵ} update by tony 20100915\r\n// inputId:ύ\r\n// idtdͷ 'td'+inputId һҳж\r\nfunction dTree(objName, iPath, formId, inputId, useBox, typeBox) {\r\n\tthis.config = {\r\n\t\ttarget\t\t\t\t: null,\r\n\t\tfolderLinks\t\t\t: true,\r\n\t\tuseSelection\t\t: true,\r\n\t\tuseCookies\t\t\t: true,\r\n\t\tuseLines\t\t\t: true,\r\n\t\tuseIcons\t\t\t: !useBox,\r\n\t\tinputId\t\t\t\t: inputId,\r\n\t\tuseBox\t\t\t\t: useBox,\r\n\t\ttypeBox\t\t\t\t: typeBox,\r\n\t\tuseStatusText\t\t: false,\r\n\t\tcloseSameLevel\t\t: false,\r\n\t\tinOrder\t\t\t\t: false\r\n\t}\r\n\tthis.icon = {\r\n\t\troot\t\t\t\t: iPath+'/img/base.gif',\r\n\t\tfolder\t\t\t\t: iPath+'/img/folder.gif',\r\n\t\tfolderOpen\t\t\t: iPath+'/img/folderopen.gif',\r\n\t\tnode\t\t\t\t: iPath+'/img/page.gif',\r\n\t\tempty\t\t\t\t: iPath+'/img/empty.gif',\r\n\t\tline\t\t\t\t: iPath+'/img/line.gif',\r\n\t\tjoin\t\t\t\t: iPath+'/img/join.gif',\r\n\t\tjoinBottom\t\t\t: iPath+'/img/joinbottom.gif',\r\n\t\tplus\t\t\t\t: iPath+'/img/plus.gif',\r\n\t\tplusBottom\t\t\t: iPath+'/img/plusbottom.gif',\r\n\t\tminus\t\t\t\t: iPath+'/img/minus.gif',\r\n\t\tminusBottom\t\t\t: iPath+'/img/minusbottom.gif',\r\n\t\tnlPlus\t\t\t\t: iPath+'/img/nolines_plus.gif',\r\n\t\tnlMinus\t\t\t\t: iPath+'/img/nolines_minus.gif'\r\n\t};\r\n\tthis.parEnum = \"\";\r\n\tthis.obj = objName;\r\n\tthis.aNodes = [];\r\n\tthis.aIndent = [];\r\n\tthis.root = new Node(-1);\r\n\tthis.selectedNode = null;\r\n\tthis.selectedFound = false;\r\n\tthis.completed = false;\r\n\t\r\n\tthis.formId = (formId==null)?\"dTreeForm\":formId;\r\n\t//this.inputId = (inputId==null)?\"id\":inputId;\r\n};\r\n\r\n\r\r\n// Adds a new node to the node array\r\r\ndTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r\r\n\tthis.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r\r\n};\r\r\n\r\r\n// Open/close all nodes\r\r\ndTree.prototype.openAll = function() {\r\r\n\tthis.oAll(true);\r\r\n};\r\r\ndTree.prototype.closeAll = function() {\r\r\n\tthis.oAll(false);\r\r\n};\r\r\n\r\r\n// Outputs the tree to the page\r\r\ndTree.prototype.toString = function() {\r\r\n\t//var str = '<div class=\"dtree\"><form id=\"'+this.formId+'\">\\n';\t\t// by tony 20090625\r\n\tvar str = '<div class=\"dtree\">\\n';\r\r\n\tif (document.getElementById) {\r\r\n\t\tif (this.config.useCookies) this.selectedNode = this.getSelected();\r\r\n\t\tstr += this.addNode(this.root);\r\r\n\t} else str += 'Browser not supported.';\r\r\n\t//str += '</form></div>';\t\t// by tony 20090625\r\n\tstr += '</div>';\r\n\t//document.getElementById(\"test\").value = str;\r\n\t//alert(str);\r\n\tif (!this.selectedFound) this.selectedNode = null;\r\r\n\tthis.completed = true;\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the tree structure\r\r\ndTree.prototype.addNode = function(pNode) {\r\r\n\tvar str = '';\r\r\n\tvar n=0;\r\n\tif (this.config.inOrder) n = pNode._ai;\r\r\n\tfor (n; n<this.aNodes.length; n++) {\r\n\t\tif (this.aNodes[n].pid == pNode.id) {\r\r\n\t\t\tif(this.aNodes[n].pid == 0){\r\n\t\t\t\tthis.parEnum = \"\";\r\n\t\t\t}\r\n\t\t\tvar cn = this.aNodes[n];\r\r\n\t\t\tcn._p = pNode;\r\r\n\t\t\tcn._ai = n;\r\r\n\t\t\tthis.setCS(cn);\r\r\n\t\t\tif (!cn.target && this.config.target) cn.target = this.config.target;\r\r\n\t\t\tif (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r\r\n\t\t\tif (!this.config.folderLinks && cn._hc) cn.url = null;\r\r\n\t\t\tif (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r\r\n\t\t\t\t\tcn._is = true;\r\r\n\t\t\t\t\tthis.selectedNode = n;\r\r\n\t\t\t\t\tthis.selectedFound = true;\r\r\n\t\t\t}\r\r\n\t\t\tstr += this.node(cn, n);\r\r\n\t\t\tif (cn._ls) break;\r\r\n\t\t}\r\r\n\t}\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Creates the node icon, url and text\r\r\ndTree.prototype.node = function(node, nodeId) {\r\n\t//alert(\"nodeId = \" + nodeId + \" | parentId = \" + node.pid + \" | nodeId = \" + node.id);\r\n\tvar str = '<div class=\"dTreeNode\">' + this.indent(node, nodeId);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\tif (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r\r\n\t\tif (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r\r\n\t\tif (this.root.id == node.pid) {\r\r\n\t\t\tnode.icon = this.icon.root;\r\r\n\t\t\tnode.iconOpen = this.icon.root;\r\r\n\t\t}\r\r\n\t\tstr += '<img id=\"i' + this.obj + nodeId + '\" src=\"' + ((node._io) ? node.iconOpen : node.icon) + '\" alt=\"\" />';\r\r\n\t}\r\r\r\n\tif(this.config.useBox && nodeId!=0){\r\r\n\t\tif(node.pid=='01'){\r\t\t\t\r\n\t\t\tthis.parEnum = node.id + \"-\";\r\n\t\t}else{\r\t\t\t\r\n\t\t\tif(node.pid==0){\r\t\t\t    \r\n\t\t\t\tthis.parEnum += node.id + \"-\";\r\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\t//alert(\"parEnum1 = \" + this.parEnum + \"node id = \" + node.pid);\t\r\n\t\t\t\tvar pL = this.parEnum.indexOf(node.pid+\"-\");\r\n\t\t\t\t//alert(this.parEnum.substring(0,pL+(node.pid+\"-\").length))\r\n\t\t\t\tthis.parEnum = this.parEnum.substring(0,pL+(node.pid+\"-\").length) + node.id + \"-\";\t\t\r\n\t\t\t\t//alert(\"parEnum2 = \" + this.parEnum);\t\r\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.typeBox==\"relationck\"){ //ѡʱ,checkbox nameid,ִ by tony 2010.10.29\r\n\t\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" onClick=\"caBox(\\''+this.formId+'\\',\\''+this.config.inputId+'\\',\\'c'+this.parEnum+'\\')\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}else if(this.config.typeBox==\"radio\"){\r\n\t\t\tstr += '<input type=\"radio\" class=\"cbbox\" name=\"td'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}else if(this.config.typeBox==\"checkbox\"){\r\n\t\t\tstr += '<input type=\"checkbox\" class=\"cbbox\" name=\"td'+this.config.inputId+'\" id=\"c'+this.parEnum+'\" value=\"' + node.id +'\" class=\"cx\"/>';\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.url) {\r\r\n\t\tstr += '<a id=\"s' + this.obj + nodeId + '\" class=\"' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '\" href=\"' + node.url + '\"';\r\r\n\t\tif (node.title) str += ' title=\"' + node.title + '\"';\r\r\n\t\tif (node.target) str += ' target=\"' + node.target + '\"';\r\r\n\t\tif (this.config.useStatusText) str += ' onmouseover=\"window.status=\\'' + node.name + '\\';return true;\" onmouseout=\"window.status=\\'\\';return true;\" ';\r\r\n\t\tif (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r\r\n\t\t\tstr += ' onclick=\"javascript: ' + this.obj + '.s(' + nodeId + ');\"';\r\r\n\t\tstr += '>';\r\r\n\t}\r\r\n\telse if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r\r\n\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\" class=\"node\">';\r\n\t\r\n\tstr += node.name;\r\n\tif (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r\r\n\tstr += '</div>';\r\r\n\tif (node._hc) {\r\r\n\t\tstr += '<div id=\"d' + this.obj + nodeId + '\" class=\"clip\" style=\"display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';\">';\r\r\n\t\tstr += this.addNode(node);\r\r\n\t\tstr += '</div>';\r\r\n\t}\r\r\n\tthis.aIndent.pop();\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Adds the empty and line icons\r\r\ndTree.prototype.indent = function(node, nodeId) {\r\r\n\tvar str = '';\r\r\n\tif (this.root.id != node.pid) {\r\r\n\t\tfor (var n=0; n<this.aIndent.length; n++)\r\r\n\t\t\tstr += '<img src=\"' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '\" alt=\"\" />';\r\r\n\t\t(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r\r\n\t\tif (node._hc) {\r\r\n\t\t\tstr += '<a href=\"javascript: ' + this.obj + '.o(' + nodeId + ');\"><img id=\"j' + this.obj + nodeId + '\" src=\"';\r\r\n\t\t\tif (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r\r\n\t\t\telse str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r\r\n\t\t\tstr += '\" alt=\"\" /></a>';\r\r\n\t\t} else str += '<img src=\"' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '\" alt=\"\" />';\r\r\n\t}\r\n\t\r\r\n\treturn str;\r\r\n};\r\r\n\r\r\n// Checks if a node has any children and if it is the last sibling\r\r\ndTree.prototype.setCS = function(node) {\r\r\n\tvar lastId;\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id) node._hc = true;\r\r\n\t\tif (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r\r\n\t}\r\r\n\tif (lastId==node.id) node._ls = true;\r\r\n};\r\r\n\r\r\n// Returns the selected node\r\r\ndTree.prototype.getSelected = function() {\r\r\n\tvar sn = this.getCookie('cs' + this.obj);\r\r\n\treturn (sn) ? sn : null;\r\r\n};\r\r\n\r\r\n// Highlights the selected node\r\r\ndTree.prototype.s = function(id) {\r\r\n\tif (!this.config.useSelection) return;\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tif (cn._hc && !this.config.folderLinks) return;\r\r\n\tif (this.selectedNode != id) {\r\r\n\t\tif (this.selectedNode || this.selectedNode==0) {\r\r\n\t\t\teOld = document.getElementById(\"s\" + this.obj + this.selectedNode);\r\r\n\t\t\teOld.className = \"node\";\r\r\n\t\t}\r\r\n\t\teNew = document.getElementById(\"s\" + this.obj + id);\r\r\n\t\teNew.className = \"nodeSel\";\r\r\n\t\tthis.selectedNode = id;\r\r\n\t\tif (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r\r\n\t}\r\r\n};\r\r\n\r\r\n// Toggle Open or close\r\r\ndTree.prototype.o = function(id) {\r\r\n\tvar cn = this.aNodes[id];\r\r\n\tthis.nodeStatus(!cn._io, id, cn._ls);\r\r\n\tcn._io = !cn._io;\r\r\n\tif (this.config.closeSameLevel) this.closeLevel(cn);\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Open or close all nodes\r\r\ndTree.prototype.oAll = function(status) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tthis.nodeStatus(status, n, this.aNodes[n]._ls)\r\r\n\t\t\tthis.aNodes[n]._io = status;\r\r\n\t\t}\r\r\n\t}\r\r\n\tif (this.config.useCookies) this.updateCookie();\r\r\n};\r\r\n\r\r\n// Opens the tree to a specific node\r\r\ndTree.prototype.openTo = function(nId, bSelect, bFirst) {\r\r\n\tif (!bFirst) {\r\r\n\t\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\t\tif (this.aNodes[n].id == nId) {\r\r\n\t\t\t\tnId=n;\r\r\n\t\t\t\tbreak;\r\r\n\t\t\t}\r\r\n\t\t}\r\r\n\t}\r\r\n\tvar cn=this.aNodes[nId];\r\r\n\tif (cn.pid==this.root.id || !cn._p) return;\r\r\n\tcn._io = true;\r\r\n\tcn._is = bSelect;\r\r\n\tif (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r\r\n\tif (this.completed && bSelect) this.s(cn._ai);\r\r\n\telse if (bSelect) this._sn=cn._ai;\r\r\n\tthis.openTo(cn._p._ai, false, true);\r\r\n};\r\r\n\r\r\n// Closes all nodes on the same level as certain node\r\r\ndTree.prototype.closeLevel = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tthis.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n\r\r\n// Closes all children of a node\r\r\ndTree.prototype.closeAllChildren = function(node) {\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r\r\n\t\t\tif (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r\r\n\t\t\tthis.aNodes[n]._io = false;\r\r\n\t\t\tthis.closeAllChildren(this.aNodes[n]);\t\t\r\r\n\t\t}\r\r\n\t}\r\r\n}\r\r\n// Change the status of a node(open or closed)\r\r\ndTree.prototype.nodeStatus = function(status, id, bottom) {\r\r\n\teDiv\t= document.getElementById('d' + this.obj + id);\r\r\n\teJoin\t= document.getElementById('j' + this.obj + id);\r\r\n\tif (this.config.useIcons) {\r\r\n\t\teIcon\t= document.getElementById('i' + this.obj + id);\r\r\n\t\teIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r\r\n\t}\r\r\n\teJoin.src = (this.config.useLines)?\r\r\n\t((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r\r\n\t((status)?this.icon.nlMinus:this.icon.nlPlus);\r\r\n\teDiv.style.display = (status) ? 'block': 'none';\r\r\n};\r\r\n\r\r\n\r\r\n// [Cookie] Clears a cookie\r\r\ndTree.prototype.clearCookie = function() {\r\r\n\tvar now = new Date();\r\r\n\tvar yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r\r\n\tthis.setCookie('co'+this.obj, 'cookieValue', yesterday);\r\r\n\tthis.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r\r\n};\r\r\n\r\r\n// [Cookie] Sets value in a cookie\r\r\ndTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r\r\n\tdocument.cookie =\r\r\n\t\tescape(cookieName) + '=' + escape(cookieValue)\r\r\n\t\t+ (expires ? '; expires=' + expires.toGMTString() : '')\r\r\n\t\t+ (path ? '; path=' + path : '')\r\r\n\t\t+ (domain ? '; domain=' + domain : '')\r\r\n\t\t+ (secure ? '; secure' : '');\r\r\n};\r\r\n\r\r\n// [Cookie] Gets a value from a cookie\r\r\ndTree.prototype.getCookie = function(cookieName) {\r\r\n\tvar cookieValue = '';\r\r\n\tvar posName = document.cookie.indexOf(escape(cookieName) + '=');\r\r\n\tif (posName != -1) {\r\r\n\t\tvar posValue = posName + (escape(cookieName) + '=').length;\r\r\n\t\tvar endPos = document.cookie.indexOf(';', posValue);\r\r\n\t\tif (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r\r\n\t\telse cookieValue = unescape(document.cookie.substring(posValue));\r\r\n\t}\r\r\n\treturn (cookieValue);\r\r\n};\r\r\n\r\r\n// [Cookie] Returns ids of open nodes as a string\r\r\ndTree.prototype.updateCookie = function() {\r\r\n\tvar str = '';\r\r\n\tfor (var n=0; n<this.aNodes.length; n++) {\r\r\n\t\tif (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r\r\n\t\t\tif (str) str += '.';\r\r\n\t\t\tstr += this.aNodes[n].id;\r\r\n\t\t}\r\r\n\t}\r\r\n\tthis.setCookie('co' + this.obj, str);\r\r\n};\r\r\n\r\r\n// [Cookie] Checks if a node id is in a cookie\r\r\ndTree.prototype.isOpen = function(id) {\r\r\n\tvar aOpen = this.getCookie('co' + this.obj).split('.');\r\r\n\tfor (var n=0; n<aOpen.length; n++)\r\r\n\t\tif (aOpen[n] == id) return true;\r\r\n\treturn false;\r\r\n};\r\r\n\r\r\n// If Push and pop is not implemented by the browser\r\r\nif (!Array.prototype.push) {\r\r\n\tArray.prototype.push = function array_push() {\r\r\n\t\tfor(var i=0;i<arguments.length;i++)\r\r\n\t\t\tthis[this.length]=arguments[i];\r\r\n\t\treturn this.length;\r\r\n\t}\r\r\n};\r\r\nif (!Array.prototype.pop) {\r\r\n\tArray.prototype.pop = function array_pop() {\r\r\n\t\tlastElement = this[this.length-1];\r\r\n\t\tthis.length = Math.max(this.length-1,0);\r\r\n\t\treturn lastElement;\r\r\n\t}\r\r\n};\r\n\r\n\t\t/* checkbox tree */\r\n\t\tfunction caBox(formId, idname, regx ) {\r\n\t\t\tif( document.getElementById( regx ).checked ){\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\t\t\t\t\t\t// checked next node \r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\tfor(j=0;j<regxArray.length;j++){\r\n\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-1]+\"-\"));\r\n\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\tdocument.getElementById(pDiv).checked=true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\t// unChecked\r\n\t\t\t\tvar form = document.getElementById(formId);\r\n\t\t\t\tvar regxArray = regx.split(\"-\");\r\n\t\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\n\t\t\t\t\t\t// elements's all child set checked false;\r\n\t\t\t\t\t\tif(element.id.indexOf(regx)!=-1){\r\n\t\t\t\t\t\t\telement.checked = false;\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// checked prev node\r\n\t\t\t\t// c7 8\r\n\t\t\t\tfor(j=0;j<regxArray.length-1;j++){\r\n\t\t\t\t\tif( !isCheckedByRec(form, idname, regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"))) ){\r\n\t\t\t\t\t\tvar pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+\"-\"));\r\n\t\t\t\t\t\tif(document.getElementById(pDiv))\r\n\t\t\t\t\t\t\tdocument.getElementById(pDiv).checked=false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isCheckedByRec( form ,idname ,regx){\r\n\t\t\t//alert(\"isCheckedByRec = \" + regx);\r\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\r\n\t\t\t\tvar element = form.elements[i];\r\n\t\t\t\tif (element.name == idname && element.type=='checkbox'){\r\n\t\t\t\t\t// isChecked\r\n\t\t\t\t\tif(element.id.indexOf(regx)!=-1 && element.checked && element.id!=regx ){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//alert(\"c1-7-\".indexOf(\"1-\"));\r\n\t\t//var st = \"1-3-4-\";\r\n\t\t//alert(st.split(\"-\").length);\r\n\t\t///alert(st.split(\"-\")[2]);\r\n\t\t//alert( st.lastIndexOf(\"-\", st.lastIndexOf(\"-\"))\t);"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/tdtree/example01.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>Destroydrop &raquo; Javascripts &raquo; Tree</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n<h1><a href=\"/\">Destroydrop</a> &raquo; <a href=\"/javascripts/\">Javascripts</a> &raquo; <a href=\"/javascripts/tree/\">Tree</a></h1>\n\n<h2>Example</h2>\n\n<div class=\"dtree\">\n\t<TEXTAREA NAME=\"\" ROWS=\"10\" COLS=\"80\" id=\"test\"></TEXTAREA>\n\t<p><a href=\"javascript: d.openAll();\">open all</a> | <a href=\"javascript: d.closeAll();\">close all</a></p>\n<script language=\"javascript\">\nd = new dTree('d','.','testForm');\nd.add('0','-1','');\nd.add('0401','0','г');\nd.add('040101','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040101&blocktype=6\");');\nd.add('040102','0401','֤ʽ','javascript:gotoUrl(\"blockcode=040102&blocktype=6\");');\nd.add('040103','0401','ȫʽ','javascript:gotoUrl(\"blockcode=040103&blocktype=6\");');\nd.add('040104','0401','ʽ','javascript:gotoUrl(\"blockcode=040104&blocktype=6\");');\nd.add('040105','0401','ʽ𣨷ǻң','javascript:gotoUrl(\"blockcode=040105&blocktype=6\");');\nd.add('040106','0401','г','javascript:gotoUrl(\"blockcode=040106&blocktype=6\");');\nd.add('040107','0401','ȫ','javascript:gotoUrl(\"blockcode=040107&blocktype=6\");');\nd.add('040108','0401','ȫ𣨷ǻң','javascript:gotoUrl(\"blockcode=040108&blocktype=6\");');\nd.add('040109','0401','LOF','javascript:gotoUrl(\"blockcode=040109&blocktype=6\");');\nd.add('040110','0401','ETF','javascript:gotoUrl(\"blockcode=040110&blocktype=6\");');\nd.add('040111','0401','ѷת','javascript:gotoUrl(\"blockcode=040111&blocktype=6\");');\nd.add('040112','0401','ժƻ','javascript:gotoUrl(\"blockcode=040112&blocktype=6\");');\nd.add('0402','0','Ͷ');d.add('040201','0402','Ʊͻ','javascript:gotoUrl(\"blockcode=040201&blocktype=6\");');\nd.add('040202','0402','ծȯͻ','javascript:gotoUrl(\"blockcode=040202&blocktype=6\");');\nd.add('040203','0402','ͻ','javascript:gotoUrl(\"blockcode=040203&blocktype=6\");');\nd.add('040204','0402','ͻ','javascript:gotoUrl(\"blockcode=040204&blocktype=6\");');\nd.add('0403','0','Ͷʷ');d.add('040301','0403','ɳͻ','javascript:gotoUrl(\"blockcode=040301&blocktype=6\");');\nd.add('040302','0403','ֵͣͣ','javascript:gotoUrl(\"blockcode=040302&blocktype=6\");');\nd.add('040303','0403','ƽͻ','javascript:gotoUrl(\"blockcode=040303&blocktype=6\");');\nd.add('040304','0403','ָͻ','javascript:gotoUrl(\"blockcode=040304&blocktype=6\");');\nd.add('040305','0403','ͻ','javascript:gotoUrl(\"blockcode=040305&blocktype=6\");');\nd.add('040306','0403','ҵͻ','javascript:gotoUrl(\"blockcode=040306&blocktype=6\");');\nd.add('0404','0','˾');d.add('040400000001','0404','ʱ޹˾','javascript:gotoUrl(\"blockcode=040400000001&blocktype=6\");');\nd.add('040400000002','0404','˾','javascript:gotoUrl(\"blockcode=040400000002&blocktype=6\");');\nd.add('040400000003','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000003&blocktype=6\");');\nd.add('040400000004','0404','ɻ޹˾','javascript:gotoUrl(\"blockcode=040400000004&blocktype=6\");');\nd.add('040400000007','0404','Ϸ޹˾','javascript:gotoUrl(\"blockcode=040400000007&blocktype=6\");');\nd.add('040400000008','0404','㶫Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000008&blocktype=6\");');\nd.add('040400000009','0404','֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000009&blocktype=6\");');\nd.add('040400000010','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400000010&blocktype=6\");');\nd.add('040400000011','0404','ɽ޹˾','javascript:gotoUrl(\"blockcode=040400000011&blocktype=6\");');\nd.add('040400000013','0404','Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000013&blocktype=6\");');\nd.add('040400000014','0404','麣ŸͶʻ','javascript:gotoUrl(\"blockcode=040400000014&blocktype=6\");');\nd.add('040400000015','0404','ʵ޹˾','javascript:gotoUrl(\"blockcode=040400000015&blocktype=6\");');\nd.add('040400000016','0404','㶫չл','javascript:gotoUrl(\"blockcode=040400000016&blocktype=6\");');\nd.add('040400000017','0404','㷢֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000017&blocktype=6\");');\nd.add('040400000018','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000018&blocktype=6\");');\nd.add('040400000019','0404','㶫ʡϷڷܹ˾','javascript:gotoUrl(\"blockcode=040400000019&blocktype=6\");');\nd.add('040400000020','0404','㶫֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000020&blocktype=6\");');\nd.add('040400000021','0404','֤ͨȯ޹˾ֹ˾','javascript:gotoUrl(\"blockcode=040400000021&blocktype=6\");');\nd.add('040400000022','0404','޹˾','javascript:gotoUrl(\"blockcode=040400000022&blocktype=6\");');\nd.add('040400000023','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000023&blocktype=6\");');\nd.add('040400000024','0404','֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000024&blocktype=6\");');\nd.add('040400000025','0404','㶫Ͷʹ˾Ͷʻ','javascript:gotoUrl(\"blockcode=040400000025&blocktype=6\");');\nd.add('040400000026','0404','ʢ޹˾','javascript:gotoUrl(\"blockcode=040400000026&blocktype=6\");');\nd.add('040400000027','0404','Ļ޹˾','javascript:gotoUrl(\"blockcode=040400000027&blocktype=6\");');\nd.add('040400000028','0404','ʡ֤ȯ˾','javascript:gotoUrl(\"blockcode=040400000028&blocktype=6\");');\nd.add('040400000030','0404','ͲͶʻ˾','javascript:gotoUrl(\"blockcode=040400000030&blocktype=6\");');\nd.add('040400000031','0404','йϺеڶӪҵ','javascript:gotoUrl(\"blockcode=040400000031&blocktype=6\");');\nd.add('040400000033','0404','Ͷʹ˾','javascript:gotoUrl(\"blockcode=040400000033&blocktype=6\");');\nd.add('040400000061','0404','йͷк֧','javascript:gotoUrl(\"blockcode=040400000061&blocktype=6\");');\nd.add('040400000062','0404','ڰ뵺Ͷʻ˾','javascript:gotoUrl(\"blockcode=040400000062&blocktype=6\");');\nd.add('040400000111','0404','̩֤ȯɷ޹˾','javascript:gotoUrl(\"blockcode=040400000111&blocktype=6\");');\nd.add('040400000135','0404','йͶʹɷ޹˾','javascript:gotoUrl(\"blockcode=040400000135&blocktype=6\");');\nd.add('040400000138','0404','йũҵзл','javascript:gotoUrl(\"blockcode=040400000138&blocktype=6\");');\nd.add('040400000139','0404','й֧Ͷʻ','javascript:gotoUrl(\"blockcode=040400000139&blocktype=6\");');\nd.add('040400001423','0404','ͨкϷ','javascript:gotoUrl(\"blockcode=040400001423&blocktype=6\");');\nd.add('040400052134','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400052134&blocktype=6\");');\nd.add('040400053162','0404','׷޹˾','javascript:gotoUrl(\"blockcode=040400053162&blocktype=6\");');\nd.add('040400055027','0404','޹˾','javascript:gotoUrl(\"blockcode=040400055027&blocktype=6\");');\nd.add('040400062164','0404','ӯ޹˾','javascript:gotoUrl(\"blockcode=040400062164&blocktype=6\");');\nd.add('040400064608','0404','ǻ޹˾','javascript:gotoUrl(\"blockcode=040400064608&blocktype=6\");');\nd.add('040400065772','0404','ӻ޹˾','javascript:gotoUrl(\"blockcode=040400065772&blocktype=6\");');\nd.add('040400065906','0404','Ͷ޹˾','javascript:gotoUrl(\"blockcode=040400065906&blocktype=6\");');\nd.add('040400069602','0404','ϺͶ޹˾','javascript:gotoUrl(\"blockcode=040400069602&blocktype=6\");');\nd.add('040400073182','0404','һ޹˾','javascript:gotoUrl(\"blockcode=040400073182&blocktype=6\");');\nd.add('040400074823','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040400074823&blocktype=6\");');\nd.add('040400074843','0404','̩޹˾','javascript:gotoUrl(\"blockcode=040400074843&blocktype=6\");');\nd.add('040400075137','0404','ӥ޹˾','javascript:gotoUrl(\"blockcode=040400075137&blocktype=6\");');\nd.add('040400075801','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400075801&blocktype=6\");');\nd.add('040400077211','0404','޹˾','javascript:gotoUrl(\"blockcode=040400077211&blocktype=6\");');\nd.add('040400077900','0404','ͨ޹˾','javascript:gotoUrl(\"blockcode=040400077900&blocktype=6\");');\nd.add('040400079057','0404','˳ǻ޹˾','javascript:gotoUrl(\"blockcode=040400079057&blocktype=6\");');\nd.add('040400079708','0404','㷢޹˾','javascript:gotoUrl(\"blockcode=040400079708&blocktype=6\");');\nd.add('040400081892','0404','̩Ż޹˾','javascript:gotoUrl(\"blockcode=040400081892&blocktype=6\");');\nd.add('040400083290','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083290&blocktype=6\");');\nd.add('040400083474','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400083474&blocktype=6\");');\nd.add('040400083700','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083700&blocktype=6\");');\nd.add('040400083833','0404','޹˾','javascript:gotoUrl(\"blockcode=040400083833&blocktype=6\");');\nd.add('040400084011','0404','ҵ޹˾','javascript:gotoUrl(\"blockcode=040400084011&blocktype=6\");');\nd.add('040400084136','0404','ŵ޹˾','javascript:gotoUrl(\"blockcode=040400084136&blocktype=6\");');\nd.add('040400084387','0404','λ޹˾','javascript:gotoUrl(\"blockcode=040400084387&blocktype=6\");');\nd.add('040400086048','0404','󱣵Ż޹˾','javascript:gotoUrl(\"blockcode=040400086048&blocktype=6\");');\nd.add('040400086315','0404','ͶĦ޹˾','javascript:gotoUrl(\"blockcode=040400086315&blocktype=6\");');\nd.add('040400086437','0404','к޹˾','javascript:gotoUrl(\"blockcode=040400086437&blocktype=6\");');\nd.add('040400086839','0404','ʻ޹˾','javascript:gotoUrl(\"blockcode=040400086839&blocktype=6\");');\nd.add('040400086979','0404','ι˾','javascript:gotoUrl(\"blockcode=040400086979&blocktype=6\");');\nd.add('040400089171','0404','ͻ޹˾','javascript:gotoUrl(\"blockcode=040400089171&blocktype=6\");');\nd.add('040400089251','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089251&blocktype=6\");');\nd.add('040400089255','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089255&blocktype=6\");');\nd.add('040400089257','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089257&blocktype=6\");');\nd.add('040400089262','0404','޹˾','javascript:gotoUrl(\"blockcode=040400089262&blocktype=6\");');\nd.add('040400089990','0404','Ѱ̩޹˾','javascript:gotoUrl(\"blockcode=040400089990&blocktype=6\");');\nd.add('040400090204','0404','ֻ޹˾','javascript:gotoUrl(\"blockcode=040400090204&blocktype=6\");');\nd.add('040400090471','0404','ʩ޵»޹˾','javascript:gotoUrl(\"blockcode=040400090471&blocktype=6\");');\nd.add('040400090517','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400090517&blocktype=6\");');\nd.add('040400200471','0404','ųϻ˾','javascript:gotoUrl(\"blockcode=040400200471&blocktype=6\");');\nd.add('040400200630','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400200630&blocktype=6\");');\nd.add('040400206677','0404','Ż޹˾','javascript:gotoUrl(\"blockcode=040400206677&blocktype=6\");');\nd.add('040400215348','0404','޹˾','javascript:gotoUrl(\"blockcode=040400215348&blocktype=6\");');\nd.add('040400216478','0404','ʴҵ޹˾','javascript:gotoUrl(\"blockcode=040400216478&blocktype=6\");');\nd.add('040403133598','0404','ŷ޹˾  ','javascript:gotoUrl(\"blockcode=040403133598&blocktype=6\");');\nd.add('040403135981','0404','Ŵ޹˾','javascript:gotoUrl(\"blockcode=040403135981&blocktype=6\");');\nd.add('040403139945','0404','ŵ»޹˾','javascript:gotoUrl(\"blockcode=040403139945&blocktype=6\");');\nd.add('040403140700','0404','̻޹˾','javascript:gotoUrl(\"blockcode=040403140700&blocktype=6\");');\nd.add('0405','0','й');d.add('040500000035','0405','йũҵ','javascript:gotoUrl(\"blockcode=040500000035&blocktype=6\");');\nd.add('040500000036','0405','ͨ','javascript:gotoUrl(\"blockcode=040500000036&blocktype=6\");');\nd.add('040500000037','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000037&blocktype=6\");');\nd.add('040500000047','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000047&blocktype=6\");');\nd.add('040500000053','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500000053&blocktype=6\");');\nd.add('040500008577','0405','Ϻֶչйɷ޹˾','javascript:gotoUrl(\"blockcode=040500008577&blocktype=6\");');\nd.add('040500011967','0405','й','javascript:gotoUrl(\"blockcode=040500011967&blocktype=6\");');\nd.add('040500046321','0405','','javascript:gotoUrl(\"blockcode=040500046321&blocktype=6\");');\nd.add('040500074499','0405','ййɷ޹˾','javascript:gotoUrl(\"blockcode=040500074499&blocktype=6\");');\nd.add('040500082542','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500082542&blocktype=6\");');\nd.add('040500084226','0405','ҵйɷ޹˾','javascript:gotoUrl(\"blockcode=040500084226&blocktype=6\");');\nd.add('040500089958','0405','йɷ޹˾','javascript:gotoUrl(\"blockcode=040500089958&blocktype=6\");');\n\n\ndocument.write(d);\n\n</script>\n \n          \t      <SCRIPT LANGUAGE=\"JavaScript\">\n             \t      // document.write(d);\n\t\t             </SCRIPT>     \n\n\t<script type=\"text/javascript\">\n\n\t\t//\t\t\t\td..config.useCheckBox=true;\n\n\t\t/*d.add(0,-1,'My example tree');\n\t\td.add(1,0,'Node 1');\n\t\td.add(2,0,'Node 2');\n\t\td.add(3,1,'Node 1.1');\n\t\td.add(4,0,'Node 3');\n\t\td.add(5,3,'Node 1.1.1');\n\t\td.add(8,1,'Node 1.2');\n\t\td.add(7,0,'My Pictures');\n\t\td.add(10,7,'The trip to Iceland');\n\t\td.add(11,7,'Mom\\'s birthday');\n*/\n\n\n\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\n\t\tfunction submitForm(){\n\n\t\t\t//document.getElementById(\"dTreeCheckBox\").action=\"\";\n\t\t\t//document.getElementById(\"dTreeCheckBox\").submit();\n\t\t\t//alert(document.getElementById(\"testForm\"));\n\t\t\tvar ids = \"\";\n\t\t\tvar form = document.getElementById(\"testForm\");\n\t\t\tfor (var i=0; i<form.elements.length; i++) {\n\t\t\t\tvar element = form.elements[i];\n\t\t\t\tif (element.name == \"id\" && element.type=='checkbox'){\n\t\t\t\t\tif( element.checked == true ){\n\t\t\t\t\t\t//alert(\"id=\" + element.id +\"\\r\\n\" + \"name=\" + element.name + \"\\r\\n\" + \"value=\"+element.value);\n\t\t\t\t\t\tids = ids + element.value + \",\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\t\n\t\t\talert(\"ids = \" + ids);\n\t\n\t\t}\n\t\t\n\t\t//-->\n\t</script>\n\n \n\t<input type=\"button\" value=\" \" onClick=\"submitForm()\"/>\n\n\n\n</div>\n\n<p><a href=\"mailto&#58;drop&#64;destroydrop&#46;com\">&copy;2002-2003 Geir Landr&ouml;</a></p>\n\n\n\n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/dtree/tdtree/frame.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n\n<head>\n\t<title>self J2ee Frame</title>\n\n\t<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />\n\t<script type=\"text/javascript\" src=\"dtree.js\"></script>\n\n</head>\n\n<body>\n\n\n<div class=\"dtree\">\n\t<p><a href=\"javascript: d.openAll();\">Open all</a> | <a href=\"javascript: d.closeAll();\">Close all</a></p>\n<script language=\"javascript\">\n\nd = new dTree('d','.','testForm');\nd.add('0','-1','Develope Base');\nd.add('05','0','Rule');\nd.add('01','0','Language');\nd.add('04','0','MVC Frame');\nd.add('02','0','Software');\nd.add('03','0','Env');\n\nd.add('0101','01','Java2');\n\nd.add('0201','02','Eclipse 6.5');\nd.add('0202','02','EditPlus 2.11');\nd.add('0203','02','Power Designer 12.5');\nd.add('0204','02','FrontPage 2003');\nd.add('0205','02','CVS');\nd.add('0206','02','Office Word/Excel/ppt 2003');\n\nd.add('0301','03','SqlServer 2000 (Database)');\nd.add('0302','03','jdk 1.6_04');\nd.add('0303','03','Tomcat 6.0');\n\nd.add('0401','04','View');\nd.add('040101','0401','html','');\n\nd.add('040102','0401','css','');\nd.add('040103','0401','javascript(js)','');\nd.add('040104','0401','jsp','');\nd.add('040105','0401','validator','');\nd.add('040106','0401','jstl(tiglib)','');\n\nd.add('0402','04','Control');\nd.add('040201','0402','log4j','');\nd.add('040202','0402','class','');\nd.add('040203','0402','action(struts)');\nd.add('040204','0402','javabean');\nd.add('040205','0402','tool class');\n\nd.add('0403','04','Model');\nd.add('040301','0403','hibernate','');\nd.add('040302','0403','spring','');\nd.add('040303','0403','jdbc','');\nd.add('040304','0403','sql','');\nd.add('040305','0403','hql','');\n\nd.add('0501','05','coding');\nd.add('0502','05','ISO doc');\n\ndocument.write(d);\n\n</script>\n \n\n\n</body>\n\n</html>"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/easing.js",
    "content": "/*\n * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php\n *\n * Uses the built In easIng capabilities added In jQuery 1.1\n * to offer multiple easIng options\n *\n * Copyright (c) 2007 George Smith\n * Licensed under the MIT License:\n *   http://www.opensource.org/licenses/mit-license.php\n */\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\n\njQuery.extend( jQuery.easing,\n{\n\teaseInQuad: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t + b;\n\t},\n\teaseOutQuad: function (x, t, b, c, d) {\n\t\treturn -c *(t/=d)*(t-2) + b;\n\t},\n\teaseInOutQuad: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t + b;\n\t\treturn -c/2 * ((--t)*(t-2) - 1) + b;\n\t},\n\teaseInCubic: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t + b;\n\t},\n\teaseOutCubic: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t + 1) + b;\n\t},\n\teaseInOutCubic: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t + 2) + b;\n\t},\n\teaseInQuart: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t + b;\n\t},\n\teaseOutQuart: function (x, t, b, c, d) {\n\t\treturn -c * ((t=t/d-1)*t*t*t - 1) + b;\n\t},\n\teaseInOutQuart: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n\t\treturn -c/2 * ((t-=2)*t*t*t - 2) + b;\n\t},\n\teaseInQuint: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t*t + b;\n\t},\n\teaseOutQuint: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t*t*t + 1) + b;\n\t},\n\teaseInOutQuint: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t*t*t + 2) + b;\n\t},\n\teaseInSine: function (x, t, b, c, d) {\n\t\treturn -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n\t},\n\teaseOutSine: function (x, t, b, c, d) {\n\t\treturn c * Math.sin(t/d * (Math.PI/2)) + b;\n\t},\n\teaseInOutSine: function (x, t, b, c, d) {\n\t\treturn -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n\t},\n\teaseInExpo: function (x, t, b, c, d) {\n\t\treturn (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n\t},\n\teaseOutExpo: function (x, t, b, c, d) {\n\t\treturn (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n\t},\n\teaseInOutExpo: function (x, t, b, c, d) {\n\t\tif (t==0) return b;\n\t\tif (t==d) return b+c;\n\t\tif ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n\t\treturn c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n\t},\n\teaseInCirc: function (x, t, b, c, d) {\n\t\treturn -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n\t},\n\teaseOutCirc: function (x, t, b, c, d) {\n\t\treturn c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n\t},\n\teaseInOutCirc: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n\t\treturn c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n\t},\n\teaseInElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t},\n\teaseOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n\t},\n\teaseInOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\tif (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t\treturn a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n\t},\n\teaseInBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*(t/=d)*t*((s+1)*t - s) + b;\n\t},\n\teaseOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n\t},\n\teaseInOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158; \n\t\tif ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n\t\treturn c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n\t},\n\teaseInBounce: function (x, t, b, c, d) {\n\t\treturn c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n\t},\n\teaseOutBounce: function (x, t, b, c, d) {\n\t\tif ((t/=d) < (1/2.75)) {\n\t\t\treturn c*(7.5625*t*t) + b;\n\t\t} else if (t < (2/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n\t\t} else if (t < (2.5/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n\t\t} else {\n\t\t\treturn c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n\t\t}\n\t},\n\teaseInOutBounce: function (x, t, b, c, d) {\n\t\tif (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n\t\treturn jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n\t}\n});\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/index.js",
    "content": "$(\".nav\").on(\"click\",\"li\",function(){\n\t$(this).siblings().removeClass(\"current\");\n\tvar hasChild = !!$(this).find(\".subnav\").size();\n\tif(hasChild){\n\t\t$(this).toggleClass(\"hasChild\");\n\t}\n\t$(this).addClass(\"current\");\n});\n\n\n$(window).resize(function(e) {\n    $(\"#bd\").height($(window).height() - $(\"#hd\").height() - $(\"#ft\").height()-6);\n\t$(\".wrap\").height($(\"#bd\").height()-6);\n\t$(\".nav\").css(\"minHeight\", $(\".sidebar\").height() - $(\".sidebar-header\").height()-1);\n\t$(\"#iframe\").height($(window).height() - $(\"#hd\").height() - $(\"#ft\").height()-12);\n}).resize();\n\n$(\".nav>li\").css({\"borderColor\":\"#dbe9f1\"});\n$(\".nav>.current\").prev().css({\"borderColor\":\"#7ac47f\"});\n$(\".nav\").on(\"click\",\"li\",function(e){\n\tvar aurl = $(this).find(\"a\").attr(\"date-src\");\n\t$(\"#iframe\").attr(\"src\",aurl);\n\t$(\".nav>li\").css({\"borderColor\":\"#dbe9f1\"});\n\t$(\".nav>.current\").prev().css({\"borderColor\":\"#7ac47f\"});\n\treturn false;\n});\n\n$('.exitDialog').Dialog({\n\ttitle:'提示信息',\n\tautoOpen: false,\n\twidth:400,\n\theight:200\n\t\n});\n\n$('.exit').click(function(){\n\t$('.exitDialog').Dialog('open');\n});\n\n\n\n$('.exitDialog input[type=button]').click(function(e) {\n    $('.exitDialog').Dialog('close');\n\t\n\tif($(this).hasClass('ok')){\n\t\twindow.location.href = \"exitSys.action\"\t;\n\t}\n});"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/jquery-1.10.1.js",
    "content": "/*!\n * jQuery JavaScript Library v1.10.1\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-05-30T21:49Z\n */\n(function( window, undefined ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\"use strict\";\nvar\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// Support: IE<10\n\t// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`\n\tcore_strundefined = typeof undefined,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tlocation = window.location,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {},\n\n\t// List of deleted data cache ids, so we can reuse them\n\tcore_deletedIds = [],\n\n\tcore_version = \"1.10.1\",\n\n\t// Save a reference to some core methods\n\tcore_concat = core_deletedIds.concat,\n\tcore_push = core_deletedIds.push,\n\tcore_slice = core_deletedIds.slice,\n\tcore_indexOf = core_deletedIds.indexOf,\n\tcore_toString = class2type.toString,\n\tcore_hasOwn = class2type.hasOwnProperty,\n\tcore_trim = core_version.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n\n\t// Used for splitting on whitespace\n\tcore_rnotwhite = /\\S+/g,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t},\n\n\t// The ready event handler\n\tcompleted = function( event ) {\n\n\t\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\t\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\t\tdetach();\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\t// Clean-up method for dom ready events\n\tdetach = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t\t} else {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\t\twindow.detachEvent( \"onload\", completed );\n\t\t}\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: core_version,\n\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( core_version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn String( obj );\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( jQuery.support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn core_hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, keepScripts ) {\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tkeepScripts = context;\n\t\t\tcontext = false;\n\t\t}\n\t\tcontext = context || document;\n\n\t\tvar parsed = rsingleTag.exec( data ),\n\t\t\tscripts = !keepScripts && [];\n\n\t\t// Single tag\n\t\tif ( parsed ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\t\tif ( scripts ) {\n\t\t\tjQuery( scripts ).remove();\n\t\t}\n\t\treturn jQuery.merge( [], parsed.childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\tif ( data === null ) {\n\t\t\treturn data;\n\t\t}\n\n\t\tif ( typeof data === \"string\" ) {\n\n\t\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\t\tdata = jQuery.trim( data );\n\n\t\t\tif ( data ) {\n\t\t\t\t// Make sure the incoming data is actual JSON\n\t\t\t\t// Logic borrowed from http://json.org/json2.js\n\t\t\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\t\t\treturn ( new Function( \"return \" + data ) )();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn core_concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\t\tvar i = 0,\n\t\t\tlength = elems.length,\n\t\t\tbulk = key == null;\n\n\t\t// Sets many values\n\t\tif ( jQuery.type( key ) === \"object\" ) {\n\t\t\tchainable = true;\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t\t}\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\tchainable = true;\n\n\t\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\t\traw = true;\n\t\t\t}\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations run against the entire set\n\t\t\t\tif ( raw ) {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\n\t\t\t\t// ...except when executing function values\n\t\t\t\t} else {\n\t\t\t\t\tbulk = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations.\n\t// Note: this method belongs to the css module but it's needed here for the support module.\n\t// If support gets modularized, this method should be moved back to the css module.\n\tswap: function( elem, options, callback, args ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.apply( elem, args || [] );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || type !== \"function\" &&\n\t\t( length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj );\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n/*!\n * Sizzle CSS Selector Engine v1.9.4-pre\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-05-27\n */\n(function( window, undefined ) {\n\nvar i,\n\tsupport,\n\tcachedruns,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcompile,\n\toutermostContext,\n\tsortInput,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\thasDuplicate = false,\n\tsortOrder = function() { return 0; },\n\n\t// General-purpose constants\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf if we can't use a native one\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:([*^$|!~]?=)\" + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments quoted,\n\t//   then not containing pseudos/brackets,\n\t//   then attribute selectors/non-parenthetical expressions,\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes.replace( 3, 8 ) + \")*)|.*)\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trsibling = new RegExp( whitespace + \"*[+~]\" ),\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\t// BMP codepoint\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\t// Shortcuts\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * For feature detection\n * @param {Function} fn The function to test for native support\n */\nfunction isNative( fn ) {\n\treturn rnative.test( fn + \"\" );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key += \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied if the test fails\n * @param {Boolean} test The result of a test. If true, null will be set as the handler in leiu of the specified handler\n */\nfunction addHandle( attrs, handler, test ) {\n\tattrs = attrs.split(\"|\");\n\tvar current,\n\t\ti = attrs.length,\n\t\tsetHandle = test ? null : handler;\n\n\twhile ( i-- ) {\n\t\t// Don't override a user's handler\n\t\tif ( !(current = Expr.attrHandle[ attrs[i] ]) || current === handler ) {\n\t\t\tExpr.attrHandle[ attrs[i] ] = setHandle;\n\t\t}\n\t}\n}\n\n/**\n * Fetches boolean attributes by node\n * @param {Element} elem\n * @param {String} name\n */\nfunction boolHandler( elem, name ) {\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\tvar val = elem.getAttributeNode( name );\n\treturn val && val.specified ?\n\t\tval.value :\n\t\telem[ name ] === true ? name.toLowerCase() : null;\n}\n\n/**\n * Fetches attributes without interpolation\n * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n * @param {Element} elem\n * @param {String} name\n */\nfunction interpolationHandler( elem, name ) {\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n}\n\n/**\n * Uses defaultValue to retrieve value in IE6/7\n * @param {Element} elem\n * @param {String} name\n */\nfunction valueHandler( elem ) {\n\t// Ignore the value *property* on inputs by using defaultValue\n\t// Fallback to Sizzle.attr by returning undefined where appropriate\n\t// XML does not need to be checked as this will not be assigned for XML documents\n\tif ( elem.nodeName.toLowerCase() === \"input\" ) {\n\t\treturn elem.defaultValue;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns Returns -1 if a precedes b, 1 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect xml\n * @param {Element|Object} elem An element or a document\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar doc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.parentWindow;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\t// Support tests\n\tdocumentIsHTML = !isXML( doc );\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\tif ( parent && parent.frameElement ) {\n\t\tparent.attachEvent( \"onbeforeunload\", function() {\n\t\t\tsetDocument();\n\t\t});\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\n\t\t// Support: IE<8\n\t\t// Prevent attribute/property \"interpolation\"\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\taddHandle( \"type|href|height|width\", interpolationHandler, div.firstChild.getAttribute(\"href\") === \"#\" );\n\n\t\t// Support: IE<9\n\t\t// Use getAttributeNode to fetch booleans when getAttribute lies\n\t\taddHandle( booleans, boolHandler, div.getAttribute(\"disabled\") == null );\n\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t// Support: IE<9\n\t// Retrieving value should defer to defaultValue\n\tsupport.input = assert(function( div ) {\n\t\tdiv.innerHTML = \"<input>\";\n\t\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\t\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n\t});\n\n\t// IE6/7 still return empty string for value,\n\t// but are actually retrieving the property\n\taddHandle( \"value\", valueHandler, support.attributes && support.input );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Check if getElementsByClassName can be trusted\n\tsupport.getElementsByClassName = assert(function( div ) {\n\t\tdiv.innerHTML = \"<div class='a'></div><div class='a i'></div>\";\n\n\t\t// Support: Safari<4\n\t\t// Catch class over-caching\n\t\tdiv.firstChild.className = \"i\";\n\t\t// Support: Opera<10\n\t\t// Catch gEBCN failure to find non-leading classes\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = isNative(doc.querySelectorAll)) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Support: Opera 10-12/IE8\n\t\t\t// ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type attribute is restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"t\", \"\" );\n\n\t\t\tif ( div.querySelectorAll(\"[t^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = isNative( (matches = docElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = isNative(docElem.contains) || docElem.compareDocumentPosition ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n\t// Detached nodes confoundingly follow *each other*\n\tsupport.sortDetached = assert(function( div1 ) {\n\t\t// Should return 1, but returns 4 (following)\n\t\treturn div1.compareDocumentPosition( doc.createElement(\"div\") ) & 1;\n\t});\n\n\t// Document order sorting\n\tsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );\n\n\t\tif ( compare ) {\n\t\t\t// Disconnected nodes\n\t\t\tif ( compare & 1 ||\n\t\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t\tif ( a === doc || contains(preferredDoc, a) ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( b === doc || contains(preferredDoc, b) ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\t// Maintain original order\n\t\t\t\treturn sortInput ?\n\t\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t\t0;\n\t\t\t}\n\n\t\t\treturn compare & 4 ? -1 : 1;\n\t\t}\n\n\t\t// Not directly comparable, sort on existence of method\n\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\t} else if ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch(e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [elem] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = ( fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined );\n\n\treturn val === undefined ?\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull :\n\t\tval;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[5] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] && match[4] !== undefined ) {\n\t\t\t\tmatch[2] = match[4];\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === elem.type );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar data, cache, outerCache,\n\t\t\t\tdirkey = dirruns + \" \" + doneName;\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {\n\t\t\t\t\t\t\tif ( (data = cache[1]) === true || data === cachedruns ) {\n\t\t\t\t\t\t\t\treturn data === true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcache = outerCache[ dir ] = [ dirkey ];\n\t\t\t\t\t\t\tcache[1] = matcher( elem, context, xml ) || cachedruns;\n\t\t\t\t\t\t\tif ( cache[1] === true ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\t// A counter to specify which element is currently being matched\n\tvar matcherCachedRuns = 0,\n\t\tbySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = matcherCachedRuns;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++matcherCachedRuns;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector );\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Chrome<<14\n// Always assume duplicates if they aren't passed to the comparison function\n[0, 0].sort( sortOrder );\nsupport.detectDuplicates = hasDuplicate;\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function( support ) {\n\n\tvar all, a, input, select, fragment, opt, eventName, isSupported, i,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Finish early in limited (non-browser) environments\n\tall = div.getElementsByTagName(\"*\") || [];\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !a || !a.style || !all.length ) {\n\t\treturn support;\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName(\"tbody\").length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName(\"link\").length;\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Make sure that element opacity exists\n\t// (IE uses filter instead)\n\t// Use a regex to work around a WebKit issue. See #5145\n\tsupport.opacity = /^0.5/.test( a.style.opacity );\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!a.style.cssFloat;\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone = document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Will be defined later\n\tsupport.inlineBlockNeedsLayout = false;\n\tsupport.shrinkWrapBlocks = false;\n\tsupport.pixelPosition = false;\n\tsupport.deleteExpando = true;\n\tsupport.noCloneEvent = true;\n\tsupport.reliableMarginRight = true;\n\tsupport.boxSizingReliable = true;\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<9\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement(\"input\");\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"checked\", \"t\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( input );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)\n\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\tdiv.setAttribute( eventName = \"on\" + i, \"t\" );\n\n\t\tsupport[ i + \"Bubbles\" ] = eventName in window || div.attributes[ eventName ].expando === false;\n\t}\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: IE<9\n\t// Iteration over object's inherited properties before its own.\n\tfor ( i in jQuery( support ) ) {\n\t\tbreak;\n\t}\n\tsupport.ownLast = i !== \"0\";\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, marginDiv, tds,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\";\n\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Support: IE8\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior.\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.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%;\";\n\n\t\t// Workaround failing boxSizing test due to offsetWidth returning wrong value\n\t\t// with some non-1 values of body zoom, ticket #13543\n\t\tjQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {\n\t\t\tsupport.boxSizing = div.offsetWidth === 4;\n\t\t});\n\n\t\t// Use window.getComputedStyle because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = div.appendChild( document.createElement(\"div\") );\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== core_strundefined ) {\n\t\t\t// Support: IE<8\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Support: IE6\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tif ( support.inlineBlockNeedsLayout ) {\n\t\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t\t// Support: IE<8\n\t\t\t\tbody.style.zoom = 1;\n\t\t\t}\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\t// Null elements to avoid leaks in IE\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tall = select = fragment = opt = a = input = null;\n\n\treturn support;\n})({});\n\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ){\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"applet\": true,\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\t// Do not set data on non-element because it will not be cleared (#8335).\n\t\tif ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar attrs, name,\n\t\t\tdata = null,\n\t\t\ti = 0,\n\t\t\telem = this[0];\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattrs = elem.attributes;\n\t\t\t\t\tfor ( ; i < attrs.length; i++ ) {\n\t\t\t\t\t\tname = attrs[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf(\"data-\") === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook,\n\trclass = /[\\t\\r\\n\\f]/g,\n\trreturn = /\\r/g,\n\trfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tgetSetInput = jQuery.support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = jQuery.trim( cur );\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.match( core_rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === core_strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed \"false\",\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar ret, hooks, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Use proper attribute retrieval(#6932, #12072)\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\telem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === core_strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( core_rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;\n\n\tjQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar fn = jQuery.expr.attrHandle[ name ],\n\t\t\t\tret = isXML ?\n\t\t\t\t\tundefined :\n\t\t\t\t\t/* jshint eqeqeq: false */\n\t\t\t\t\t(jQuery.expr.attrHandle[ name ] = undefined) !=\n\t\t\t\t\t\tgetter( elem, name, isXML ) ?\n\n\t\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\t\tnull;\n\t\t\tjQuery.expr.attrHandle[ name ] = fn;\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\treturn name === \"value\" || value === elem.getAttribute( name ) ?\n\t\t\t\tvalue :\n\t\t\t\tundefined;\n\t\t}\n\t};\n\tjQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =\n\t\t// Some attributes are constructed with empty-string values when not defined\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\t(ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t};\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\treturn ret && ret.specified ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !jQuery.support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !jQuery.support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = core_hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = core_hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = core_slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Even when returnValue equals to undefined Firefox will still show alert\n\t\t\t\tif ( event.result !== undefined ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === core_strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\nvar isSimple = /^.[^:#\\[\\.,]*$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tcur = ret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( jQuery.unique(all) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tvar elem = elems[ 0 ];\n\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}));\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\tmanipulation_rcheckableType = /^(?:checkbox|radio)$/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: jQuery.support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\"  ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar\n\t\t\t// Snapshot the DOM in case .domManip sweeps something relevant into its fragment\n\t\t\targs = jQuery.map( this, function( elem ) {\n\t\t\t\treturn [ elem.nextSibling, elem.parentNode ];\n\t\t\t}),\n\t\t\ti = 0;\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\tvar next = args[ i++ ],\n\t\t\t\tparent = args[ i++ ];\n\n\t\t\tif ( parent ) {\n\t\t\t\t// Don't use the snapshot next if it has moved (#13810)\n\t\t\t\tif ( next && next.parentNode !== parent ) {\n\t\t\t\t\tnext = this.nextSibling;\n\t\t\t\t}\n\t\t\t\tjQuery( this ).remove();\n\t\t\t\tparent.insertBefore( elem, next );\n\t\t\t}\n\t\t// Allow new content to include elements from the context set\n\t\t}, true );\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn i ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback, allowIntersection ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = core_concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction || !( l <= 1 || typeof value !== \"string\" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback, allowIntersection );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Hope ajax is available...\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && manipulation_rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tcore_push.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( manipulation_rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== core_strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcore_deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evalUrl: function( url ) {\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"script\",\n\t\t\tasync: false,\n\t\t\tglobal: false,\n\t\t\t\"throws\": true\n\t\t});\n\t}\n});\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\nvar iframe, getStyles, curCSS,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\t// isHidden might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\n\t\t\tif ( !values[ index ] ) {\n\t\t\t\thidden = isHidden( elem );\n\n\t\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\tvar len, styles,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !jQuery.support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\n// NOTE: we've included the \"window\" in window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar width, minWidth, maxWidth,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar left, rs, rsLeft,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\t\t\tret = computed ? computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe ||\n\t\t\t\tjQuery(\"<iframe frameborder='0' width='0' height='0'/>\")\n\t\t\t\t.css( \"cssText\", \"display:block !important\" )\n\t\t\t).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;\n\t\t\tdoc.write(\"<!doctype html><html><body>\");\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n// Called ONLY from within css_defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\t\tdisplay = jQuery.css( elem[0], \"display\" );\n\telem.remove();\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, \"display\" ) ) ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\t\t\tcomputed;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\t// Support: Opera <= 12.12\n\t\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t\t(!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\tvar type = this.type;\n\t\t\t// Use .is(\":disabled\") so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !manipulation_rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\tajax_nonce = jQuery.now(),\n\n\tajax_rquery = /\\?/,\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat(\"*\");\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[0] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar deep, key,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ){\n\tjQuery.fn[ type ] = function( fn ){\n\t\treturn this.on( type, fn );\n\t};\n});\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( core_rnotwhite ) || [\"\"];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + ajax_nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ajax_nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\tvar firstDataType, ct, finalDataType, type,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( ajax_nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( ajax_rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\nvar xhrCallbacks, xhrSupported,\n\txhrId = 0,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject && function() {\n\t\t// Abort all pending requests\n\t\tvar key;\n\t\tfor ( key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t};\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\nxhrSupported = jQuery.ajaxSettings.xhr();\njQuery.support.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = jQuery.support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( err ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, responseHeaders, statusText, responses;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// we're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9\n// Panic based approach to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || jQuery._data( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = jQuery._data( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) ) {\n\t\tjQuery.fx.start();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, win,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== core_strundefined ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\treturn {\n\t\ttop: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),\n\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t};\n};\n\njQuery.offset = {\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true)\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\") === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Limit scope pollution from any deprecated API\n// (function() {\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// })();\nif ( typeof module === \"object\" && module && typeof module.exports === \"object\" ) {\n\t// Expose jQuery as module.exports in loaders that implement the Node\n\t// module pattern (including browserify). Do not create the global, since\n\t// the user will be storing it themselves locally, and globals are frowned\n\t// upon in the Node module world.\n\tmodule.exports = jQuery;\n} else {\n\t// Otherwise expose jQuery to the global object as usual\n\twindow.jQuery = window.$ = jQuery;\n\n\t// Register as a named AMD module, since jQuery can be concatenated with other\n\t// files that may use define, but not via a proper concatenation script that\n\t// understands anonymous AMD modules. A named AMD is safest and most robust\n\t// way to register. Lowercase jquery is used because AMD module names are\n\t// derived from file names, and jQuery is normally delivered in a lowercase\n\t// file name. Do this after creating the global so that if an AMD module wants\n\t// to call noConflict to hide this version of jQuery, it will work.\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( \"jquery\", [], function () { return jQuery; } );\n\t}\n}\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/jquery.dialog.js",
    "content": "﻿\n(function($) {\n    /**\n     * @name Dialog\n     * @class 弹出框,可拖拽，设置宽和高，有无遮罩，\n     */\n    $.uedWidget('ued.Dialog', {\n        options : /**@lends Dialog# */\n        {\n            /**\n             *传入的标题\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({ title :\"string\"}})\n             */\n            title : null,\n            /**\n             *下端按钮，如果有数值，则添加，默认没有按钮\n             * @type object\n             * @default null\n             * @example\n             *  $(\"#dialog\").uedDialog({buttons:[\"false\":function(){\n             *     alert(2)\n             * },\"true\":function(){\n             *     alert(3)\n             * }]})\n             */\n            buttons : null,\n            /**\n             *是否有遮罩，添加在body下,默认有\n             * @type boolean\n             * @default true\n             * @example\n             *  $(\"#dialog\").uedDialog({modal:false})\n             */\n            modal : false,\n            /**\n             *定位,如果没有传入默认居中,以百分比为单位\n             * @type object\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({position:[50,10]})\n             */\n            position : null,\n            /**\n             *dialog的宽度\n             * @type int\n             * @default 300\n             * @example\n             *  $(\"#dialog\").uedDialog({width:500})\n             */\n            width : 300,\n            /**\n             *dialog的高度\n             * @type int\n             * @default 200\n             * @example\n             * $(\"#dialog\").uedDialog({height:500})\n             */\n            height : 200,\n            /**\n             *是否可以拖拽\n             * @type boolean\n             * @default true\n             * @example\n             *  $(\"#dialog\").uedDialog({isDrag:false})\n             */\n            isDrag : true,\n            /**\n             *默认打开\n             * @type boolean\n             * @default false\n             * @example\n             *  $(\"#dialog\").uedDialog({autoOpen:false})\n             */\n            autoOpen : false,\n            /**\n             *提示类型\"success\",\"error\",\"confirm\",\"warning\"\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({type:\"success\"})\n             */\n            type : null,\n            /**\n             *提示信息\n             * @type string\n             * @default null\n             * @example\n             * $(\"#dialog\").uedDialog({message:\"tishixingxing\"})\n             */\n            message : null,\n\t\t\t/*\n\t\t\t * 弹窗关闭后的回调,默认为null\n\t\t\t */\n\t\t\tcloseCallback : null,\n            /*\n             * 弹窗的定位方式，默认为true  \n             */\n            fixed:true\n        },\n       \n        _create : function() {\n            var $el = this.element, options = this.options, self = this;\n            var _define = this._define = {};\n\t\t\t//创建弹窗节点\n\t\t\tthis._createDialogDom($el, options, _define);\n\t\t\t//设置弹窗属性\n\t\t\tthis._calDialogAttr($el, options, _define);\n\t\t\t//绑定弹窗事件\n\t\t\tthis._bindEvent($el, options, _define);\n        },\n       \n\t    _createDialogDom : function($el, options, _define){\n\t\t\tvar $farther = _define.$farther = $el.parent(), buttons = options.buttons;\n\t\t\tvar $dialog = _define.$dialog = $('<div class=\"ui-dialog-panel\"><div class=\"ui-dialog\"></div><div class=\"ui-dialog-leftYY\"></div><div class=\"ui-dialog-rightYY\"></div><div class=\"ui-dialog-bottomLeft\"></div><div class=\"ui-dialog-bottomRight\"></div><div class=\"ui-dialog-bottomCenter\"></div></div>');\n\t\t\t//创建弹窗头部区域\n\t\t\tvar $dialogHd = _define.$dialogHd = $('<div class=\"ui-dialog-hd\"><h6></h6><a href=\"javascript:;\" class=\"ui-dialog-close ue-state-default\"><i></i></a></div>');\n\t\t\t//创建弹窗内容区域\n\t\t\tvar $dialogContent = _define.$dialogContent = $el.addClass('ui-dialog-content');\n\t\t\tif(options.type){\n\t\t\t\t//创建提示型弹窗提示区域\n\t\t\t\tthis._createMessageDom($el, $dialogContent, options);\n\t\t\t}else{\n\t\t\t\t//普通型弹窗内为iframe时，拖动卡顿\n\t\t\t\tif($el.children().is('iframe')){\n\t\t\t\t\tvar $contentMask = _define.$contentMask = $('<div style=\"position:absolute;top:45px;left:0;right:0;bottom:0;display:none\"></div>');\n\t\t\t\t\t$dialogContent.append($contentMask);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$el.css('display','block');//显示$el内容\n\t\t\t\n\t\t\t$dialog.children('.ui-dialog').append($dialogHd).append($dialogContent);\n\t\t\t//创建弹窗底部区域\n\t\t\tvar $dialogFt = _define.$dialogFt = $('<div class=\"ui-dialog-ft\"></div>');\n\t\t\tif(buttons){\n\t\t\t\tvar buttonArray = [];\n\t\t\t\tfor(var i = 0, len = buttons.length; i < len; i++){\n\t\t\t\t\tvar button = buttons[i], length = this._returnLetterLength(button.label);\n\t\t\t\t\tlength = length < 3 ? 3 : length;\n\t\t\t\t\tif(button.recommend){\n\t\t\t\t\t\tbuttonArray.push('<button type=\"button\" class=\"ue-button-recommend ue-state-default long' + length + '\">'+ button.label +'</button>');\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbuttonArray.push('<button type=\"button\" class=\"ue-button ue-state-default long' + length + '\">'+ button.label +'</button>');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$dialogFt.append(buttonArray.join(''));\n\t\t\t\t$dialog.children().append($dialogFt);\n\t\t\t}\n\t\t\t\n\t\t\t//判断是否需要生成遮罩\n\t\t\tif(!options.modal){\n\t\t\t\tvar $dragMask = _define.$dragMask = $('<div style=\"position: fixed;z-index:9999;top:0;left:0;right:0;bottom:0;display:none\"></div>');\n           \t\t $('body').append($dragMask);\n\t\t\t}\n\t\t\t\n\t\t\t//插入到$farther中去\n\t\t\t$farther.append($dialog.hide());\n\t\t},\n\t\t/*\n\t\t * 创建提示型弹窗提示区域\n\t\t */\n\t\t_createMessageDom : function($el, $dialogContent, options){\n\t\t\tvar type = options.type, _define = this._define;\n\t\t\t\n\t\t\t_define.$dialog.addClass('ui-dialog-'+type);\n\t\t\t//创建节点\n\t\t\t$dialogContent.empty().append('<div class=\"ui-dialog-icon\"></div><div class=\"ui-dialog-text\"><span class=\"patch\"></span><span class=\"dialog-text\"></span></div>');\n\t\t\tvar $dialogMessage = _define.$dialogMessage = $dialogContent.find('.dialog-text');\n\t\t},\n\t\t\n\t\t_calDialogAttr : function($el, options, _define){\n\t\t\t\n\t\t\tthis.setTitle(options.title);\n\t\t\tif(!options.type){\n\t\t\t\t//普通弹窗\n\t\t\t\tthis.setWidth(options.width);\n\t\t\t\tthis.setHeight(options.height);\n\t\t\t}else{\n\t\t\t\t//提示型弹窗\n\t\t\t\tthis.setWidth(355);\n\t\t\t\tthis.setHeight(145);\n\t\t\t\tthis.setMessage(options.message);\n\t\t\t}\n\t\t\t//设置弹窗的位置\n\t\t\tthis.setPosition(options.position);\n\t\t\t\n\t\t\tif(options.autoOpen){\n\t\t\t\tthis.open();\n\t\t\t}\n\t\t},\n\t\t\n\t\t_calLeft : function(_left, _define){\n\t\t\tif(_left == 'left'){\n\t\t\t\t_define.left = 0;\n\t\t\t}else{\n\t\t\t\t_define.left = ($(window).width() - _define.width) / 2;\n\t\t\t\t_define.left = _define.left < 0 ? 0 : _define.left;\n\t\t\t}\n\t\t},\n\t\t\n\t\t_calTop : function(_top, _define){\n\t\t\tif(_top == 'top'){\n\t\t\t\t_define.top = 0;\n\t\t\t}else{\n\t\t\t\t_define.top = ($(window).height() - _define.height) / 2;\n\t\t\t\t_define.top = _define.top < 0 ? 0 : _define.top;\n\t\t\t}\n\t\t},\n\t\t\n\t\t_bindEvent : function($el, options, _define){\n\t\t\tvar self = this;\n\t\t\t//绑定关闭按钮事件\n\t\t\t_define.$dialogHd.children('.ui-dialog-close').click(function(){\n\t\t\t\tself.close();\n\t\t\t});\n\t\t\t\n\t\t\t//绑定弹窗拖拽事件\n\t\t\tif(options.isDrag){\n\t\t\t\tself._dialogDrag(self, _define);\n\t\t\t}\n\t\t\t//绑定按钮点击事件\n\t\t\tvar buttons = options.buttons;\n\t\t\tif(buttons){\n\t\t\t\t_define.$dialogFt.bind('click',function(e){\n\t\t\t\t\tvar $target = $(e.target), button = buttons[$target.index()];\n\t\t\t\t\tif($target.is('button')){\n\t\t\t\t\t\tif(!button.setFunc){\n\t\t\t\t\t\t\tbutton.callBack && button.callBack(self.element, $('#__mask',$('body')));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbutton.callBack && button.callBack(button.param);\n\t\t\t\t\t\t\tself.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t/*\n\t\t * 弹窗拖动函数\n\t\t * @param {Object} self 弹窗对象\n\t\t * @param {Object} _define组件内部自定义对象。用来存放临时值 \n\t\t */\n\t\t_dialogDrag : function(self, _define){\n\t\t\tvar $dragMask = _define.$dragMask, $contentMask = _define.$contentMask;\n\t\t\tvar $dialogHd = _define.$dialogHd, $dialog = _define.$dialog, winWidth, winHeight;\n\t\t\tvar left,top,dialogWidth = _define.width, dialogHeight = _define.height;\n\t\t\tvar tempX, tempY;\n\t\t\t$dialogHd.css('cursor','move');\n\t\t\t$dialogHd.bind('mousedown',function(e){\n\t\t\t\t//e.preventDefault();\n\t\t\t\t//获取最新值\n\t\t\t\tleft = _define.left, top = _define.top, tempX = e.clientX, tempY = e.clientY, winWidth = $(window).width(), winHeight = $(window).height();\n\n\t\t\t\tif(!self.options.fixed){//定位为absolute\n\t\t\t\t\twinHeight = $(document).outerHeight();\n\t\t\t\t}\n\t\t\t\t$contentMask && $contentMask.show();\n\t\t\t\t$dragMask && $dragMask.show();\n\t\t\t\tthis.setCapture && this.setCapture();\n\t\t\t\t$(document).bind('mousemove',mouseMove).bind('mouseup',mouseUp);\n\t\t\t});\t\n\t\t\t\n\t\t\tvar mouseMove = function(e){\n\t\t\t\t_define.left = e.clientX - tempX + left;\n\t\t\t\t_define.top = e.clientY - tempY + top;\n\t\t\t\t_define.left = _define.left < 0 ? 0 : _define.left > (winWidth - dialogWidth) ? (winWidth - dialogWidth) : _define.left;\n\t\t\t\t_define.top = _define.top < 0 ? 0 : _define.top > (winHeight - dialogHeight) ? (winHeight - dialogHeight) : _define.top;\n\t\t\t\t$dialog.css({'left':_define.left,'top':_define.top});\n\t\t\t}\n\t\t\tvar mouseUp = function(e){\n\t\t\t\tthis.releaseCapture && this.releaseCapture();\n\t\t\t\t$contentMask && $contentMask.hide();\n\t\t\t\t$dragMask && $dragMask.hide();\n\t\t\t\t$(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置标题。\n\t\t * @param {String or Object} _title 弹窗标题\n\t\t */\n\t\tsetTitle : function(_title){\n\t\t\tvar _define = this._define, $dialogHd = _define.$dialogHd;\n\t\t\tif(_title){\n\t\t\t\t$dialogHd.find('h6').empty().append('<span class=\"dialog-hd-lc\"></span>' + _title + '<span class=\"dialog-hd-rc\"></span>');\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置宽度\n\t\t * @param {int} _width 弹窗宽度\n\t\t */\n\t\tsetWidth : function(_width){\n\t\t\tvar _define = this._define, $dialogContent = _define.$dialogContent;\n\t\t\t$dialogContent.width(_width);\n\t\t\t//存储弹窗宽度，以便后期计算位置\n\t\t\t_define.width = $dialogContent.outerWidth() + 10;\n\t\t},\n\t\t\n\t\t/*\n\t\t * 给弹窗设置高度\n\t\t * @param {int} _height 弹窗高度\n\t\t */\n\t\tsetHeight : function(_height){\n\t\t\tvar _define = this._define, $dialogContent = _define.$dialogContent;\n\t\t\t$dialogContent.height(_height);\n\t\t\t//存储弹窗高度，以便后期计算位置\n\t\t\t_define.height = $dialogContent.outerHeight() + 50;\n\t\t},\n\t\t/*\n\t\t * 给提示型弹窗设置提示信息\n\t\t * @param {String or Object} _message 提示弹窗的提示信息\n\t\t */\n\t\tsetMessage : function(_message){\n\t\t\tif(!_message) return;\n\t\t\tvar _define = this._define, $dialogMessage = _define.$dialogMessage;\n\t\t\t$dialogMessage.empty().append(_message);\n\t\t}, \n\t\t/*\n\t\t * 设置弹窗的位置\n\t\t */\n\t\tsetPosition : function(_position){\n\t\t\tif(!_position){\n\t\t\t\t_position = ['center','center'];\n\t\t\t}\n\t\t\tvar _define = this._define ,left = _position[0], top = _position[1], options = this.options;\n\t\t\t_define.left = left, _define.top = top;\n\t\t\tif(typeof left != 'number'){\n\t\t\t\t//计算弹窗的left值\n\t\t\t\tthis._calLeft(left, _define);\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof top != 'number'){\n\t\t\t\t//计算弹窗的left值\n\t\t\t\tthis._calTop(top, _define);\n\t\t\t}\n\t\t\t\n\t\t\t//赋值给弹窗\n\t\t\tif(options.fixed){\n\t\t\t\t_define.$dialog.css({'position':'fixed','left':_define.left,'top':_define.top});\n\t\t\t}else{\n\t\t\t\t_define.$dialog.css({'position':'absolute','left':_define.left,'top':_define.top});\t\n\t\t\t}\n\t\t},\n\t\t\n\t\topen : function(){\n\t\t\tvar _define = this._define, $dialog = _define.$dialog , options = this.options, isMask = options.modal;\t\n\t\t\tisMask &&　$.mask.open('ued-dialog');\n\t\t\tif(!options.fixed && options.position[1]=='center'){\n\t\t\t\t//如果弹窗不是fiexd定位，且top为center时，打开前需要+scrollTop\n\t\t\t\t_define.top += $(window).scrollTop();\n\t\t\t\t$dialog.css('top',_define.top);\n\t\t\t}\n\t\t\t$dialog.show();\n\t\t},\n\t\t\n\t\tclose : function(){\n\t\t\tvar  _define = this._define, $dialog = _define.$dialog, closeCallback = this.options.closeCallback, isMask = this.options.modal;\t\n\t\t\tisMask &&　$.mask.close('ued-dialog');\n\t\t\t$dialog.hide();\n\t\t\tcloseCallback &&　closeCallback.call(this.element,this.element,$('#__mask',$('body')));\n\t\t},\n        _init : function() {\n           // var self = this, options = this.options, $el = this.element;\n        },\n\t\t_returnLetterLength : function(_str){\n\t\t\treturn _str.replace(/[a-z0-9]{2}/ig,'a').length;\t\n\t\t},\n\t\tremove : function(){\n\t\t\tthis._define.$dialog.remove();\t\n\t\t\t$.mask.close('ued-dialog');\n\t\t\tthis._define = null;\n\t\t},\n\t\t/*\n         * 用于修改第一个button的默认函数 addBy xzjiang,update rbai\n         * @param {Object} _func 函数体\n         * @param {string} _param\n\t\t */\n        setFunc : function(_func, _param) {\n\n            var self = this, options = this.options, firstButton = options.buttons[0];\n\t\t\tfirstButton.callBack = _func;\n\t\t\tfirstButton.param = _param;\n\t\t\tfirstButton.setFunc = true;\n        }\n    });\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\tvar onclicktmp = null; \n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", onclicktmp = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t\tdiv.detachEvent( \"onclick\", onclicktmp);  // adamki added\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/jquery.pagination.js",
    "content": "jQuery.fn.pagination = function(maxentries, opts) {\n\topts = jQuery.extend({\n\t\t\t\titems_per_page : 10, // 每页显示多少条记录\n\t\t\t\tcurrent_page : 0,      //当前页码\n\t\t\t\tnum_display_entries : 4, // 中间显示页码的个数\n\t\t\t\tnum_edge_entries : 2, // 末尾显示页码的个数\n\t\t\t\tlink_to : \"javascript:;\",         //页码点击后的链接\n\t\t\t\tprev_text : \"&lt;&nbsp;上一页\",   //上一页的文字\n\t\t\t\tnext_text : \"下一页&nbsp;&gt;\",\t   //下一页的文字\n\t\t\t\tellipse_text : \"...\",  //页码之间的省略号\n\t\t\t\tdisplay_msg : true, // 是否显示记录信息\n\t\t\t\tprev_show_always : true, //是否总是显示最前页\n\t\t\t\tnext_show_always : true,//是否总是显示最后页\n\t\t\t\tsetPageNo:false,//是否显示跳转第几页\n\t\t\t\tcallback : function() {\n\t\t\t\t\treturn false;\n\t\t\t\t} // 回调函数\n\t\t\t}, opts || {});\n\n\treturn this.each(function() {\n\t\t// 总页数\n\t\tfunction numPages() {\n\t\t\treturn Math.ceil(maxentries / opts.items_per_page);\n\t\t}\n\t\t/**\n\t\t * 计算页码\n\t\t */\n\t\tfunction getInterval() {\n\t\t\tvar ne_half = Math.ceil(opts.num_display_entries / 2);\n\t\t\tvar np = numPages();\n\t\t\tvar upper_limit = np - opts.num_display_entries;\n\t\t\tvar start = current_page > ne_half ? Math.max(Math.min(current_page\n\t\t\t\t\t\t\t\t\t- ne_half, upper_limit), 0) : 0;\n\t\t\tvar end = current_page > ne_half ? Math.min(current_page + ne_half,\n\t\t\t\t\tnp) : Math.min(opts.num_display_entries, np);\n\t\t\treturn [start, end];\n\t\t}\n\n\t\t/**\n\t\t * 点击事件\n\t\t */\n\t\tfunction pageSelected(page_id, evt) {\n\t\t\tvar page_id = parseInt(page_id);\n\t\t\tcurrent_page = page_id;\n\t\t\tdrawLinks();\n\t\t\tvar continuePropagation = opts.callback(page_id, panel);\n\t\t\tif (!continuePropagation) {\n\t\t\t\tif (evt.stopPropagation) {\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t} else {\n\t\t\t\t\tevt.cancelBubble = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn continuePropagation;\n\t\t}\n\n\t\t/**\n\t\t * 链接\n\t\t */\n\t\tfunction drawLinks() {\n\t\t\tpanel.empty();\n\t\t\t$pagin.empty();\n\t\t\tpanel.append($pagin);\n\t\t\tvar interval = getInterval();\n\t\t\tvar np = numPages();\n\t\t\tvar getClickHandler = function(page_id) {\n\t\t\t\treturn function(evt) {\n\t\t\t\t\treturn pageSelected(page_id, evt);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar appendItem = function(page_id, appendopts) {\n\t\t\t\tpage_id = page_id < 0 ? 0 : (page_id < np ? page_id : np-1);\n\t\t\t\tappendopts = jQuery.extend({\n\t\t\t\t\t\t\ttext : page_id+1,\n\t\t\t\t\t\t\tclasses : \"\"\n\t\t\t\t\t\t}, appendopts || {});\n\t\t\t\tif (page_id == current_page) {\n\t\t\t\t\tvar lnk = $(\"<span class='current'>\" + (appendopts.text)\n\t\t\t\t\t\t\t+ \"</span>\");\n\t\t\t\t} else {\n\t\t\t\t\tvar lnk = $(\"<a>\" + (appendopts.text) + \"</a>\").bind(\n\t\t\t\t\t\t\t\"click\", getClickHandler(page_id)).attr('href',\n\t\t\t\t\t\t\topts.link_to.replace(/__id__/, page_id));\n\n\t\t\t\t}\n\t\t\t\tif (appendopts.classes) {\n\t\t\t\t\tlnk.addClass(appendopts.classes);\n\t\t\t\t}\n\t\t\t\t$pagin.append(lnk);\n\t\t\t}\n\t\t\t// 上一页\n\t\t\tif (opts.prev_text && (current_page > 0 || opts.prev_show_always)) {\n\t\t\t\tappendItem(current_page - 1, {\n\t\t\t\t\t\t\ttext : opts.prev_text,\n\t\t\t\t\t\t\tclasses : \"prev\"\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\t// 点点点\n\t\t\tif (interval[0] > 0 && opts.num_edge_entries > 0) {\n\t\t\t\tvar end = Math.min(opts.num_edge_entries, interval[0]);\n\t\t\t\tfor (var i = 0; i < end; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\t\t\t\tif (opts.num_edge_entries < interval[0] && opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($pagin);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 中间的页码\n\t\t\tfor (var i = interval[0]; i < interval[1]; i++) {\n\t\t\t\tappendItem(i);\n\t\t\t}\n\t\t\t// 最后的页码\n\t\t\tif (interval[1] < np && opts.num_edge_entries > 0) {\n\t\t\t\tif (np - opts.num_edge_entries > interval[1]\n\t\t\t\t\t\t&& opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($pagin);\n\t\t\t\t}\n\t\t\t\tvar begin = Math.max(np - opts.num_edge_entries, interval[1]);\n\t\t\t\tfor (var i = begin; i < np; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// 下一页\n\t\t\tif (opts.next_text\n\t\t\t\t\t&& (current_page < np - 1 || opts.next_show_always)) {\n\t\t\t\tappendItem(current_page + 1, {\n\t\t\t\t\t\t\ttext : opts.next_text,\n\t\t\t\t\t\t\tclasses : \"next\"\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\t// 记录显示\n\t\t\tif (opts.display_msg) {\n\t\t\t\tif(!maxentries){\n\t\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t\t\t}else{\n\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">显示第&nbsp;'\n\t\t\t\t\t\t\t\t+ ((current_page * opts.items_per_page) + 1)\n\t\t\t\t\t\t\t\t+ '&nbsp;条到&nbsp;'\n\t\t\t\t\t\t\t\t+ (((current_page + 1) * opts.items_per_page) > maxentries\n\t\t\t\t\t\t\t\t\t\t? maxentries\n\t\t\t\t\t\t\t\t\t\t: ((current_page + 1) * opts.items_per_page))\n\t\t\t\t\t\t\t\t+ '&nbsp;条记录，总共&nbsp;' + maxentries + '&nbsp;条</div>');\n\t\t\t\t}\n\t\t\t}\n\t\t\t//设置跳到第几页\n\t\t\tif(opts.setPageNo){\n\t\t\t\t  $(\"<div class='goto'><span class='text'>转到第</span><input type='text'/><span class='page'>页</span><a href='javascript:;'>转</a></div>\").insertBefore($pagin);\t\n\t\t\t}\n\t\t}\n\n\t\t// 当前页\n\t\tvar current_page = opts.current_page;\n\t\tmaxentries = ( maxentries < 0) ? 0 : maxentries;\n\t\topts.items_per_page = (!opts.items_per_page || opts.items_per_page < 0)\n\t\t\t\t? 1\n\t\t\t\t: opts.items_per_page;\n\t\tvar panel = jQuery(this),\n\t\t\t$pagin = $('<div class=\"pagin-list\"></div>');\n\t\t\t\n\t\t\n\t\tthis.selectPage = function(page_id) {\n\t\t\tpageSelected(page_id);\n\t\t}\n\t\tthis.prevPage = function() {\n\t\t\tif (current_page > 0) {\n\t\t\t\tpageSelected(current_page - 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tthis.nextPage = function() {\n\t\t\tif (current_page < numPages() - 1) {\n\t\t\t\tpageSelected(current_page + 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(maxentries==0){\n\t\t\tpanel.append('<span class=\"current prev\">'+opts.prev_text+'</span><span class=\"current next\">'+opts.next_text+'</span><div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t}else{\n\t\t\tdrawLinks();\n\t\t}\n\t\t$(this).find(\".goto a\").on(\"click\",function(evt){\n\t\t\tvar setPageNo = $(this).parent().find(\"input\").val();\n\t\t\tif(setPageNo!=null && setPageNo!=\"\"&&setPageNo>0&&setPageNo<=numPages()){\n\t\t\t\tpageSelected(setPageNo-1, evt);\n\t\t\t}\n\t\t});\t\t\n\t});\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/jquery.searchableSelect.js",
    "content": "// Author: David Qin\n// E-mail: david@hereapp.cn\n// Date: 2014-11-05\n\n(function($){\n\n  // a case insensitive jQuery :contains selector\n  $.expr[\":\"].searchableSelectContains = $.expr.createPseudo(function(arg) {\n    return function( elem ) {\n      return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n    };\n  });\n\n  $.searchableSelect = function(element, options) {\n    this.element = element;\n    this.options = options || {};\n    this.init();\n\n    var _this = this;\n\n    this.searchableElement.click(function(event){\n      // event.stopPropagation();\n      _this.show();\n    }).on('keydown', function(event){\n      if (event.which === 13 || event.which === 40 || event.which == 38){\n        event.preventDefault();\n        _this.show();\n      }\n    });\n\n    $(document).on('click', null, function(event){\n      if(_this.searchableElement.has($(event.target)).length === 0)\n        _this.hide();\n    });\n\n    this.input.on('keydown', function(event){\n      event.stopPropagation();\n      if(event.which === 13){         //enter\n        event.preventDefault();\n        _this.selectCurrentHoverItem();\n        _this.hide();\n      } else if (event.which == 27) { //ese\n        _this.hide();\n      } else if (event.which == 40) { //down\n        _this.hoverNextItem();\n      } else if (event.which == 38) { //up\n        _this.hoverPreviousItem();\n      }\n    }).on('keyup', function(event){\n      if(event.which != 13 && event.which != 27 && event.which != 38 && event.which != 40)\n        _this.filter();\n    })\n  }\n\n  var $sS = $.searchableSelect;\n\n  $sS.fn = $sS.prototype = {\n    version: '0.0.1'\n  };\n\n  $sS.fn.extend = $sS.extend = $.extend;\n\n  $sS.fn.extend({\n    init: function(){\n      var _this = this;\n      this.element.hide();\n\n      this.searchableElement = $('<div tabindex=\"0\" class=\"searchable-select\"></div>');\n      this.holder = $('<div class=\"searchable-select-holder\"></div>');\n      this.dropdown = $('<div class=\"searchable-select-dropdown searchable-select-hide\"></div>');\n      this.input = $('<input type=\"text\" class=\"searchable-select-input\" />');\n      this.items = $('<div class=\"searchable-select-items\"></div>');\n      this.caret = $('<span class=\"searchable-select-caret\"></span>');\n\n      this.scrollPart = $('<div class=\"searchable-scroll\"></div>');\n      this.hasPrivious = $('<div class=\"searchable-has-privious\">...</div>');\n      this.hasNext = $('<div class=\"searchable-has-next\">...</div>');\n\n      this.hasNext.on('mouseenter', function(){\n        _this.hasNextTimer = null;\n\n        var f = function(){\n          var scrollTop = _this.items.scrollTop();\n          _this.items.scrollTop(scrollTop + 20);\n          _this.hasNextTimer = setTimeout(f, 50);\n        }\n\n        f();\n      }).on('mouseleave', function(event) {\n        clearTimeout(_this.hasNextTimer);\n      });\n\n      this.hasPrivious.on('mouseenter', function(){\n        _this.hasPriviousTimer = null;\n\n        var f = function(){\n          var scrollTop = _this.items.scrollTop();\n          _this.items.scrollTop(scrollTop - 20);\n          _this.hasPriviousTimer = setTimeout(f, 50);\n        }\n\n        f();\n      }).on('mouseleave', function(event) {\n        clearTimeout(_this.hasPriviousTimer);\n      });\n\n      this.dropdown.append(this.input);\n      this.dropdown.append(this.scrollPart);\n\n      this.scrollPart.append(this.hasPrivious);\n      this.scrollPart.append(this.items);\n      this.scrollPart.append(this.hasNext);\n\n      this.searchableElement.append(this.caret);\n      this.searchableElement.append(this.holder);\n      this.searchableElement.append(this.dropdown);\n      this.element.after(this.searchableElement);\n\n      this.buildItems();\n      this.setPriviousAndNextVisibility();\n    },\n\n    filter: function(){\n      var text = this.input.val();\n      this.items.find('.searchable-select-item').addClass('searchable-select-hide');\n      this.items.find('.searchable-select-item:searchableSelectContains('+text+')').removeClass('searchable-select-hide');\n      if(this.currentSelectedItem.hasClass('searchable-select-hide') && this.items.find('.searchable-select-item:not(.searchable-select-hide)').length > 0){\n        this.hoverFirstNotHideItem();\n      }\n\n      this.setPriviousAndNextVisibility();\n    },\n\n    hoverFirstNotHideItem: function(){\n      this.hoverItem(this.items.find('.searchable-select-item:not(.searchable-select-hide)').first());\n    },\n\n    selectCurrentHoverItem: function(){\n      if(!this.currentHoverItem.hasClass('searchable-select-hide'))\n        this.selectItem(this.currentHoverItem);\n    },\n\n    hoverPreviousItem: function(){\n      if(!this.hasCurrentHoverItem())\n        this.hoverFirstNotHideItem();\n      else{\n        var prevItem = this.currentHoverItem.prevAll('.searchable-select-item:not(.searchable-select-hide):first')\n        if(prevItem.length > 0)\n          this.hoverItem(prevItem);\n      }\n    },\n\n    hoverNextItem: function(){\n      if(!this.hasCurrentHoverItem())\n        this.hoverFirstNotHideItem();\n      else{\n        var nextItem = this.currentHoverItem.nextAll('.searchable-select-item:not(.searchable-select-hide):first')\n        if(nextItem.length > 0)\n          this.hoverItem(nextItem);\n      }\n    },\n\n    buildItems: function(){\n      var _this = this;\n      this.element.find('option').each(function(){\n        var item = $('<div class=\"searchable-select-item\" data-value=\"'+$(this).attr('value')+'\">'+$(this).text()+'</div>');\n\n        if(this.selected){\n          _this.selectItem(item);\n          _this.hoverItem(item);\n        }\n\n        item.on('mouseenter', function(){\n          $(this).addClass('hover');\n        }).on('mouseleave', function(){\n          $(this).removeClass('hover');\n        }).click(function(event){\n          event.stopPropagation();\n          _this.selectItem($(this));\n          _this.hide();\n        });\n\n        _this.items.append(item);\n      });\n\n      this.items.on('scroll', function(){\n        _this.setPriviousAndNextVisibility();\n      })\n    },\n    show: function(){\n      this.dropdown.removeClass('searchable-select-hide');\n      this.input.focus();\n      this.status = 'show';\n      this.setPriviousAndNextVisibility();\n    },\n\n    hide: function(){\n      if(!(this.status === 'show'))\n        return;\n\n      if(this.items.find(':not(.searchable-select-hide)').length === 0)\n          this.input.val('');\n      this.dropdown.addClass('searchable-select-hide');\n      this.searchableElement.trigger('focus');\n      this.status = 'hide';\n    },\n\n    hasCurrentSelectedItem: function(){\n      return this.currentSelectedItem && this.currentSelectedItem.length > 0;\n    },\n\n    selectItem: function(item){\n      if(this.hasCurrentSelectedItem())\n        this.currentSelectedItem.removeClass('selected');\n\n      this.currentSelectedItem = item;\n      item.addClass('selected');\n\n      this.hoverItem(item);\n\n      this.holder.text(item.text());\n      var value = item.data('value');\n      this.holder.data('value', value);\n      this.element.val(value);\n\n      if(this.options.afterSelectItem){\n        this.options.afterSelectItem.apply(this);\n      }\n    },\n\n    hasCurrentHoverItem: function(){\n      return this.currentHoverItem && this.currentHoverItem.length > 0;\n    },\n\n    hoverItem: function(item){\n      if(this.hasCurrentHoverItem())\n        this.currentHoverItem.removeClass('hover');\n\n      if(item.outerHeight() + item.position().top > this.items.height())\n        this.items.scrollTop(this.items.scrollTop() + item.outerHeight() + item.position().top - this.items.height());\n      else if(item.position().top < 0)\n        this.items.scrollTop(this.items.scrollTop() + item.position().top);\n\n      this.currentHoverItem = item;\n      item.addClass('hover');\n    },\n\n    setPriviousAndNextVisibility: function(){\n      if(this.items.scrollTop() === 0){\n        this.hasPrivious.addClass('searchable-select-hide');\n        this.scrollPart.removeClass('has-privious');\n      } else {\n        this.hasPrivious.removeClass('searchable-select-hide');\n        this.scrollPart.addClass('has-privious');\n      }\n\n      if(this.items.scrollTop() + this.items.innerHeight() >= this.items[0].scrollHeight){\n        this.hasNext.addClass('searchable-select-hide');\n        this.scrollPart.removeClass('has-next');\n      } else {\n        this.hasNext.removeClass('searchable-select-hide');\n        this.scrollPart.addClass('has-next');\n      }\n    }\n  });\n\n  $.fn.searchableSelect = function(options){\n    this.each(function(){\n      var sS = new $sS($(this), options);\n    });\n\n    return this;\n  };\n\n})(jQuery);\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naLongWeekStr:[\"wk\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\naLongMonStr: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u8303\\u56F4,\\u9700\\u8981\\u64A4\\u9500\\u5417?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u786E\\u5B9A\",\nupdateStr: \"\\u786E\\u5B9A\",\ntimeStr: \"\\u65F6\\u95F4\",\nquickStr: \"\\u5FEB\\u901F\\u9009\\u62E9\", \nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u4E8E\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u7BC4\\u570D,\\u9700\\u8981\\u64A4\\u92B7\\u55CE?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u78BA\\u5B9A\",\nupdateStr: \"\\u78BA\\u5B9A\",\ntimeStr: \"\\u6642\\u9593\",\nquickStr: \"\\u5FEB\\u901F\\u9078\\u64C7\",\nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u65BC\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/modernizr.custom.js",
    "content": "/* Modernizr 2.6.2 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes-load\n */\n;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+\";\")+(b||\"\"))}function B(a,b){return typeof a===b}function C(a,b){return!!~(\"\"+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,\"-\")&&j[e]!==c)return b==\"pfx\"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,\"function\")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+o.join(d+\" \")+d).split(\" \");return B(b,\"string\")||B(b,\"undefined\")?D(e,b):(e=(a+\" \"+p.join(d+\" \")+d).split(\" \"),E(e,b,c))}var d=\"2.6.2\",e={},f=!0,g=b.documentElement,h=\"modernizr\",i=b.createElement(h),j=i.style,k,l={}.toString,m=\" -webkit- -moz- -o- -ms- \".split(\" \"),n=\"Webkit Moz O ms\",o=n.split(\" \"),p=n.toLowerCase().split(\" \"),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement(\"div\"),m=b.body,n=m||b.createElement(\"body\");if(parseInt(d,10))while(d--)j=b.createElement(\"div\"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=[\"&#173;\",'<style id=\"s',h,'\">',a,\"</style>\"].join(\"\"),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background=\"\",n.style.overflow=\"hidden\",k=g.style.overflow,g.style.overflow=\"hidden\",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,\"undefined\")&&!B(x.call,\"undefined\")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],\"undefined\")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!=\"function\")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms=function(){return!!F(\"transform\")},q.csstransforms3d=function(){var a=!!F(\"perspective\");return a&&\"webkitPerspective\"in g.style&&w(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F(\"transition\")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?\"\":\"no-\")+v));return e.addTest=function(a,b){if(typeof a==\"object\")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b==\"function\"?b():b,typeof f!=\"undefined\"&&f&&(g.className+=\" \"+(b?\"\":\"no-\")+a),e[a]=b}return e},z(\"\"),i=k=null,function(a,b){function k(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a==\"string\"?a.split(\" \"):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+l().join().replace(/\\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,\"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}\")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g=\"_html5shiv\",h=0,i={},j;(function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",f=\"hidden\"in a,j=a.childNodes.length==1||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return typeof a.cloneNode==\"undefined\"||typeof a.createDocumentFragment==\"undefined\"||typeof a.createElement==\"undefined\"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||\"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video\",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:\"default\",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,\"pfx\")},g.className=g.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(f?\" js \"+t.join(\" \"):\"\"),e}(this,this.document),function(a,b,c){function d(a){return\"[object Function]\"==o.call(a)}function e(a){return\"string\"==typeof a}function f(){}function g(a){return!a||\"loaded\"==a||\"complete\"==a||\"uninitialized\"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){(\"c\"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){\"img\"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),\"object\"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height=\"0\",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),\"img\"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||\"j\",e(a)?i(\"c\"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName(\"script\")[0],o={}.toString,p=[],q=0,r=\"MozAppearance\"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&\"[object Opera]\"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?\"object\":l?\"script\":\"img\",v=l?\"script\":u,w=Array.isArray||function(a){return\"[object Array]\"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split(\"!\"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(\"=\"),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(\".\").pop().split(\"?\").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(\"/\").pop().split(\"?\")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&\"css\"==i.url.split(\".\").pop().split(\"?\").shift()?\"c\":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState=\"loading\",b.addEventListener(\"DOMContentLoaded\",A=function(){b.removeEventListener(\"DOMContentLoaded\",A,0),b.readyState=\"complete\"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement(\"script\"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement(\"link\"),j,c=i?h:c||f;e.href=a,e.rel=\"stylesheet\",e.type=\"text/css\";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/move-top.js",
    "content": "/* UItoTop jQuery Plugin 1.2 | Matt Varone | http://www.mattvarone.com/web-design/uitotop-jquery-plugin */\n(function($){$.fn.UItoTop=function(options){var defaults={text:'To Top',min:200,inDelay:600,outDelay:400,containerID:'toTop',containerHoverID:'toTopHover',scrollSpeed:1000,easingType:'linear'},settings=$.extend(defaults,options),containerIDhash='#'+settings.containerID,containerHoverIDHash='#'+settings.containerHoverID;$('body').append('<a href=\"#\" id=\"'+settings.containerID+'\">'+settings.text+'</a>');$(containerIDhash).hide().on('click.UItoTop',function(){$('html, body').animate({scrollTop:0},settings.scrollSpeed,settings.easingType);$('#'+settings.containerHoverID,this).stop().animate({'opacity':0},settings.inDelay,settings.easingType);return false;}).prepend('<span id=\"'+settings.containerHoverID+'\"></span>').hover(function(){$(containerHoverIDHash,this).stop().animate({'opacity':1},600,'linear');},function(){$(containerHoverIDHash,this).stop().animate({'opacity':0},700,'linear');});$(window).scroll(function(){var sd=$(window).scrollTop();if(typeof document.body.style.maxHeight===\"undefined\"){$(containerIDhash).css({'position':'absolute','top':sd+$(window).height()-50});}\nif(sd>settings.min)\n$(containerIDhash).fadeIn(settings.inDelay);else\n$(containerIDhash).fadeOut(settings.Outdelay);});};})(jQuery);"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/scripts.js",
    "content": "\njQuery(document).ready(function() {\n\n    $('.page-container form').submit(function(){\n        var username = $(this).find('.username').val();\n        var password = $(this).find('.password').val();\n        if(username == '') {\n            $(this).find('.error').fadeOut('fast', function(){\n                $(this).css('top', '27px');\n            });\n            $(this).find('.error').fadeIn('fast', function(){\n                $(this).parent().find('.username').focus();\n            });\n            return false;\n        }\n        if(password == '') {\n            $(this).find('.error').fadeOut('fast', function(){\n                $(this).css('top', '96px');\n            });\n            $(this).find('.error').fadeIn('fast', function(){\n                $(this).parent().find('.password').focus();\n            });\n            return false;\n        }\n    });\n\n    $('.page-container form .username, .page-container form .password').keyup(function(){\n        $(this).parent().find('.error').fadeOut('fast');\n    });\n\n});\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n.Wdate::-ms-clear{display:none;}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/skin/default/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.8\n */\n\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#FFFFFF;\n\tborder:#bbb 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tdisplay:block;\n\tcursor:pointer;\n\theight:16px;\n\twidth:16px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll 0 0;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll -16px 0;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -32px 0;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -48px 0;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tpadding:1px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\theight:20px;\n\tborder:0px;\n\twidth:50px;\n\tcursor:pointer;\t\t\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\theight:20px;\n\tcolor:blue;\n\tborder:#ccc 1px solid;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\t\n\tborder:#ccc 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n\t\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tbackground-color:#BDEBEE;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#FF2F2F;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#000;\n\tbackground-color:#C0EBEF;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A9E4E9;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#6A6AFF;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n}\n\n.WdateDiv #dpTime input{\n\twidth:18px;\n\theight:20px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n    background:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\t\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tmargin-top:2px;\n\tmargin-right:1px;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.8 Skin:whyGreen\n */ \n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tcursor:pointer;\n\tdisplay:block;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat -16px 0px;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -32px 0px;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -48px 0px;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:20px;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tmargin-top:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/supersized-init.js",
    "content": "jQuery(function($){\n\n    $.supersized({\n\n        // Functionality\n        slide_interval     : 4000,    // Length between transitions\n        transition         : 1,    // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left\n        transition_speed   : 1000,    // Speed of transition\n        performance        : 1,    // 0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)\n\n        // Size & Position\n        min_width          : 0,    // Min width allowed (in pixels)\n        min_height         : 0,    // Min height allowed (in pixels)\n        vertical_center    : 1,    // Vertically center background\n        horizontal_center  : 1,    // Horizontally center background\n        fit_always         : 0,    // Image will never exceed browser width or height (Ignores min. dimensions)\n        fit_portrait       : 1,    // Portrait images will not exceed browser height\n        fit_landscape      : 0,    // Landscape images will not exceed browser width\n\n        // Components\n        slide_links        : 'blank',    // Individual links for each slide (Options: false, 'num', 'name', 'blank')\n        slides             : [    // Slideshow Images\n                                 {image : 'images/backgrounds/1.jpg'},\n                                 {image : 'images/backgrounds/2.jpg'},\n                                 {image : 'images/backgrounds/3.jpg'}\n                             ]\n\n    });\n\n});\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/tabledo.js",
    "content": "/* created by tony 20081215\n   updated by tony 20100311\n   option: 实现表格的动态新增、删除、行位置交换、行可上下拖动 \n    固定内容：第二列为排序列,删除ID记录框 delIds\n*/\n\n/* 单元格内容不够长时,方便看单元格的内容 */\nfunction showTheWrite(str){\n   \tdocument.getElementById(\"div_write\").innerText = str;\n}  \n   \t    \t\n/* 实现表格序号列自动调整 created by tony 20081219 */\nfunction sortnoTR(){\n\tsortno('resultTable', 2, 1);\n}\n\n/* 清除表格行的高亮 filterName 表格含有这个名称的,才进行处理 */\nfunction clearTRstyle( filterName ){\n\tvar tableobjs = document.getElementsByTagName(\"TR\");\n\tfor(var i=0;i<tableobjs.length;i++){\n\t\tif((tableobjs[i].parentNode.parentNode.id).toString().indexOf(filterName)!=-1){\n\t\t\ttableobjs[i].style.background = '';\t\t//清空背景\n\t\t}\n\t}\n}\n\n/* 设置单元格的文字 by tony 20091110 \n\tparas: obj colNo:要填写值的列号; value:设定的值;\n*/\t    \nfunction setTDText( obj, colNo, value ){\n\tvar currTr = obj.parentElement.parentElement;\n\t//alert(currTr.getElementsByTagName(\"TD\")[colNo].innerText);\n\tcurrTr.getElementsByTagName(\"TD\")[colNo].innerText = value;\n}\n\n/* 设置下拉框的值 by tony 20100110\n\tparas: obj curValue:当前的值;\n*/\t    \nfunction setSelectOption(obj, curValue ){\n\tfor (i=0;i<obj.length;i++){\n\t\tif(obj.options[i].value == curValue){\n\t\t\tobj.options[i].selected=true;\n\t\t\tbreak; \n\t\t}\n\t} \n}\n\n/* 设置此行是否更新 by tony 20091110 \n*/\t    \nfunction setTRUpdateFlag( obj ){\n\t//alert(obj.type);\n\t//alert(obj.defaultValue);\n\tvar currTr = obj.parentElement.parentElement;\n\tif(currTr.innerHTML.toLowerCase().indexOf(\"<span\")==0){\n\t\tcurrTr = obj.parentElement.parentElement.parentElement;\n\t}\n\t//alert(currTr.innerHTML);\n\tif(obj.value!=obj.defaultValue){\t//当填写的框内容发生变化时,设置本行记录发生变化标识\n\t\tcurrTr.cells[1].all.mr_changed.value = \"1\";\n\t}\n\t//currTr.cells[1].document.getElementsByTagName(\"INPUT\")[4].value = \"1\";\n\t//alert(currTr.cells[1].all.mr_changed.value);\n\t//alert(currTr.cells[1].document.getElementsByTagName(\"INPUT\")[4].value);\n\t//alert(currTr.cells[2].document.getElementsByTagName(\"INPUT\").value);\n\t//currTr.getElementsByTagName(\"TD\").all.mr_changed = \"1\";.document.getElementsByTagName(\"INPUT\")\n}\n\n\n/* 设置此行是否更新 by tony 20120125 reason:按上面判断，有时无法触发，所以直接至标志；例如日期框\n*/\t    \nfunction setTRUpdateFlagTrue( obj ){\n\tvar currTr = obj.parentElement.parentElement;\n\tif(currTr.innerHTML.toLowerCase().indexOf(\"<span\")==0){\n\t\tcurrTr = obj.parentElement.parentElement.parentElement;\n\t}\n\tcurrTr.cells[1].all.mr_changed.value = \"1\";\t//当填写的框内容发生变化时,设置本行记录发生变化标识\n}\n\n/* 新增一行 */\nfunction newTRRecord(objId, isClear) {\n\tvar _stemp = \"\";\n\tvar i = 1;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n\tif(rowLength<=1){\t\t//只有标题则不新增, 默认会有一个空行\n\t\tshowError(\"空行不能建立新行!\");\n\t\treturn rowLength;\n\t}\n\tvar lastTr = tableObj.rows[rowLength-1];\n\t//alert(lastTr.rowIndex);\t\n    var newTR = lastTr.cloneNode(true);\n    newTR.id=\"a\" + (++i);\n    lastTr.parentNode.insertAdjacentElement(\"beforeEnd\", newTR);\t//最后一行增加新行\n    \n    /* 判断表格行中含有input框和textarea框 3层嵌套 */\n    if (isClear) {\n    \tfor (j=0; j<newTR.cells.length; j++) {\n    \t\n    \t\t/* 第一行加属性 */\n    \t\tnewTR.cells[0].style.whiteSpace=\"nowrap\";\n\t\t\tnewTR.cells[0].ondragover = function(){this.className=\"drag_over\" };\t//动态加事件, 改变样式类\n\t\t\tnewTR.cells[0].ondragleave = function(){this.className=\"drag_leave\" };\n\t\t\tnewTR.cells[0].onmousedown = function(){ clearTRstyle(\"result\"); this.parentNode.style.background = '#0099cc';};\t\n\t\t\n    \t\tvar inputArray = newTR.cells[j].getElementsByTagName('input');\n    \t\tif (inputArray.length > 0) {\n\t   \t\t\tfor (m=0; m<inputArray.length; m++) {\n\t   \t\t\t\t// add by tony 20100315 reason:由于radio框名称相同,IE会解析为同一组；所以只能对其单独处理。通过动态替换radio的框的名字，使其随表各行新增行的行号发生变化。同时又由于radio的框的名称不同，提交后台处理时，又和其他文本框等处理不同，所以在radio后加了一个隐藏域，进行独特的处理。这样就和其他input框处理方式相同。\n\t\t\t\t\tif(inputArray[m].type==\"radio\"){\n\t\t\t\t\t\t_stemp = inputArray[m].parentNode.innerHTML;\n\t\t\t\t\t\t_stemp = _stemp.replaceAll(inputArray[m].name,inputArray[m].name.substring(0,inputArray[m].name.length-1)+(rowLength-1));\n\t\t\t\t\t\tinputArray[m].parentNode.innerHTML=_stemp;\n\t\t\t\t\t\t//alert(_stemp);\n\t\t\t\t\t}else{\n\t\t   \t\t\t\tinputArray[m].value = \"\";\t\t\t//clear value\n\t\t\t\t\t}\n\t   \t\t\t}\n   \t\t\t} else {\n\t    \t\tvar textareaArray = newTR.cells[j].getElementsByTagName('textarea');\n\t    \t\tif (textareaArray.length > 0) {\n\t\t   \t\t\tfor (m=0; m<textareaArray.length; m++) {\n\t\t   \t\t\t\ttextareaArray[m].value = \"\";\n\t\t   \t\t\t}\n\t   \t\t\t} else {\n\t   \t\t\t\tvar selectArray = newTR.cells[j].getElementsByTagName('select');\n\t\t    \t\tif (selectArray.length > 0) {\n\t\t\t   \t\t\tfor (m=0; m<selectArray.length; m++) {\n\t\t\t   \t\t\t\tselectArray[m].selected = 0;\n\t\t\t   \t\t\t}\n\t\t   \t\t\t} else {\n\t\t   \t\t\t\tnewTR.cells[j].innerHTML = \"\";\n\t\t   \t\t\t}\n\t   \t\t\t}\n   \t\t\t}\n    \t}\n    }\n//    alert(tableObj.rows.length);\n    try {\n\t    document.getElementsByName('number')[i-1].value = i;\n\t} catch (e){\n\t}\n\t\n\treturn tableObj.rows.length;\n}\n\n/* 记录删除的记录 creaded by tony 20091110 */\nfunction delIdsRecord(ckName) {  \n\tvar delIds = \"\";delIds = \"\";\n\t\n\tvar delCheckboxs = document.getElementsByName(ckName);\n\tfor(var i=0;i<delCheckboxs.length;i++){\n\t\tif(delCheckboxs[i].checked){\n\t\t\tif(delCheckboxs[i].value!=\"\"){\n\t\t\t\tdelIds += delCheckboxs[i].value + \",\";\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\n\t\t}\n\t}\n\tdocument.getElementById(\"delIds\").value = delIds;\n}\n   \n/* 清除删除框 */\nfunction clearDelId(){\n   \tdocument.getElementById(\"delIds\").value = \"\";\n}\n   \n/* 删除空行 add by tony 20100318 */\nfunction delSpaceTRRecord(objId, topRow){\n\tvar bEmpty = false;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n    for(i=rowLength-1; i>=topRow; i--){\t\t//必须倒序，否则当前的删除，obj就少了一条，到最后一条时就会报错\n   \t\tbEmpty = false;\n\t\tvar curTr = tableObj.rows[i];\n\t   \tfor (j=3; j<curTr.cells.length; j++) {\t\t\t\t\t\t\t\t//j=3跳过控件列，从业务列开始处理\n\t   \t\tvar inputArray = curTr.cells[j].getElementsByTagName('input');\t//只需判断是否所有input框都未填写，都未填写就认为此行无用，废弃\n\t   \t\tif (inputArray.length > 0) {\n\t   \t\t\tfor (n=0; n<inputArray.length; n++) {\n\t   \t\t\t\tif(inputArray[n].value==\"\"){\n\t   \t\t\t\t \tbEmpty = true;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n\t   \t\t\t\t}else{\n\t   \t\t\t\t\tbEmpty = false;\n\t   \t\t\t\t}\n\t   \t\t\t}\n\t   \t\t\tif(!bEmpty){\n\t   \t\t\t\tbreak;\n\t   \t\t\t}\n\t   \t\t}\n\t   \t\tvar textareaArray = curTr.cells[j].getElementsByTagName('textarea');\t//只需判断是否所有textarea框都未填写，都未填写就认为此行无用，废弃\n\t   \t\tif (textareaArray.length > 0) {\n\t   \t\t\tfor (n=0; n<textareaArray.length; n++) {\n\t   \t\t\t\tif(textareaArray[n].value==\"\"){\n\t   \t\t\t\t \tbEmpty = true;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n\t   \t\t\t\t}else{\n\t   \t\t\t\t\tbEmpty = false;\n\t   \t\t\t\t}\n\t   \t\t\t}\n\t   \t\t\tif(!bEmpty){\n\t   \t\t\t\tbreak;\n\t   \t\t\t}\n\t   \t\t}\n\t   \t}\n\t    if (bEmpty) {\n\t    \ttableObj.deleteRow(i);\n\t    }\n\t}\n}\n\n/* 删除一行 */\nfunction delTRRecord(ckName, tableId, topRow, clearValueObjName ,isDeleteAll) {  \n\tvar clearValuesObjs = document.getElementsByName(clearValueObjName);\n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\t\n\tvar mr_changeds = document.getElementsByName(\"mr_changed\");\t\t\n\tvar is_change = false;\t//是否发生变化，如果单独增加了几个空行，就删除，可以根据此标识，不进行删除提示\n\t\n\tvar delCheckboxs = document.getElementsByName(ckName);\n\tvar delNumber = new Array(); \n\tif(delCheckboxs.length > 0){\n\t\n\t\n\t\tvar rowLength = delCheckboxs.length;\n\t\tfor(var i=0;i<rowLength;i++){\n\t\t\tif(delCheckboxs[i].checked){\n\t\t\t\tif (clearValuesObjs[i]) {\n\t\t\t\t\tclearValuesObjs[i].name=\"_disabledOrderId_\";\n\t\t\t\t\tclearValuesObjs[i].value=\"\";\n\t\t\t\t}\n\t\t\t\tdelNumber.push(i+topRow);\t\t\t\t\t\t\t\t\t\t\n\t\t\t}\n\t\t\tif(mr_changeds[i].value==\"1\"){\n\t\t\t\tis_change = true;\n\t\t\t}\n\t\t}\n\t}else{\n\t\talert(\"对不起,请至少选择一条需要移除的数据\");\n\t\treturn false;\n\t}\n\t\n\tif(delNumber.length <= 0){\n\t\talert(\"对不起,请至少选择一条需要移除的数据\");\n\t\treturn false;\n\t}\n\t\n\tif(is_change){\n\t\tif(!confirm(\"确实要移除指定内容吗?单击【确定】将移除指定内容！单击【取消】将终止移除操作!\")){\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tif(trTotal==delNumber.length){\t\t\t//如果是全部删除,则先新增一个空行,否则newTRRecord就成了增加表头。\n\t\tnewTRRecord('resultTable', true);\t//删除前，新增一个空行。\n\t}\n\t\n\tfor(var i=0;i<delNumber.length;i++){\n\t\tif(isDeleteAll == false){\n\t\t\tif (i + 1 >= trTotal) {\n\t\t\t\tbreak;\n\t\t\t}\t\t\n\t\t}\n\t\ttableObj.deleteRow(delNumber[i] - i);\n\t}\n}\n\n/* 清空:删除所有 by tony 20091112 */\nfunction clearTRRecord(ckName, tableId, topRow) {  \n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar delNumber = tableObj.rows.length - topRow;\n\t\tfor(var i=delNumber;i>topRow-1;i--){\n\t\t\ttableObj.deleteRow(i);\n\t\t}\n}\n\n/* by tony 20100212 最后一行为空，则删除。reason:如果最后一行为空在删除,这样就不会因_CheckAll监测最后一行为空而提示未填写了 */\nfunction doLastTR(objId) {\n\tvar bEmpty = true;\n\tvar tableObj = document.getElementById(objId);\n\tvar rowLength = tableObj.rows.length;\n\tvar lastTr = tableObj.rows[rowLength-1];\n    \n   \tfor (j=3; j<lastTr.cells.length; j++) {\t\t\t\t\t\t\t\t//j=3跳过控件列，从业务列开始处理\n   \t\tvar inputArray = lastTr.cells[j].getElementsByTagName('input');\t//只需判断是否所有input框都未填写，都未填写就认为此行无用，废弃\n   \t\tif (inputArray.length > 0) {\n   \t\t\tfor (n=0; n<inputArray.length; n++) {\n   \t\t\t\tif(inputArray[n].value!=\"\"){\n   \t\t\t\t \tbEmpty = false;\t\t\t\t\t\t\t\t\t\t//有一个填写了，就不用再判断了\n   \t\t\t\t \tbreak;\n   \t\t\t\t}\n   \t\t\t}\n   \t\t}\n   \t}\n    if (bEmpty) {\n    \ttableObj.deleteRow(rowLength-1);\t//删除最后一行\n    }\n}\n\n\n/* 移到 */\nfunction swapTRRecord(ckName, tableId, topRow, Flag) {  \n\tvar tableObj = document.getElementById(tableId).tBodies[0];\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\t\n\tvar selCheckboxs = document.getElementsByName(ckName);\n\tvar selNumber = -1;\t//选中的checkbox的个数\n\tvar curRow = -1; \t//选中第几个checkbox\n\tif(selCheckboxs.length > 0){\n\t\tselNumber = 0;\n\t\tvar rowLength = selCheckboxs.length;\n\t\tfor(var i=0;i<rowLength;i++){\n\t\t\tif(selCheckboxs[i].checked){\n\t\t\t\tselNumber++;\n\t\t\t\tcurRow = i+1;\t//选中的记录\n\t\t\t\tbreak;\t\t\t//只要选择的第一条\t\n\t\t\t}\n\t\t}\n\t}\n\tif(selNumber==-1){\n\t\t//忽略,没有选择要移动的记录\n\t}else if(selNumber==0){\n\t\talert(\"请至少选择一条需要移动的记录!\");\n\t\treturn false;\n\t}else if(selNumber==0){\n\t\talert(\"请至少选择一条需要移动的记录!\");\n\t\treturn false;\n\t}else if(selNumber==1){\n\t\ttry{\n\t\t\tif(Flag==\"up\"){\n\t\t\t\tif(topRow!=curRow){\n\t\t\t  \t\ttrSwap_Up(tableId, curRow);\t//上移\n\t\t\t  \t\tdocument.getElementsByName(ckName)[curRow-2].checked = true;\n\t\t\t  \t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-2];\n\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t  \t\t\tmcobj.value=\"1\";\t\t//移动,记录排序号发生变化\n\t\t\t  \t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-1];\n\t\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t\t  \t\t\tmcobj.value=\"1\";\t//移动,记录排序号发生变化\n\t\t\t\t  \t\t}\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t}else if(Flag==\"dn\"){\n\t\t\t\ttrSwap_Down(tableId, curRow);\t//下移\n\t\t\t\tdocument.getElementsByName(ckName)[curRow].checked = true;\n\t\t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow];\n\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t  \t\t\tmcobj.value=\"1\";\t\t//移动,记录排序号发生变化\n\t\t\t  \t\t\tmcobj = document.getElementsByName(\"mr_changed\")[curRow-1];\n\t\t\t\t  \t\tif(mcobj!=undefined){\n\t\t\t\t  \t\t\tmcobj.value=\"1\";\t//移动,记录排序号发生变化\n\t\t\t\t  \t\t}\n\t\t\t  \t\t}\n\t\t\t}\n\t\t}catch(err){\n\t\t\t//忽略错误\n\t\t}\n\t}\n\treturn true;\n}\n\n/* 重新排列序号列值 */\nfunction sortno(objId, whichCol, topRow){\n\tvar tableObj = document.getElementById(objId);\n\tvar trTotal = tableObj.rows.length - topRow;\t//除去表格头topRow后行总数\n\tfor (m=topRow; m<=trTotal; m++) {\n\t\tvar curTr = tableObj.rows[m];\n\t\tvar inputArray = curTr.cells[whichCol].getElementsByTagName('input');\n   \t\tif (inputArray.length > 0) {\n   \t\t\tfor (n=0; n<inputArray.length; n++) {\n   \t\t\t\tinputArray[n].value = m;\n   \t\t\t}\n   \t\t}\n\t}\n}\n\n/* 交换表格行 */\nfunction trSwap(tableId, tr1Index, tr2Index){\n\ttry{\n\t\tvar tableObj = document.getElementById(tableId);\n\t\ttableObj.rows[tr1Index].swapNode(tableObj.rows[tr2Index]);\n\t}catch(err){\n\t\t//alert('trSwap出错!');\n\t}\n}\n/* 交换表格行.上移 */\nfunction trSwap_Up(tableId, trIndex){\n\ttrSwap(tableId,trIndex,trIndex-1);\n}\n/* 交换表格行.下移 */\nfunction trSwap_Down(tableId, trIndex){\n\ttrSwap(tableId,trIndex,trIndex+1);\n}\n\n\n\n/* 实现拖动 start */\n\nvar obj;\nvar xx=0,yy=0;\nvar tagobj;\nvar dragobj;\nfunction dragtableinit(){\n\tvar tableobjs = document.getElementsByTagName(\"TR\");\n\tfor(var i=0;i<tableobjs.length;i++){\n\t\tif((tableobjs[i].parentNode.parentNode.id).toString().indexOf(\"result\")!=-1){\n\t\t\ttableobjs[i].onmousedown=mousedown;\n\t\t\ttableobjs[i].ondragover=dragover;\n\t\t\ttableobjs[i].ondragend=dragend;\n\t\t\ttableobjs[i].ondrag=dragmove;\n\t\t\t//tableobjs[i].style.position=\"relative\";\t//有这个则拖动时显示拖动的行,但与textarea的展现相冲突,所以屏蔽\n\t\t\t//tableobjs[i].style.zIndex=1;\n\t\t}\n\t}\n}\nfunction mousedown(){\n\tobj = event.srcElement;\n\tif(obj.tagName==\"TD\") obj=obj.parentNode;\n\tif(obj.tagName!=\"TR\") return false;\n\tif(obj.rowIndex==0) return false;\n\tyy=event.clientY;\n\txx=event.clientX;\n\tobj.style.zIndex=0;\n\ttry{\n\t\tobj.dragDrop(); \n\t}catch(e){\n\t}\n}\nfunction dragmove(){\n\tobj.style.top = event.clientY-yy;\n\tobj.style.left = event.clientX-xx;\n\tobj.style.cursor = 'move';\n}\nfunction dragover(){\n\ttagobj=event.srcElement;\n\tif(tagobj.tagName==\"TD\"){tagobj=tagobj.parentNode;}\n\tif(tagobj.tagName!=\"TR\")return false;\n\n}\nfunction dragend( ){\n\tvar iTargetPosition = 0;\n\tobj.style.cursor = 'move';\n\tobj.style.top=0;\n\tobj.style.left=0;\n\tobj.style.zIndex=1;\n\tif(tagobj!=null && tagobj.rowIndex!=0){\n\t\tvar t1 = resultTable.rows[obj.rowIndex];\n\t\tiTargetPosition = tagobj.rowIndex;\n\t\tvar t2 = resultTable.rows[iTargetPosition];\n\t\ttry{\n\t\t\tresultTable.getElementsByTagName('tbody')[0].insertBefore(t1,t2);\n\t\t} catch (e){\n\t\t}\n\t\ttagobj.style.zIndex=1;\n\t}\n\tobj.style.cursor = '';\n\ttagobj=null;\n\t\n\tsortnoTR();\t//拖动完重新排序\n}\n\n/* 实现拖动 end   */\n\n/* 实现加亮 start */\n    function ShowFloatDiv2(obj,num,length){\n\t    for(var id = 1; id<=length; id++){\n\t\t    objMain = obj + id;\n\t\t    objss = obj + '_own' + id;\n\t\t    objother = obj + '_visibility' + id;\n\t\t\tif(id == num && objMain){\n\t    \ttry{document.getElementById(objMain).style.display = \"none\";}catch(e){};\n\t    \ttry{document.getElementById(objss).style.display = \"none\";}catch(e){};\n\t    \ttry{document.getElementById(objother).style.display = \"block\";}catch(e){};\n\t    \t}\n\t    }\n\t}\n\n    function HideFloatDiv2(obj,num,length){\n\t    for(var id = 1; id<=length; id++){\n\t\t    objMain = obj + id;\n\t\t    objss = obj + '_own' + id;\n\t\t    objother = obj + '_visibility' + id;\n\t\t\tif(id == num){\n\t    \ttry{document.getElementById(objMain).style.display = \"block\";}catch(e){};\n\t    \ttry{document.getElementById(objss).style.display = \"block\";}catch(e){};\n\t    \ttry{document.getElementById(objother).style.display = \"none\";}catch(e){};\n\t    \t}\n\t    }\n\t}\n\n\tfunction HightLightRows(obj){\n\t\t//alert(obj.parentNode.parentNode.tagName);\n\t\tvar Rows = obj.parentNode.parentNode;\n\t\tif(Rows.className == 'rowList_main'){\n\t\t\tRows.className = 'rowList_main_bg';\n\t\t}\n\t}\n/* 实现加亮 end   */\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/js/uisearch.js",
    "content": "/**\n * uisearch.js v1.0.0\n * http://www.codrops.com\n *\n * Licensed under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n * \n * Copyright 2013, Codrops\n * http://www.codrops.com\n */\n;( function( window ) {\n\t\n\t'use strict';\n\t\n\t// EventListener | @jon_neal | //github.com/jonathantneal/EventListener\n\t!window.addEventListener && window.Element && (function () {\n\t   function addToPrototype(name, method) {\n\t\t  Window.prototype[name] = HTMLDocument.prototype[name] = Element.prototype[name] = method;\n\t   }\n\t \n\t   var registry = [];\n\t \n\t   addToPrototype(\"addEventListener\", function (type, listener) {\n\t\t  var target = this;\n\t \n\t\t  registry.unshift({\n\t\t\t __listener: function (event) {\n\t\t\t\tevent.currentTarget = target;\n\t\t\t\tevent.pageX = event.clientX + document.documentElement.scrollLeft;\n\t\t\t\tevent.pageY = event.clientY + document.documentElement.scrollTop;\n\t\t\t\tevent.preventDefault = function () { event.returnValue = false };\n\t\t\t\tevent.relatedTarget = event.fromElement || null;\n\t\t\t\tevent.stopPropagation = function () { event.cancelBubble = true };\n\t\t\t\tevent.relatedTarget = event.fromElement || null;\n\t\t\t\tevent.target = event.srcElement || target;\n\t\t\t\tevent.timeStamp = +new Date;\n\t \n\t\t\t\tlistener.call(target, event);\n\t\t\t },\n\t\t\t listener: listener,\n\t\t\t target: target,\n\t\t\t type: type\n\t\t  });\n\t \n\t\t  this.attachEvent(\"on\" + type, registry[0].__listener);\n\t   });\n\t \n\t   addToPrototype(\"removeEventListener\", function (type, listener) {\n\t\t  for (var index = 0, length = registry.length; index < length; ++index) {\n\t\t\t if (registry[index].target == this && registry[index].type == type && registry[index].listener == listener) {\n\t\t\t\treturn this.detachEvent(\"on\" + type, registry.splice(index, 1)[0].__listener);\n\t\t\t }\n\t\t  }\n\t   });\n\t \n\t   addToPrototype(\"dispatchEvent\", function (eventObject) {\n\t\t  try {\n\t\t\t return this.fireEvent(\"on\" + eventObject.type, eventObject);\n\t\t  } catch (error) {\n\t\t\t for (var index = 0, length = registry.length; index < length; ++index) {\n\t\t\t\tif (registry[index].target == this && registry[index].type == eventObject.type) {\n\t\t\t\t   registry[index].call(this, eventObject);\n\t\t\t\t}\n\t\t\t }\n\t\t  }\n\t   });\n\t})();\n\n\t// http://stackoverflow.com/a/11381730/989439\n\tfunction mobilecheck() {\n\t\tvar check = false;\n\t\t(function(a){if(/(android|ipad|playbook|silk|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\n\t\treturn check;\n\t}\n\t\n\t// http://www.jonathantneal.com/blog/polyfills-and-prototypes/\n\t!String.prototype.trim && (String.prototype.trim = function() {\n\t\treturn this.replace(/^\\s+|\\s+$/g, '');\n\t});\n\n\tfunction UISearch( el, options ) {\t\n\t\tthis.el = el;\n\t\tthis.inputEl = el.querySelector( 'form > input.sb-search-input' );\n\t\tthis._initEvents();\n\t}\n\n\tUISearch.prototype = {\n\t\t_initEvents : function() {\n\t\t\tvar self = this,\n\t\t\t\tinitSearchFn = function( ev ) {\n\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t// trim its value\n\t\t\t\t\tself.inputEl.value = self.inputEl.value.trim();\n\t\t\t\t\t\n\t\t\t\t\tif( !classie.has( self.el, 'sb-search-open' ) ) { // open it\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\tself.open();\n\t\t\t\t\t}\n\t\t\t\t\telse if( classie.has( self.el, 'sb-search-open' ) && /^\\s*$/.test( self.inputEl.value ) ) { // close it\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tthis.el.addEventListener( 'click', initSearchFn );\n\t\t\tthis.el.addEventListener( 'touchstart', initSearchFn );\n\t\t\tthis.inputEl.addEventListener( 'click', function( ev ) { ev.stopPropagation(); });\n\t\t\tthis.inputEl.addEventListener( 'touchstart', function( ev ) { ev.stopPropagation(); } );\n\t\t},\n\t\topen : function() {\n\t\t\tvar self = this;\n\t\t\tclassie.add( this.el, 'sb-search-open' );\n\t\t\t// focus the input\n\t\t\tif( !mobilecheck() ) {\n\t\t\t\tthis.inputEl.focus();\n\t\t\t}\n\t\t\t// close the search input if body is clicked\n\t\t\tvar bodyFn = function( ev ) {\n\t\t\t\tself.close();\n\t\t\t\tthis.removeEventListener( 'click', bodyFn );\n\t\t\t\tthis.removeEventListener( 'touchstart', bodyFn );\n\t\t\t};\n\t\t\tdocument.addEventListener( 'click', bodyFn );\n\t\t\tdocument.addEventListener( 'touchstart', bodyFn );\n\t\t},\n\t\tclose : function() {\n\t\t\tthis.inputEl.blur();\n\t\t\tclassie.remove( this.el, 'sb-search-open' );\n\t\t}\n\t}\n\n\t// add to global namespace\n\twindow.UISearch = UISearch;\n\n} )( window );"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/css/default.css",
    "content": ".btn { border:1px solid #cad9ea; background:#fff; height:22px ;line-height:1.7em; font-size:12px;color:#16387c;cursor: pointer;}\n.b_button{padding:3px 6px 3px 8px;border:1px solid;border-color:#afafaf #808080 #808080 #afafaf;background:#f2f2f2}\n.blank{width:100%;clear:both;height:5px;}\n\n/* import css files */\n@import url(table.css);\n\nbody {\n\ttext-align:center;\n\tmargin:0 auto;padding:0;\n\tfont-size:9pt;\n\tcolor:#666;\n\tfont-family:\"Lucida Grande\", Verdana, Lucida, Helvetica, Arial, \"微软雅黑\" ,sans-serif;\n\n}\ntextarea, input{ padding:2px; border:1px solid; border-color:#369e92;font-size:12px;height:25px;}\nselect{ padding:2px; border:1px solid; border-color:#369e92;font-size:12px;*height:30px;}\nlabel{ cursor:hand; }\ntd{ font:9pt 宋体; }\nth{ font:9pt 微软雅黑; font-weight:bord; text-align:left; }\n.gzdt_list_date{float:right; font-size:12px; font-weight:normal; margin-top:-22px; padding-right:6px; color:#EA9634;}\n\n.tip{float:left;font-size:12px;color:gray;font-weight:normal;margin:22px;padding-left:20px;text-align:left;background:url(../images/notice.gif) no-repeat;}\n.navPoint {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 15);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_pointer.gif) no-repeat;\n}\n.navPoint_back {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 15);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_pointer_back.gif) no-repeat;\n}\n.navPointTop {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 60);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_Rows_pointer.gif) no-repeat;\n}\n.navPointTop_back {\n\tposition:absolute;\t\n\ttop:expression(document.body.clientHeight / 2 - 60);\t\n\tmargin-left:0px;\n\tPADDING-TOP:0px;\n\twidth:14px;\n\tBORDER-LEFT:none;\n\tcursor:pointer;\n\twidth:14px;\n\theight:43px;\n\tbackground:url(../images/title/nav_Rows_pointer_back.gif) no-repeat;\n}\n.middleAlign {\n\twidth: 100%;\n\tpadding-left: 10px;\t\n}\n.navDiv {\n\n}\n.PositionFrame_black{\n\tdisplay:none;\n\tposition:absolute;\n\tleft:0;\n\ttop:0;\n\twidth:expression(document.body.offsetWidth);\n\theight:expression(document.body.offsetHeight);\n\tbackground:#042622;\n\tz-index:9990;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);\n}\n.Frame_loading{\n\tdisplay:none;\n\tposition:absolute;\n\tleft:expression(document.body.clientWidth / 2.2);\n\ttop:expression(document.body.clientHeight / 2.5);\n\twidth:16px;\n\theight:16px;\n\tz-index:9998;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);\n}\n.positionFrame{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:50px;\n\tleft:50px;\n\tborder:1px solid #cbcbcb;\n\twidth:expression(document.body.clientWidth / 1.3);\n\theight:expression(document.body.clientHeight / 1.5);\n\tborder:1px solid #2b8f83;\n\tbackground:#ff6600;\n\tfilter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);\n\tz-index:9997;\n}\n.Position_notebook{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:10px;\n\tright:expression(document.body.clientWidth / 3.5);\n\tz-index:9999;\n}\n.Position_my_note{\n\tdisplay:none;\n\tposition:absolute;\n\ttop:85px;\n\tright:expression(document.body.clientWidth / 3.4);\n\tz-index:9998;\t\n}\n.Position_visibility{      \n\tdisplay:none;\n\tfloat:right;\n\tmargin-right:-1px;\n}\n/****** General Styles ******/\n\n\n\n\n.hand{cursor:pointer;}\n.hand_date{cursor:pointer;background:url(images/date.gif) no-repeat right}\n.hand_choose{cursor:pointer;background:url(images/view.gif) no-repeat right}\n.leftFrame {\n/*\tpadding-left:15px; */\n\tpadding: 0px;\n\tmargin: 0px;\n\tborder-right:1px solid #80DCCD;\n\tbackground:#f0fcfb;\n}\n.leftFrame_none {\n/*\tpadding-left:15px; */\n\tdisplay:none;\n\tbackground:#000;\n}\n.rightFrame {\n\tpadding:0px;\n\tmargin:0px;;\n}\n.leftFrame2 {\n/*\tborder-left:3px solid #889BAA; */\n\tpadding:0px;\n\tmargin:0px;\n/*\tborder-right:3px solid #889BAA; */\n}\n\n.middleFrame {\n\tborder-right:4px solid #889BAA;\n\tborder-left:3px solid #889BAA;\n}\n#leftBody {\n    padding: 0px;\n}\na:link, a:visited {\n\ttext-decoration: none;\n\tcolor: #01554a;\n}\na:hover {\n\ttext-decoration: underline;\n\tcolor:#01554a;\n}\nimg {\n\tvertical-align: middle;\n\tborder: 0px none;\n}\nhr {\n\theight: 1px;\n\tborder: 0;\n\tborder-top: 1px solid #CCCCCC;\n}\n\n}\n\n/****** Menu *******/\n#subMenu {\n\twidth:100%;\n\theight:21px;\n    background: url(\"images/subMenu_bg.gif\") repeat-x;\n}\n\n/****** Main Layout Styles ******/\n#wrapper {\n    margin: 10px;\n}\n#innerWrapper {}\n.navMenu{\n\tbackground: url(\"../images/title/nav_menu_bg.jpg\") repeat-x left;\n\tmargin-top:96px;\n\theight:29px;\n\tfloat:left;\n\twidth:100%;\n\tfont-size:14px;\n\tfont-weight:bold; \n}\n.navMenu li{cursor:pointer;text-decoration:none;float:left;list-style:none; width:93px; height:29px;color:#fff;letter-spacing:1px;color:#fff;background-image: url(\"../images/title/li_dot.gif\");background-repeat: no-repeat;background-position: right 8px;}\n.navMenu li a{color:#fff}\n.navMenu li a:link{color:#fff;text-decoration:none;}\n.navMenu li a:visited{color:#fff;text-decoration:none;}\n.navMenu li a:hover{color:#fff;text-decoration:none;}\n\n\n#menubar {\n    height: 35px;\n    margin: 5px;\n}\n\n#middleMenubar {\n\n    height: 35px;\n}\n\n#innerMenubar {\n\n    height: 35px;\n\n}\n#navMenubar {\n\tpadding-top: 5px;\n\tpadding-right: 10px;\n\tpadding-bottom: 0px;\n\tpadding-left: 10px;\n}\n#footer {\n\tmargin-top: 18px;\n}\n.welcome2{\n   padding-top:20px;\n   }\n\n/****** Header Elements Styles ******/\n#navMenu {\n    height: 29px;\n    line-height:150%;\n    width: 100%;\n    color: #666;\n    margin-top: 34px;\n    padding-left:300px;\n\tpadding-top:10px;\n    text-align: left;\n\tposition:relative;\n}\n#navMenu a{\n\tpadding:6px 15px 6px 24px; \n\tbackground-image:URL(images/button_bg.jpg); \n\tbackground-repeat:repeat-x;border:1px solid; \n\tborder-color:#b6bccc #b6bccc #adc9d4 #b6bccc;\n\tletter-spacing:1.1px;}\n/*用户信息*/\n#navMenu_infor {\n    height: 12px;\n    width: 100%;\n\tcolor:#fff;\n\tfont-weight:bold;\n    margin-top: 10px;\n\tmargin-bottom:5px;\n    padding-right: 7px;\n    text-align: right;\n}\n\n/*用户信息加粗*/\n#navMenu_infor a{\n\tfont-weight:bold;\n}\n#main_base {\n   margin-top:15px;\n}\n/*模块名称链接提示*/\n.info {\n    position:relative;  \n}\n.info span {display: none;}\n.info:hover span {\n     display:block;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);\n     top:18px;left:-60px;width:auto;\n     border:1px solid #a6caf0; background:#d8e8f8; color:#315982;\n\t \n\t padding-top:3px;\n\t padding-bottom:3px;\n\t padding-left:10px;\n\t padding-right:10px;\n\t text-align:center;\n\t text-decoration:none;\n}\n/*链接提示结束*/\n\n#secondMenu {\t\n    padding: 0px 15px 0px 5px;\n    text-align: center;\n}\n#secondMenu a {\n\theight: 18px;\n\tcolor: #255089;\n    text-decoration: none;\n    dispaly: bolck;\n    padding: 4px 5px 0px 5px;\n}\n#secondMenu a:hover {\n\theight:18px;\n    padding: 4px 5px 0px 5px;\n    background: #91C6FF;\n    border-left: 1px solid;\n    border-right: 1px solid;\n    border-bottom: 1px solid;\n    text-decoration: none;\n    color: #FFF;\n}\n#secondMenu ul {\n    margin: 0px;\n    padding: 0px;\n    width: 100%;\n}\n#secondMenu ul li {\n    display: inline;\n}\n\n/****** Footer Elements Styles ******/\n.footerLinks {\n    padding: 10px;\n    color: #999999;\n}\n.footerLinks a {\n    color: #000066;\n    text-decoration: none;\n}\n.footerLinks a:hover {\n    color: #FF0000;\n    text-decoration: underline;\n}\n.copyright {\n    color: #666666;\n}\n\n\n/****** Main Content Layout ******/\n#mainWrapper {}\n\n/* sidebar */\n.clear_left{clear:both;}\n.sidebar_t{\n\theight:10px;\n}\n\n.sidebar_t_l{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/t_l_bg.jpg) no-repeat left top;\n\tfloat:left;\n}\n\n.sidebar_t_r{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/t_r_bg.jpg) no-repeat right top;\n\tfloat:right;\n}\n.sidebar_t_c{\n\theight:10px;\n\tfloat:left;\t\n\toverflow:hidden;\n}\n.sidebar_b_l{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/b_l_bg.jpg) no-repeat left bottom;\n\tfloat:left;\n\t\n}\n\n.sidebar_b_r{\n\twidth:10px;\n\theight:10px;\n\tbackground:url(../images/left/b_r_bg.jpg) no-repeat right bottom;\n\tfloat:right;\n\t\n}\n.sidebar {\n    float: left;\n    margin-bottom:10px;\n    border:1px solid #2b927d;\n    background:#e5fffb;\n    overflow:hidden;\n    width:100%;\n     zoom:1;\n   \n}\n.sidebar-hide {\n    display: none;\n    float: right;\n}\n#innerSidebar {\n    padding-top: 4px;\n}\n\n/* Content */\n.content {\n    float: left;\n    width: 100%;\n    margin-right: -200px;\n}\n.content-wide {\n    width: auto;\n    margin: 10px;\n    margin-right: -200px;\n}\n.content-only {\n    width: auto;\n    margin: 10px;\n    margin-right: -200px;\n}\n#innerContent {\n    overflow: visible;\n}\n\n/* a style which makes mainWrapper touch the bottom of sidebar and content */\n.clear {\n    border-top:1px solid transparent !important;\n    margin-top:-1px !important;\n    border-top:0;\n    margin-top:0;\n    clear:both;\n    visibility:hidden;\n}\n\n.floatToolBar {\n\twidth: 150px;\n\theight: 50px;\n\tposition: absolute;\n\ttop:expression(document.body.clientHeight / 2 - 50);\n}\n\n/****** Content Box ******/\n.textbox {\n    background: transparent;\n    margin-bottom: 10px;\n    margin:0;\n    width:97%;\n}\n.boxer{\n    background: transparent;\n    margin-bottom: 10px;\n    margin:0;\n    width:100%;\n \tborder-bottom: 1px solid #e1f1ef;\n\ttext-align: left;\n    padding: 5px;\n    margin: 5px;\n    font-size:14px;\n\tfont-weight:bold;\n\tcolor:#288c80;\n\t}\n.center{\n\ttext-align: center;\n}\n/*\n.textbox-header {\n    background: url(\"images/box_top_left.gif\") no-repeat top left;\n}\n.textbox-inner-header {\n    background: url(\"images/box_top_right.gif\") no-repeat top right;\n}\n*/\n\n.textbox-title {\n\tfont-family: 微软雅黑, Tahoma, Arial;\n \tborder-bottom: 1px solid #e1f1ef;\n\ttext-align: left;\n    padding: 5px;\n    margin: 5px;\n    font-size:16px;\n\tfont-weight:bold;\n\tcolor:#00544a;\n}\n.textbox-title h2 {font-size:16px;margin:0;padding:0}\n.textbox-content {\n    padding: 15px;\n    padding-top: 0px;\n    padding-bottom: 0px;\n}\n.textbox-content {\n    padding: 15px;\n    font-size:10px;;\n}\n.textbox-note {\n    padding: 15px;\n    font-size:12px;;\n}\n/*\n.textbox-bottom {\n    margin-top: 20px;\n    height: 20px;\n    background: url(\"images/box_bottom_left.gif\") no-repeat bottom left;\n}\n.textbox-inner-bottom {\n    height: 20px;\n    background: url(\"images/box_bottom_right.gif\") no-repeat bottom right;\n}\n*/\n.textbox div .textbox-go-top {\n    text-align: right;\n    padding-right: 5px;\n    padding-bottom: 5px;\n    width:93%;\n}\n.textbox-go-top a {\n    color: #999999;\n    font-size: 11px;\n    font-weight: bold;\n    text-decoration: none;\n    padding-right: 16px;\n    background: url(\"images/go_top.gif\") no-repeat top right;\n}\n.textbox-go-top a:visited {\n    color: #999999;\n}\n\n/****** Panel ******/\n.panel {\n    margin-bottom:5px;\n\tposition:relative;\t\n\theight:100%;\n\tclear:both;\n\t\n\t\n}\n\n.panel_icon{\n\twidth:32x;\n\theight:32px;\n\tposition:absolute;\n\tleft:5px;\n\ttop:3px;\n\tz-index:1;\n\toverflow:hidden;\t\n}\n\n\n\n.panel_icon img{\n\twidth:32x;\n\theight:32px;\n\t\n}\n\n.panel-header {\n    height:auto;\n}\n\n.panel-title {\n\tpadding-bottom: 3px;\n\tpadding-bo                                                                                                                                                ttom: 4px !important; \n\ttext-indent:40px;\n\theight:24px;\n\tline-height:24px;\n\tfont-size: 12px;\n    color:#00544a;\n\ttext-align:left;\n\tbackground:url(\"../images/left/left_title.jpg\") no-repeat top left;\n\tmargin-top:5px;\n\tfont-weight:bold;\t\n\tcursor:pointer;\n}\n\n.panel-title img{\n\tpadding-left:5px;\n\t}\n.panel-content {\n\n\ttext-align:left;\n\tpadding:0px 20px;\n\t\n\t\n}\n.panel_content_tree{\n\tmargin-top:5px;\n\tpadding: 10px 5px;\n\ttext-align:left;\n}\n\n.panel-content ul {\n    padding: 0px;\n    margin: 0px;\n\n}\n.panel-content li {\n    overflow:hidden;\n    list-style:none;\n    margin-top:8px;\n}\n.panel-content li a{text-decoration:none; background:url(\"../images/left/left_bar_a.jpg\") no-repeat left;width:135px;height:23px;padding-left:24px; line-height:23px;}\n.panel-content li a:hover{text-decoration:none; background:url(\"../images/left/left_bar_ah.jpg\") no-repeat left;width:135px;height:23px;color:#218c7e;}\n.panel-content a.focus, .panel-content a.focus:hover{text-decoration:none; background:url(\"../images/left/left_bar_ah.jpg\") no-repeat left;width:135px;height:23px;;color:#00544a; font-weight:bold;}\n/***** Other Elements in Page Content *****/\n.caseArticle {\n    padding-left: 10px;\n    padding-right: 10px;\n    margin: 0px;\n    margin-bottom: 25px;\n    font-size: 14.7px;\n}\n.highlight {\n    color: #FF3300;\n}\n.comment {\n    color: #666666;\n}\nh3 {\n    padding: 5px;\n    padding-left: 10px;\n    font-size: 16px;\n    color: #333333;\n    background-color: #F0F0F0;\n    border-left: 4px solid #E0E0E0;\n}\n\n.accesskey {\n    text-decoration: underline;\n}\n.date {\n    margin: 0px 0px 0px 10px;\n    font: 12px \"Tohama\";\n    color: Maroon;\n}\np {\n    //text-indent: 2em;\n}\n\n.errorMessage {\n    width: 100%;\n    text-align: center;\n    color: red;\n    font-weight: bold;\n    font-size: 14.7px;\n}\n.waringMessage {\n\tmargin: 0px 5px 0px 5px;\n    text-align: center;\n    color: red;\n    font-weight: bold;\n    font-size: 14.7px;\n}\n/* Catalog */\n.catalog {\n    width: 92%;\n}\n.catalog li {\n    width: 100%;\n    padding: 5px 0px 2px 0px;\n    border-bottom: 1px #CCC dotted;\n}\n.catalog .part {\n    text-indent: 2em;\n}\n.catalog .rules {\n    text-indent: 4em;\n}\n\n#infoContent {\n    margin: 0px;\n    padding: 0px;\n    text-align: left;\n}\n#childContent {\n    margin: 0px;\n    padding: 0px;\n    float: left;\n    text-align: left;\n}\n#childContent li {\n    width: 100px;\n    padding: 0px;\n    margin: 2px;\n    height: 25px;\n    display: inline;\n    text-align: left;\n    word-break: break-all;\n    vertical-align: top;\n}\n\n/*设备台帐连接部分*/\nmenu{\n\tmargin:0;\n\tpadding:0;\n\tlist-style:none;\n}\n\naa_2\n\nmenu li{\n\theight:20px;\n\twidth:85px;\n\tmargin-right:4px !important;\n\tmargin-right:2px;\n\tfloat:left;\n\t/*解决IE与Gecko浏览器之间的盒模型差异*/\n\tmargin-bottom:4px !important;\t\n\tmargin-bottom:2px;\n}\nmenu a{\n\t/*定义a为块级元素，方便用盒模型属性定义外观*/\n\tdisplay:block;\n\t/*定义尺寸*/\n\twidth:100%;\n\theight:20px;\n\t/*盒模型风格*/\n\tbackground-color:#F6F6F6;\n\tborder:1px solid #DDD;\n\t/*文字样式*/\n\tfont:11px arial;\n\tpadding-top: 3px;\n\ttext-decoration:none;\n\t/*垂直居中*/\n\tline-height:20px;\n\t/*左对齐*/\n\ttext-align:center;\n}\nmenu a:link,menu a:visited{\n\tcolor:#333;\n}\nmenu a:hover,menu a:active{\n\tbackground-color:#E8F3FF;\n\tborder:1px solid rgb(172, 206, 244);\n}\n\n#navMenubar ul {\n\tmargin:0;\n\tpadding:0;\n\tlist-style:none;\n}\n#navMenubar ul li{\n\theight:20px;\n\tmargin-right:4px !important;\n\tmargin-right:2px;\n\twidth: 45px;\n\tfloat:left;\n\tmargin-bottom:4px;\n\tmargin-top: auto;\n\tmargin-left: auto;\n}\n/* 定义ToolBar样式 */\n#navMenubar a {\n\tdisplay:block;\n\tpadding-left:12px;\n\theight: 15px;\n\tline-height: 15px;\n\ttext-align: left;\n\tborder: none;\n\tcolor:#00554a;\n\t\n}\n\n/* 定义周期监督的状态样式 */\n.advanceStatus {\n\tcolor: #ff7e00;\n\tfont-weight: bold;\n}\n.advanceStatus a:link, .advanceStatus a:visited{\n\tcolor: #ff7e00;\n\tfont-weight: bold;\n}\n.overStatus {\n\tcolor: #e21010;\n\tfont-weight: bold;\n}\n\n.overStatus a:link, .overStatus a:visited{\n\tcolor: #e21010;\n\tfont-weight: bold;\n}\n\n/* 图例 */\n.cutline {\n\tfloat:left;\n\tmargin:5px 0px 5px 2.5%;\n}\n\n.advanceChart {\n\tbackground: #ff7e00;\n\tborder: 1px solid #000000;\n}\n\n.overChart {\n\tbackground: #e21010;\n\tborder: 1px solid #000000;\n}\n/* 调令文号 */\n.titleNo {\n\twidth:20px;\n\tborder: none;\n\tbackground: transparent;\n\ttext-align: center;\n}\n\n.popupImage {\n\tvertical-align: bottom;\n\tcursor: hand;\n\tmargin:0px;\n\tpadding:0px;\n\twidth:20px;\n\theight:20px;\n\tbackground: url(\"images/previewButton.gif\") no-repeat;\n}\n/*Xtable 内容样式*/\n.breakwords_content{\n\ttext-align:left;\n\twidth:15%;\n\tword-break:break-all;\n}\n/*Xtable 要求样式*/\n.breakwords_others{\n\ttext-align:left;\n\twidth:15%;\n\tword-break:break-all;\n}\n/*Xtable 日期样式*/\n.breakwords_date{\n\twidth:10%;\n\t}\n/*定义工具栏(增删改等，根据不同宽度设置不同背景图片)*/\n\n#navMenubar #import {width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #doimport { width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #update { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/update.gif\") no-repeat;}\n#navMenubar #edit { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/update.gif\") no-repeat;}\n#navMenubar #new { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/new.gif\") no-repeat;}\n#navMenubar #back {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/back.gif\") no-repeat;}\n#navMenubar #stop {margin:0 3px;width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #save {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save.gif\") no-repeat;}\n#navMenubar #submit {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save.gif\") no-repeat;}\n#navMenubar #view {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/view.gif\") no-repeat;}\n#navMenubar #accept { width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/accept.gif\") no-repeat;}\n#navMenubar #reject { width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/reject.gif\") no-repeat;}\n#navMenubar #query {width:45px;height:21px;padding-left:4px;padding-top:4px;background:url(\"../images/button/iconbg.jpg\") no-repeat left 1px;}\n#navMenubar #search {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/search.gif\") no-repeat;}\n#navMenubar #enable {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/accept.gif\") no-repeat;}\n#navMenubar #disable {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/disable.gif\") no-repeat;}\n#navMenubar #clear {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/clear.gif\") no-repeat;}\n#navMenubar #startup {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/startup.gif\") no-repeat;}\n#navMenubar #publish {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/startup.gif\") no-repeat;}\n#navMenubar #report {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/report.gif\") no-repeat;}\n#navMenubar #assess {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/assess.gif\") no-repeat;}\n#navMenubar #print {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/print.gif\") no-repeat;}\n#navMenubar #stat {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/stat.gif\") no-repeat;}\n#navMenubar #people {margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/people.png\") no-repeat;}\n#navMenubar #print_view {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:28px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/print_view.gif\") no-repeat;}\n#navMenubar #work_assign {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/work_assign.gif\") no-repeat;}\n#navMenubar #save_assign {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/work_assign.gif\") no-repeat;}\n#navMenubar #confirm_back {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/confirm_back.gif\") no-repeat;}\n#navMenubar #deploy {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/deploy.gif\") no-repeat;}\n#navMenubar #dosearch {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/dosearch.gif\") no-repeat;}\n#navMenubar #save_edit {margin:0 3px;width:95px;height:25px;color:#00554a;padding-left:18px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/save_edit.gif\") no-repeat;}\n#navMenubar #delete { margin:0 3px;width:70px;height:25px;color:#00554a;padding-left:16px;padding-top:5px; letter-spacing:1.2px;background:url(\"../images/button/del.gif\") no-repeat;}\n\n/*定义工具栏结束*/\n.input{border:0;}\n.input_nobox{border:0;}\n.textarea{width:100%;padding:2px; border:1px solid; border-color:#369e92;font-size:12px;height:70px;overflow:hidden;word-break:break-all;}\n.textarea_normal{width:100%;padding:2px; border:1px solid; border-color:#369e92;font-size:12px;overflow:hidden;word-break:break-all;}\n.textarea_count{width:100%;height:25px;border:1px solid #369e92;border-bottom:1px solid #7ed1c7;border-top:none;margin-top:-1px;background:#f0fcfa;text-align:right;padding:5px 5px 0 0;}\n.user_select {border-top:2px solid #e1f1ef;width:100%;background:#fff;}\n.user_select input{border-style:none;}\n\n#plan_list_panel{position:relative;width:97%;}\n.emptableinfo{position:absolute;left:70px;top:-28px;}\n\t.emptableinfo_l{float:left;margin-right:5px;}\n\t.emptableinfo_r{float:left;}\n\t\n.FastMenu{width:100%;float:left;margin-top:15px}\n.DelFastMenu{width:100%;float:left;margin-top:5px;display:block;clear:both;border-top:1px dotted #cee1df;padding-top:5px;}\n#btn_toolbar {\n\tborder:1px solid red;\n\tPOSITION: fixed; TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 0px; DISPLAY: block; COLOR: #990000; _position: fixed\n}\n\n/* 收缩箭头 */\n#plat_arrow{ white-space:nowrap;cursor:pointer; }\n#title_arrow{ float:left;padding-right:6px; }\n#text_arrow{ float:left;padding:4px; }\n.show_arrow{\n\tbackground:url(\"../images/icon/show_arrow.png\") no-repeat;width:23px;height:20px;clear:right;\n}\n.hide_arrow{\n\tbackground:url(\"../images/icon/hide_arrow.png\") no-repeat;width:23px;height:20px;clear:right;\n}\n\n/* 框架  */\n#left_frame{padding:5px 8px 8px 6px; background:#2B927D; border-left:1px solid #7ECFC0; border-right:1px solid #7ECFC0;}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/css/login.css",
    "content": "body{background:#00716B url(../images/login/bg.png) no-repeat 50% -190; margin:0px; padding:0px; font-size:12px; color:#FFFFFF; text-align:center; }\n#warpbox{height:500px;  width:630px; margin:0 auto; position:relative;}\n\na:link,a:visited, a:active{ color:#bee7e5; text-decoration:none;}\na:hover {color:#FED03F; text-decoration:underline;} \n\n.main{ height:200px;  text-align:left; padding-top:300px; padding-left:140px;}\n\n.logo {height:80px; background:url(../images/login/logo.gif) no-repeat;}\n\n.zck{width:480px; height:90px; font-size:14px;}\n.zc{width:240px; float:left;}\n.zc input{background:url(../images/login/input_bg.jpg) repeat-x; padding:5px; width:160px; height:26px; border:1px solid #00897F; vertical-align:middle;}\n.zc_line{height:30px; margin-top:8px;}\n\n.dl{width:235px; float:right; padding-top:18px;}\n.dl input{ width:width:96px; height:45px;}\n\n.loginImgOut {width:96px; height:45px; padding-top:18px; background:url(../images/login/loginImgOut.jpg) no-repeat; border:0px; cursor:pointer;}\n.loginImgOver{width:96px; height:45px; padding-top:18px; background:url(../images/login/loginImgOver.jpg) no-repeat; border:0px; cursor:pointer;}\n\n.resetImgOut {width:96px; height:45px; padding-top:18px; background:url(../images/login/resetImgOut.jpg) no-repeat; border:0px; cursor:pointer;} \n.resetImgOver{width:96px; height:45px; padding-top:18px; background:url(../images/login/resetImgOver.jpg) no-repeat; border:0px; cursor:pointer;} \n\n.bqxx{height:90px; text-align:center; margin-top:50px; color:#bee7e5; line-height:22px; margin-left:-40px; }\n\n\n#ts{\n    position:absolute;\n\tdisplay:none;\n\ttop:335px;\n\tleft:204px;\n\twidth:450px;\n\tbackground:#dbfbf9;\n\tborder:1px solid #cae9e7;\n\ttext-align:left;\n\tcolor:#000000;\n\tpadding:10px;\n}\n#ts a{\n\tdisplay:block;\n\theight:25px;\n\tline-height:25px;\n\tcursor:pointer;\n}\n#ts a:hover, #ts a.selected{\n\tdisplay:block;\t\n\tbackground:#dbfbf9;\n\theight:25px;\n\tline-height:25px;\n\tcolor:#000000;\n}\n\t\n\t"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/css/main.css",
    "content": ".modelDiv {\n\ttext-align: center;\n}\n.welcome {\n    height:100px;\n\ttext-align: center;\n\tbackground: URL(\"images/welcome.gif\") no-repeat top;\n\t\n}\n.modelTable {\n    width: 97%;\n}\n.modelTitle {\n\tBACKGROUND: url(\"../images/title/title_bg.gif\");\n\tbackground-repeat:repeat-x;\n\tFONT: bold 10.5pt 微软雅黑, 宋体;\n\tCOLOR: #00554a;\n\tborder-bottom:1px solid #45b4a7;\n\tHEIGHT: 25px;\n\tTEXT-ALIGN: left;\n\tpadding-top:5px;\n}\n.subModelTitle {\n \tPADDING-LEFT: 10pt;\n\tBACKGROUND: #f0fcfa; \n\tFONT: bold 9pt 微软雅黑, 宋体;\n\tCOLOR: #369e92; \n\tHEIGHT: 20pt; \n\tTEXT-ALIGN: left;\t\n}\n.model_intro_left {\n\twhite-space: nowrap;\n\ttext-align: left;\n    background: #fff;\n\tborder-bottom:1px solid #e1f1ef;\n\twidth: 130px;\n\theight:20pt;\n}\n.model_intro_right {\n\tbackground: #fff;\n\tborder-bottom:1px solid #e1f1ef;\n\tline-height:22px;\n}\n.modelTable td {\n\tpadding: 5px;\n}\n.tableFooter{\n\tBACKGROUND: #c1e1dd;\n}\n\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/css/table.css",
    "content": "table {\n    border-collapse: collapse;\n}\n\ntbody, tfoot {\n    /*background: #FFF;*/\n    COLOR: #333333;\n}\n\ncaption {\n\tfont: 14.7px \"宋体\";\n\tcolor: #476CA4;\t\n}\n\n/* 默认下拉列表框 */\nselect {\n    font: 12px \"宋体\";\n    background: #FFF;\n    border: 1px solid #637DDE;\n}\n\n/*默认数据文本框控制*/\ntextarea {\n    width:98%;\n    font: 12px \"宋体\";\n    border: 1px solid #7F9DB9;\n    /*\n    word-wrap:break-word;\n    word-break:break-all;\n    */\n}\n.commonText {\n    width: 260px;\n}\n\n/* 通用表格 */\n.commonTable {\n\twidth:98%;\n}\n.commonTable_main{\n\twidth:100%;\n\tborder:1px solid #daf2ef;\n}\n.commonTable_special{\n\twidth:100%;\n\tborder:1px solid #daf2ef;\n\tborder-top:1px solid #7ccac1;\n\t\n}\n\n/* 表格栏目 */\n.columnTitle {\n\twidth:120px;\n\twhite-space:nowrap;\n\tpadding: 15px;\n\tmargin-right:-50px;\n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tline-height:150%;\n}\n/* 表格内容 */\n.normalTD {\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContent {\n    width:300px;\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContentAuto {\n    text-align:left;\n\tword-break:break-all;\n\tborder-bottom:1px solid #c1e1dd;\n}\n.tableContent input{\n     padding-top:3px;\n\t padding-left:2px;\n\t width:100%;\n}\n\n.columnTitle_mustbe {\n\twidth: 90px;\n\tPADDING: 5px 5px 5px 18px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat left 18px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n.td_title {\n    PADDING: 5px 5px 5px 6px;\n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n\n/*\n部门模块修改页面使用\n*/\n.td_mustbe {\n    PADDING: 5px 5px 5px 6px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat  -9px 14px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n\n.columnTitle_mustbe_custom {\n\twidth: 80px;\n\tPADDING: 5px 5px 5px 22px;\n\tBACKGROUND:url(/skin/default/images/must.gif) no-repeat left 32px; \n\tFONT: 9pt 宋体; \n\tCOLOR: #00544a; \n\tTEXT-ALIGN: left;\n\tborder-bottom:1px solid #c1e1dd;\n\tpadding-top:15px;\n\tletter-spacing:1.5px;\n}\n.columnTitle_mustbe_custom2 {\n\tbackground:#f0fcfa url(/skin/default/images/must.gif) no-repeat 25px 6px; \n}\n.tableContent_c td{\n    width:auto;\n\tPADDING:5px;    \n\tword-break:break-all;\n\tborder-top:1px solid #c1e1dd;\n\tpadding-top:10px;\n}\n.tc_others{width:auto;margin-left:15px;position:absolute;}\n.tc_others_input{float:left;}\n.tc_others_word{float:left;margin-top:5px;margin-left:3px;color:#009900;}\n\n\n/* 通用表格行定义 */\n.commonTable tr {\n    font-size: 12px;\n}\n\n\n/* 通用表格内容 */\n\n.tableFooter {\n\theight:3px;\n\tbackground: #f5f9fd;\n}\n\n/* 通用表格标题栏 */\n.listTablew{\n\tmargin-top:5px;\n\tpadding:1px;\n\twidth:98%;\n\tborder:1px solid #45b4a7;\t\n}\n.rowTitle {\n    font-weight: bold;\n    text-align: center;\n    HEIGHT:30px;\n}\n.rowTitle td{\n    font-weight: bold;\n    text-align: center;\n    HEIGHT:28px;\n    border-bottom:1px solid #75bdb5;\n    background:#f0fcfa;\n}\n\n.CTM_title{\n\tbackground:#f0fcfa;\n    text-align: center;\n    HEIGHT:30px;\n    border-bottom:1px solid #e1f1ef;\n}\n.CTM_title_main{\n\tbackground:url(images/Now_job_bg.gif) repeat-x;\n    text-align: center;\n    HEIGHT:30px;\n    color:#fff;\n    border-bottom:1px solid #badcd8;\t\n\t}\n.CTM_title_main td{\n\tfont-weight: bold;\n\tborder-bottom:1px solid #52ada2;\n\t}\n.CTM_title td{\n    font-weight: bold;\n    color:#00554a;\n    word-break:break-all;\n}\n.CTM_row td{\n\theight:35px;\n\tpadding:3px 8px;\n\tborder-top:1px solid #badcd8;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\t}\n.CTM_rower td{\n\theight:35px;\n\tpadding:3px 8px;\n\tborder-top:1px solid #daf2ef;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n    word-break:break-all;\n\t}\n.CTM_rower2 td{\n\theight:35px;\n\tpadding:3px;\n\tborder-top:1px solid #daf2ef;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n    word-break:break-all;\n\t}\n.CTM_rower input, .CTM_rower select{\n\twidth:95%;\n}\n.CTM_rower2 input, .CTM_rower2 select{\n\twidth:95%;\n}\n.CTM_row_light{\n\theight:35px;\n\tpadding:0 5px;\n\tborder-top:1px solid #badcd8;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\tbackground:#f0fcfa;\n\t}\n.CTM_row_light td{\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_light_focus_left{\n\tbackground:#f0fcfa url(images/CMT_row_title_bg.gif) no-repeat 15px 0px;\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_light_focus_left_last{\n\tbackground:#f0fcfa url(images/CMT_row_title_bg_last.gif) no-repeat 15px 0px;\n\tpadding:5px 5px;\n\theight:32px;\n\t}\n.CTM_row_dark_focus{\n\tbackground:#eef4f3 url(images/document.gif) no-repeat 3px 4px;\n\tpadding:5px 0px 3px 35px;\n\theight:32px;\n\t}\n.CTM_row_light_focus{\n\tbackground:#f0fcfa url(images/document_out.gif) no-repeat 3px 4px;\n\tpadding:5px 0px 3px 35px;\n\theight:32px;\t\n\t}\n .CTM_row_dark td{\n \tborder-top:1px solid #d3d9d8;\n\tborder-bottom:1px solid #c0c5c4;\n\tpadding:5px 5px;\n\theight:38px;\n\t}\n.CTM_row_dark{\n\theight:35px;\n\tpadding:0 5px;\n\tletter-spacing:1.5px;\n\tline-height:150%;\n\tbackground:#eef4f3;\n\t}"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/css/title.css",
    "content": "#userInfo {\n\theight:35px;\n\tposition: absolute;\n\tright:20px;\n\ttop: -1px;\n\tpadding:8px 8px 0px 15px;\n\tcolor: #fff;\n\ttext-align: right;\t\t\n\tcursor:pointer;\n}\n\n.memo{\n\tbackground:url(../images/title/memo.gif) no-repeat;\n\tposition:absolute;\n\tright:129px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n.small_login{\n\tbackground:url(../images/title/small_login.gif) no-repeat;\n\tposition:absolute;\n\tright:69px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n.small_login_out{\n\tbackground:url(../images/title/login_out.gif) no-repeat;\n\tposition:absolute;\n\tright:10px;\n\ttop:55px;\n\tz-index:996;\n\twidth:56px;\n\theight:51px;\n}\n\n.top_logo {\n\tbackground:url(\"../images/login/logo.png\") no-repeat -2px 2px;\n    height:91px;\n    white-space:nowrap;\n    overflow:hiddle;\n}\n.headerBg {\n\tbackground:url(../images/title/title_bgs.jpg) no-repeat right top;\n    height:106px;\n    margin: 0px;\n}\n.titleDate{float:left;height:29px;width:200px;text-align:left;color:#fff; line-height:29px; font-size:12px;font-weight:normal;padding-left:30px;}\n#menuContent{ height:29px;left:0px;padding:0px 5px 0px 5px; font-size:12px;}\n#topmenu{ margin-top:1px;padding:6px 11px 5px 13px;color:white;height:29px;cursor:pointer; overflow:hiddle; }\n#tm_separator{ height:28px;width:2px;background:url(../images/title/tm_separator.jpg) no-repeat;}\n#prompt_div{\n\twidth:150px;\n\theight:50px;\n\tposition:absolute;\n\tright:18%;\n\ttop:35px;\n\tz-index:9999;\n}\n#leftKey{\n\tfloat:left;\n\twidth:16px;\n\tcursor: hand;\n\tpadding:2px 0px 0px 0px;\n}\n#mask{\n\theight: 100%;\n\toverflow: hidden; \t\n}\n#rightKey{\n\tpadding-top:5px;\n\twidth:16px;\n\tcursor: hand;\n\tz-index: 99999;\n\tfloat:left;\n\tpadding:2px 5px 0px 5px;\n}\n"
  },
  {
    "path": "Check Maven Webapp/target/Check/skin/default/js/toggle.js",
    "content": "$(document).ready(function(){\n   $(\".panel-title\").toggle(function(){\n     $(this).next(\".panel-content\").animate({height: 'toggle', opacity: 'toggle'}, \"slow\");\n   },function(){\n$(this).next(\".panel-content\").animate({height: 'toggle', opacity: 'toggle'}, \"slow\");\n   });\n});"
  },
  {
    "path": "Check Maven Webapp/target/classes/beans.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\t\t\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/mvc \n\t\t\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/context \n\t\t\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/aop \n\t\t\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\t\t\thttp://www.springframework.org/schema/tx \n\t\t\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\t\t\n\t<!-- 管理service和dao -->\n\t<context:component-scan base-package=\"edu.fjnu.online.service,edu.fjnu.online.dao\"/>\n\t<context:property-placeholder location=\"classpath:jdbc.properties\"/>\n\t\t\t\t\n\t<!-- 数据库链接信息 -->\t\t\n\t<bean id=\"dataSource\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n\t\t<property name=\"driverClass\" value=\"${jdbc.driverClassName}\"/>\n\t\t<property name=\"jdbcUrl\" value=\"${jdbc.url}\"/>\n\t\t<property name=\"user\" value=\"${jdbc.username}\"/>\n\t\t<property name=\"password\" value=\"${jdbc.password}\"/>\n\n\t\t<property name=\"maxPoolSize\" value=\"${c3p0.pool.size.max}\"/>\n\t\t<property name=\"minPoolSize\" value=\"${c3p0.pool.size.min}\" />\n\t\t<property name=\"initialPoolSize\" value=\"${c3p0.pool.size.ini}\"/>\n\t\t<property name=\"acquireIncrement\" value=\"${c3p0.pool.size.increment}\"/>\n\t</bean>\n\t\t\n\t<!-- sqlSessionFactory spring和myBatis整合 -->\n\t<bean id=\"sqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t\t<property name=\"configLocation\" value=\"classpath:sqlMapConfig.xml\"/>\n\t\t<property name=\"mapperLocations\" value=\"classpath:edu/fjnu/online/mapper/*.xml\"/>\n\t</bean>\n\t\n\t<!-- 事务管理 -->\t\n\t<bean id=\"txManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\">\n\t\t<property name=\"dataSource\" ref=\"dataSource\"/>\n\t</bean>\n\n\t<!-- 通知 -->\t\n\t<tx:advice id=\"txAdvice\" transaction-manager=\"txManager\">\n\t\t<tx:attributes>\n\t\t\t<tx:method name=\"find*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"get*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"view*\" read-only=\"true\" />\n\t\t\t<tx:method name=\"insert*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"update*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"delete*\" propagation=\"REQUIRED\" />\n\t\t\t<tx:method name=\"*\" propagation=\"REQUIRED\" /><!-- 防止漏网之鱼 -->\n\t\t</tx:attributes>\n\t</tx:advice>\n\n\t<aop:config>\n\t\t<!-- 切点 管理所有Service的方法 -->\n\t\t<aop:pointcut expression=\"execution(* edu.fjnu.online.service.*.*(..))\" id=\"transactionPointCut\"/>\n\t\t<!-- 增强，进行事务控制 Advisor -->\n\t\t<aop:advisor advice-ref=\"txAdvice\" pointcut-ref=\"transactionPointCut\"/>\n\t</aop:config>\n</beans>\t\t\t"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Course.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.CourseMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"courseRM\" type=\"edu.fjnu.online.domain.Course\">\n\t\t<id property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"courseName\" column=\"coursename\"/>\n\t\t<result property=\"courseState\" column=\"coursestate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tinsert into t_course\n\t\t(coursename,coursestate)\n\t\tvalues\n\t\t(#{courseName},#{courseState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Course\">\n\t\tupdate t_course\n\t\t<set>\n\t\t\t<if test=\"courseName!=null\">\n\t\t\t\tcoursename=#{courseName},\n\t\t\t</if>\n\t\t\t<if test=\"courseState!=null\">\n\t\t\t\tcoursestate=#{courseState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere courseid=#{courseId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Course\" resultMap=\"courseRM\">\n\t\tselect * from t_course\n\t\twhere courseid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_course\n\t\twhere courseid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/ErrorBook.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.ErrorBookMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"errorRM\" type=\"edu.fjnu.online.domain.ErrorBook\">\n\t\t<id property=\"bookId\" column=\"bookid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"userAnswer\" column=\"uanswer\"/>\n\t\t<association property=\"question\" javaType=\"edu.fjnu.online.domain.Question\">\n\t\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t\t</association>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tinsert into t_errorbook\n\t\t(userid,courseid,gradeid,uanswer,questionid,typeid)\n\t\tvalues\n\t\t(#{userId},#{courseId},#{gradeId},#{userAnswer},#{question.questionId},#{question.typeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.ErrorBook\">\n\t\tupdate t_errorbook\n\t\t<set>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuanswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere bookid=#{bookId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.ErrorBook\" resultMap=\"errorRM\">\n\t\tselect * from t_errorbook\n\t\twhere bookid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_errorbook\n\t\twhere bookid=#{id}\n\t</delete>\n\t\n\t<!-- \n\t\tquesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid\n\t -->\n\t<select id=\"getBookInfo\"  resultMap=\"errorRM\" parameterType=\"map\">\n\t\tselect * from t_question a,t_errorbook b\n\t\twhere a.questionid = b.questionid\n\t\tand b.userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Factory.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.FactoryMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"factoryRM\" type=\"edu.fjnu.online.domain.Factory\">\n\t\t<id property=\"id\" column=\"FACTORY_ID\"/>\n\t\t<result property=\"fullName\" column=\"FULL_NAME\"/>\n\t\t<result property=\"factoryName\" column=\"FACTORY_NAME\"/>\n\t\t<result property=\"contractor\" column=\"CONTRACTOR\"/>\n\t\t<result property=\"phone\" column=\"PHONE\"/>\n\t\t<result property=\"mobile\" column=\"MOBILE\"/>\n\t\t<result property=\"fax\" column=\"FAX\"/>\n\t\t<result property=\"cnote\" column=\"CNOTE\"/>\n\t\t<result property=\"orderNo\" column=\"ORDER_NO\"/>\n\t\t<result property=\"state\" column=\"STATE\"/>\n\t</resultMap>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"edu.fjnu.online.domain.Factory\" resultMap=\"factoryRM\">\n\t\tselect * from factory_c\n\t\twhere 1=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Grade.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.GradeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"gradeRM\" type=\"edu.fjnu.online.domain.Grade\">\n\t\t<id property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"gradeName\" column=\"gradename\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tinsert into t_grade\n\t\t(gradename,courseid)\n\t\tvalues\n\t\t(#{gradeName},#{courseId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Grade\">\n\t\tupdate t_grade\n\t\t<set>\n\t\t\t<if test=\"gradeName!=null\">\n\t\t\t\tgradename=#{gradeName},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere gradeid=#{gradeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Grade\" resultMap=\"gradeRM\">\n\t\tselect * from t_grade\n\t\twhere gradeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_grade\n\t\twhere gradeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Paper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.PaperMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"paperRM\" type=\"edu.fjnu.online.domain.Paper\">\n\t\t<id property=\"paperId\" column=\"paperid\"/>\n\t\t<result property=\"paperName\" column=\"papername\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"beginTime\" column=\"begintime\"/>\n\t\t<result property=\"endTime\" column=\"endtime\"/>\n\t\t<result property=\"allowTime\" column=\"allowtime\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"paperState\" column=\"paperstate\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tinsert into t_paper\n\t\t(paperid,papername,courseid,gradeid,userid,questionid,begintime,endtime,allowtime,score,paperstate)\n\t\tvalues\n\t\t(#{paperId},#{paperName},#{courseId},#{gradeId},#{userId},#{questionId},#{beginTime},#{endTime},#{allowTime},#{score},#{paperState})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Paper\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"userId!=null\">\n\t\t\t\tuserid=#{userId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperstate!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperstate='0'\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere paperid=#{id} \n\t\tand paperstate='0'\n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_paper\n\t\twhere paperid=#{id}\n\t</delete>\n\t\n\t<!-- 查询学生已经考试过的试卷 -->\n\t<select id=\"getUserPaperById\" parameterType=\"edu.fjnu.online.domain.Paper\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{id} \n\t\tand paperstate = '2'\n\t</select>\n\t<select id=\"getPaperDetail\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper\n\t\twhere userid=#{userId}\n\t\tand paperid=#{paperId}\n\t</select>\n\t\n\t<update id=\"updateUserPaper\" parameterType=\"map\">\n\t\tupdate t_paper\n\t\t<set>\n\t\t\t<if test=\"paperName!=null\">\n\t\t\t\tpapername=#{paperName},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t\t<if test=\"questionId!=null\">\n\t\t\t\tquestionid=#{questionId},\n\t\t\t</if>\n\t\t\t<if test=\"beginTime!=null\">\n\t\t\t\tbegintime=#{beginTime},\n\t\t\t</if>\n\t\t\t<if test=\"endTime!=null\">\n\t\t\t\tendtime=#{endTime},\n\t\t\t</if>\n\t\t\t<if test=\"allowTime!=null\">\n\t\t\t\tallowtime=#{allowTime},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"paperState!=null\">\n\t\t\t\tpaperstate=#{paperState},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere paperid=#{paperId}\n\t\t\tand userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"getUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate='0' \n\t\t\tand paperid not in(select paperid from t_paper where userid=#{userId})\n\t</select>\n\t\n\t<!-- 查询未考试的试卷 -->\n\t<select id=\"qryUndoPaper\" parameterType=\"map\" resultMap=\"paperRM\">\n\t\tselect * from t_paper where paperstate = '1' and userid=#{userId}\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Question.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.QuestionMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"questionRM\" type=\"edu.fjnu.online.domain.Question\">\n\t\t<id property=\"questionId\" column=\"questionid\"/>\n\t\t<result property=\"quesName\" column=\"quesname\"/>\n\t\t<result property=\"optionA\" column=\"optiona\"/>\n\t\t<result property=\"optionB\" column=\"optionb\"/>\n\t\t<result property=\"optionC\" column=\"optionc\"/>\n\t\t<result property=\"optionD\" column=\"optiond\"/>\n\t\t<result property=\"answer\" column=\"answer\"/>\n\t\t<result property=\"userAnswer\" column=\"useranswer\"/>\n\t\t<result property=\"courseId\" column=\"courseid\"/>\n\t\t<result property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"gradeId\" column=\"gradeid\"/>\n\t\t<result property=\"difficulty\" column=\"difficulty\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t\t<result property=\"answerDetail\" column=\"answerdetail\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tinsert into t_question\n\t\t(quesName,optiona,optionb,optionc,optiond,answer,useranswer,courseid,typeid,difficulty,remark,answerdetail,gradeid)\n\t\tvalues\n\t\t(#{quesName},#{optionA},#{optionB},#{optionC},#{optionD},#{answer},#{userAnswer},#{courseId},#{typeId},#{difficulty},#{remark},#{answerDetail},#{gradeId})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Question\">\n\t\tupdate t_question\n\t\t<set>\n\t\t\t<if test=\"quesName!=null\">\n\t\t\t\tquesname=#{quesName},\n\t\t\t</if>\n\t\t\t<if test=\"optionA!=null\">\n\t\t\t\toptiona=#{optionA},\n\t\t\t</if>\n\t\t\t<if test=\"optionB!=null\">\n\t\t\t\toptionb=#{optionB},\n\t\t\t</if>\n\t\t\t<if test=\"optionC!=null\">\n\t\t\t\toptionc=#{optionC},\n\t\t\t</if>\n\t\t\t<if test=\"optionD!=null\">\n\t\t\t\toptiond=#{optionD},\n\t\t\t</if>\n\t\t\t<if test=\"answer!=null\">\n\t\t\t\tanswer=#{answer},\n\t\t\t</if>\n\t\t\t<if test=\"userAnswer!=null\">\n\t\t\t\tuseranswer=#{userAnswer},\n\t\t\t</if>\n\t\t\t<if test=\"typeId!=null\">\n\t\t\t\ttypeid=#{typeId},\n\t\t\t</if>\n\t\t\t<if test=\"gradeId!=null\">\n\t\t\t\tgradeid=#{gradeId},\n\t\t\t</if>\n\t\t\t<if test=\"difficulty!=null\">\n\t\t\t\tdifficulty=#{difficulty},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t\t<if test=\"answerDetail!=null\">\n\t\t\t\tanswerdetail=#{answerDetail},\n\t\t\t</if>\n\t\t\t<if test=\"courseId!=null\">\n\t\t\t\tcourseid=#{courseId},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere questionid=#{questionId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Question\" resultMap=\"questionRM\">\n\t\tselect * from t_question\n\t\twhere questionid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_question\n\t\twhere questionid=#{id}\n\t</delete>\n\t\n\t<!-- 随机生成相应数量的题目 -->\n\t<select id=\"createPaper\" parameterType=\"map\" resultMap=\"questionRM\">\n\t\tselect * from t_question \n\t\t\twhere gradeid=#{gradeId}\n\t\t\tand typeid=#{typeId}\n\t\t\tand courseid=#{courseId}\n\t\t\tORDER BY RAND() LIMIT #{num} \n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/Type.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.TypeMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"typeRM\" type=\"edu.fjnu.online.domain.Type\">\n\t\t<id property=\"typeId\" column=\"typeid\"/>\n\t\t<result property=\"typeName\" column=\"typename\"/>\n\t\t<result property=\"score\" column=\"score\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tinsert into t_type\n\t\t(typename,score,remark)\n\t\tvalues\n\t\t(#{typeName},#{score},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.Type\">\n\t\tupdate t_type\n\t\t<set>\n\t\t\t<if test=\"typeName!=null\">\n\t\t\t\ttypename=#{typeName},\n\t\t\t</if>\n\t\t\t<if test=\"score!=null\">\n\t\t\t\tscore=#{score},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere typeid=#{typeId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"int\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere 1=1\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.Type\" resultMap=\"typeRM\">\n\t\tselect * from t_type\n\t\twhere typeid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"int\">\n\t\tdelete from t_type\n\t\twhere typeid=#{id}\n\t</delete>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/edu/fjnu/online/mapper/User.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"edu.fjnu.online.mapper.UserMapper\">\n\n\t<!-- 数据库表映射 -->\n\t<resultMap id=\"userRM\" type=\"edu.fjnu.online.domain.User\">\n\t\t<id property=\"userId\" column=\"userid\"/>\n\t\t<result property=\"userName\" column=\"username\"/>\n\t\t<result property=\"userPwd\" column=\"userpwd\"/>\n\t\t<result property=\"grade\" column=\"grade\"/>\n\t\t<result property=\"userType\" column=\"usertype\"/>\n\t\t<result property=\"userState\" column=\"userstate\"/>\n\t\t<result property=\"email\" column=\"email\"/>\n\t\t<result property=\"telephone\" column=\"telephone\"/>\n\t\t<result property=\"address\" column=\"address\"/>\n\t\t<result property=\"remark\" column=\"remark\"/>\n\t</resultMap>\n\t\n\t<!-- 新增 -->\n\t<insert id=\"insert\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tinsert into t_user\n\t\t(userid,username,userpwd,grade,usertype,userstate,email,telephone,address,remark)\n\t\tvalues\n\t\t(#{userId},#{userName},#{userPwd},#{grade},#{userType},'0',#{email},#{telephone},#{address},#{remark})\n\t</insert>\n\t\n\t<!-- 修改 -->\n\t<update id=\"update\" parameterType=\"edu.fjnu.online.domain.User\">\n\t\tupdate t_user\n\t\t<set>\n\t\t\t<if test=\"userName!=null\">\n\t\t\t\tusername=#{userName},\n\t\t\t</if>\n\t\t\t<if test=\"userPwd!=null\">\n\t\t\t\tuserpwd=#{userPwd},\n\t\t\t</if>\n\t\t\t<if test=\"userType!=null\">\n\t\t\t\tusertype=#{userType},\n\t\t\t</if>\n\t\t\t<if test=\"userState!=null\">\n\t\t\t\tuserstate=#{userState},\n\t\t\t</if>\n\t\t\t<if test=\"email!=null\">\n\t\t\t\temail=#{email},\n\t\t\t</if>\n\t\t\t<if test=\"telephone!=null\">\n\t\t\t\ttelephone=#{telephone},\n\t\t\t</if>\n\t\t\t<if test=\"address!=null\">\n\t\t\t\taddress=#{address},\n\t\t\t</if>\n\t\t\t<if test=\"remark!=null\">\n\t\t\t\tremark=#{remark},\n\t\t\t</if>\n\t\t</set>\n\t\t\twhere userid=#{userId}\n\t</update>\n\t\n\t<!-- 查询所有记录 -->\n\t<select id=\"find\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere 1=1\n\t\torder by userstate\n\t</select>\n\t\n\t<!-- 查询所有待审核记录 -->\n\t<select id=\"findPending\" parameterType=\"string\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userstate=0\n\t</select>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"get\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{id} \n\t</select>\n\t\n\t<!-- 删除一条记录 -->\n\t<delete id=\"delete\" parameterType=\"string\">\n\t\tdelete from t_user\n\t\twhere userid=#{id}\n\t</delete>\n\t\n\t<!-- 查询一个录 -->\n\t<select id=\"getStu\" parameterType=\"edu.fjnu.online.domain.User\" resultMap=\"userRM\">\n\t\tselect * from t_user\n\t\twhere userid=#{userId}\n\t\tand userstate=1\n\t</select>\n</mapper>"
  },
  {
    "path": "Check Maven Webapp/target/classes/jdbc.properties",
    "content": "jdbc.driverClassName=com.mysql.jdbc.Driver\njdbc.url=jdbc:mysql://localhost:3306/onlinetest?characterEncoding=utf-8\njdbc.username=root\njdbc.password=123456\n\nc3p0.pool.size.max=20\nc3p0.pool.size.min=5\nc3p0.pool.size.ini=3\nc3p0.pool.size.increment=2\n"
  },
  {
    "path": "Check Maven Webapp/target/classes/springmvc-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:aop=\"http://www.springframework.org/schema/aop\"\n\txmlns:tx=\"http://www.springframework.org/schema/tx\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans \n\thttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd \n\thttp://www.springframework.org/schema/mvc \n\thttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd \n\thttp://www.springframework.org/schema/context \n\thttp://www.springframework.org/schema/context/spring-context-3.0.xsd \n\thttp://www.springframework.org/schema/aop \n\thttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd \n\thttp://www.springframework.org/schema/tx \n\thttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd \">\n\t\n\t<mvc:annotation-driven/>\n\t\n\t<!-- 扫描controller -->\n\t<context:component-scan base-package=\"edu.fjnu.online.controller\"/>\n\t<!-- 内部资源视图解析器 -->\n\t<bean id=\"jspInternalResourceViewResolver\" class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n\t\t<property name=\"prefix\" value=\"/WEB-INF/pages/\"/>\n\t\t<property name=\"suffix\" value=\"\"/>\n\t</bean>\n</beans>\t"
  },
  {
    "path": "Check Maven Webapp/target/classes/sqlMapConfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE configuration\n\tPUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n\t\"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n<configuration>\n\t<plugins>\n\t\t<!-- com.github.pagehelper为PageHelper类所在包名 -->\n\t\t<plugin interceptor=\"com.github.pagehelper.PageHelper\">\n\t\t\t<property name=\"dialect\" value=\"mysql\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，会将RowBounds第一个参数offset当成pageNum页码使用 -->\n\t\t\t<!-- 和startPage中的pageNum效果一样 -->\n\t\t\t<property name=\"offsetAsPageNum\" value=\"true\" />\n\t\t\t<!-- 该参数默认为false -->\n\t\t\t<!-- 设置为true时，使用RowBounds分页会进行count查询 -->\n\t\t\t<property name=\"rowBoundsWithCount\" value=\"true\" />\n\t\t\t<!-- 设置为true时，如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->\n\t\t\t<!-- （相当于没有执行分页查询，但是返回结果仍然是Page类型） -->\n\t\t\t<property name=\"pageSizeZero\" value=\"true\" />\n\t\t\t<!-- 3.3.0版本可用 - 分页参数合理化，默认false禁用 -->\n\t\t\t<!-- 启用合理化时，如果pageNum<1会查询第一页，如果pageNum>pages会查询最后一页 -->\n\t\t\t<!-- 禁用合理化时，如果pageNum<1或pageNum>pages会返回空数据 -->\n\t\t\t<property name=\"reasonable\" value=\"false\" />\n\t\t\t<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->\n\t\t\t<!-- 增加了一个`params`参数来配置参数映射，用于从Map或ServletRequest中取值 -->\n\t\t\t<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->\n\t\t\t<!-- 不理解该含义的前提下，不要随便复制该配置 -->\n\t\t\t<property name=\"params\" value=\"pageNum=start;pageSize=limit;\" />\n\t\t\t<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->\n\t\t\t<property name=\"returnPageInfo\" value=\"check\" />\n\t\t</plugin>\n\t</plugins>\n\n</configuration>\t"
  },
  {
    "path": "Check Maven Webapp/target/m2e-jee/web-resources/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nBuilt-By: hspcadmin\nBuild-Jdk: 1.7.0_45\nCreated-By: Maven Integration for Eclipse\n\n"
  },
  {
    "path": "Check Maven Webapp/target/m2e-jee/web-resources/META-INF/maven/edu.fjnu.online/Check/pom.properties",
    "content": "#Generated by Maven Integration for Eclipse\n#Mon Apr 24 19:22:45 GMT+08:00 2017\nversion=0.0.1-SNAPSHOT\ngroupId=edu.fjnu.online\nm2e.projectName=Check Maven Webapp\nm2e.projectLocation=D\\:\\\\threadTestWorspace\\\\Check Maven Webapp\nartifactId=Check\n"
  },
  {
    "path": "Check Maven Webapp/target/m2e-jee/web-resources/META-INF/maven/edu.fjnu.online/Check/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<groupId>edu.fjnu.online</groupId>\n\t<artifactId>Check</artifactId>\n\t<packaging>war</packaging>\n\t<version>0.0.1-SNAPSHOT</version>\n\t<name>Check Maven Webapp</name>\n\t<url>http://maven.apache.org</url>\n\n\t<properties>\n\t\t<org.springframework.version>3.2.2.RELEASE</org.springframework.version>\n\t</properties>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-webmvc</artifactId>\n\t\t\t<version>${org.springframework.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-orm</artifactId>\n\t\t\t<version>${org.springframework.version}</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.aspectj</groupId>\n\t\t\t<artifactId>com.springsource.org.aspectj.weaver</artifactId>\n\t\t\t<version>1.6.8.RELEASE</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis</artifactId>\n\t\t\t<version>3.2.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis-spring</artifactId>\n\t\t\t<version>1.2.0</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>c3p0</groupId>\n\t\t\t<artifactId>c3p0</artifactId>\n\t\t\t<version>0.9.1.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>mysql</groupId>\n\t\t\t<artifactId>mysql-connector-java</artifactId>\n\t\t\t<version>5.1.10</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>log4j</groupId>\n\t\t\t<artifactId>log4j</artifactId>\n\t\t\t<version>1.2.13</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.apache.poi</groupId>\n\t\t\t<artifactId>poi</artifactId>\n\t\t\t<version>3.9</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.apache.poi</groupId>\n\t\t\t<artifactId>poi-ooxml</artifactId>\n\t\t\t<version>3.9</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>jfree</groupId>\n\t\t\t<artifactId>jfreechart</artifactId>\n\t\t\t<version>1.0.13</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.9</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>commons-fileupload</groupId>\n\t\t\t<artifactId>commons-fileupload</artifactId>\n\t\t\t<version>1.2.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>commons-io</groupId>\n\t\t\t<artifactId>commons-io</artifactId>\n\t\t\t<version>2.0.1</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>javax.servlet.jsp.jstl</groupId>\n\t\t\t<artifactId>jstl-api</artifactId>\n\t\t\t<version>1.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.glassfish.web</groupId>\n\t\t\t<artifactId>jstl-impl</artifactId>\n\t\t\t<version>1.2</version>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>jexcelapi</groupId>\n\t\t\t<artifactId>jxl</artifactId>\n\t\t\t<version>2.4.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.codehaus.jackson</groupId>\n\t\t\t<artifactId>jackson-mapper-asl</artifactId>\n\t\t\t<version>1.9.11</version>\n\t\t</dependency>\n\t\t<!-- mybatis分页插件依赖 -->\n\t\t<dependency>\n\t\t\t<groupId>com.github.pagehelper</groupId>\n\t\t\t<artifactId>pagehelper</artifactId>\n\t\t\t<version>4.0.0</version>\n\t\t</dependency>\n\n\t</dependencies>\n\n\t<build>\n\t\t<finalName>Check</finalName>\n\t</build>\n</project>\n"
  },
  {
    "path": "Check Maven Webapp/target/maven-archiver/pom.properties",
    "content": "#Generated by Maven\n#Sat Apr 01 19:14:35 GMT+08:00 2017\nversion=0.0.1-SNAPSHOT\ngroupId=edu.fjnu.online\nartifactId=Check\n"
  },
  {
    "path": "Check Maven Webapp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
    "content": "edu\\fjnu\\online\\domain\\Question.class\nedu\\fjnu\\online\\common\\springdao\\SQLDAO.class\nedu\\fjnu\\online\\dao\\impl\\ErrorBookDaoImpl.class\nedu\\fjnu\\online\\service\\CourseService.class\nedu\\fjnu\\online\\dao\\impl\\PaperDaoImpl.class\nedu\\fjnu\\online\\dao\\CourseDao.class\nedu\\fjnu\\online\\controller\\admin\\TypeController.class\nedu\\fjnu\\online\\service\\impl\\ErrorBookServiceImpl.class\nedu\\fjnu\\online\\domain\\Paper.class\nedu\\fjnu\\online\\service\\impl\\PaperServiceImpl.class\nedu\\fjnu\\online\\util\\UtilFuns.class\nedu\\fjnu\\online\\dao\\impl\\CourseDaoImpl.class\nedu\\fjnu\\online\\util\\MD5Util.class\nedu\\fjnu\\online\\dao\\impl\\QuestionDaoImpl.class\nedu\\fjnu\\online\\domain\\Factory.class\nedu\\fjnu\\online\\controller\\admin\\QuestionController.class\nedu\\fjnu\\online\\controller\\admin\\CourseController.class\nedu\\fjnu\\online\\dao\\GradeDao.class\nedu\\fjnu\\online\\service\\impl\\QuestionServiceImpl.class\nedu\\fjnu\\online\\service\\TypeService.class\nedu\\fjnu\\online\\domain\\Course.class\nedu\\fjnu\\online\\dao\\PaperDao.class\nedu\\fjnu\\online\\util\\DownloadUtil.class\nedu\\fjnu\\online\\dao\\impl\\TypeDaoImpl.class\nedu\\fjnu\\online\\util\\DateConverter.class\nedu\\fjnu\\online\\service\\UserService.class\nedu\\fjnu\\online\\service\\impl\\GradeServiceImpl.class\nedu\\fjnu\\online\\domain\\Type.class\nedu\\fjnu\\online\\util\\Arith.class\nedu\\fjnu\\online\\service\\impl\\TypeServiceImpl.class\nedu\\fjnu\\online\\controller\\admin\\PaperController.class\nedu\\fjnu\\online\\dao\\impl\\GradeDaoImpl.class\nedu\\fjnu\\online\\service\\QuestionService.class\nedu\\fjnu\\online\\dao\\impl\\BaseDaoImpl.class\nedu\\fjnu\\online\\pagination\\PageInterceptor$ReflectUtil.class\nedu\\fjnu\\online\\controller\\BaseController.class\nedu\\fjnu\\online\\util\\TextSimilarityUtil.class\nedu\\fjnu\\online\\domain\\ErrorBook.class\nedu\\fjnu\\online\\service\\GradeService.class\nedu\\fjnu\\online\\dao\\ErrorBookDao.class\nedu\\fjnu\\online\\service\\impl\\CourseServiceImpl.class\nedu\\fjnu\\online\\service\\impl\\UserServiceImpl.class\nedu\\fjnu\\online\\dao\\TypeDao.class\nedu\\fjnu\\online\\controller\\admin\\GradeController.class\nedu\\fjnu\\online\\util\\FormatStyle.class\nedu\\fjnu\\online\\dao\\BaseDao.class\nedu\\fjnu\\online\\dao\\impl\\UserDaoImpl.class\nedu\\fjnu\\online\\controller\\user\\StuController.class\nedu\\fjnu\\online\\pagination\\PageInterceptor.class\nedu\\fjnu\\online\\dao\\QuestionDao.class\nedu\\fjnu\\online\\domain\\User.class\nedu\\fjnu\\online\\domain\\MsgItem.class\nedu\\fjnu\\online\\util\\file\\FileUtil.class\nedu\\fjnu\\online\\dao\\UserDao.class\nedu\\fjnu\\online\\common\\springdao\\AppContext.class\nedu\\fjnu\\online\\util\\MybatisUtil.class\nedu\\fjnu\\online\\pagination\\Page.class\nedu\\fjnu\\online\\controller\\user\\PaperMgController.class\nedu\\fjnu\\online\\service\\PaperService.class\nedu\\fjnu\\online\\controller\\admin\\UserController.class\nedu\\fjnu\\online\\service\\ErrorBookService.class\nedu\\fjnu\\online\\domain\\Grade.class\nedu\\fjnu\\online\\controller\\user\\ErrorBookController.class\n"
  },
  {
    "path": "Check Maven Webapp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
    "content": "D:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\PaperDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Grade.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\FormatStyle.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\CourseDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\CourseController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\common\\springdao\\SQLDAO.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\PaperDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Course.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\TypeService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Type.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\DateConverter.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\BaseDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Paper.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\GradeDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\UserService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\user\\StuController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\MD5Util.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\ErrorBookDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\user\\PaperMgController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\PaperServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\QuestionDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\common\\springdao\\AppContext.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\DownloadUtil.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Question.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\BaseController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\MybatisUtil.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\QuestionDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\TextSimilarityUtil.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\GradeService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\UtilFuns.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\GradeDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\BaseDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\UserController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\CourseDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\PaperController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\TypeServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\ErrorBookService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\user\\ErrorBookController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\PaperService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\GradeController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\pagination\\PageInterceptor.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\Arith.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\QuestionService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\pagination\\Page.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\UserServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\User.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\Factory.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\CourseService.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\GradeServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\CourseServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\UserDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\ErrorBookDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\MsgItem.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\domain\\ErrorBook.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\impl\\TypeDaoImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\util\\file\\FileUtil.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\QuestionServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\UserDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\dao\\TypeDao.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\service\\impl\\ErrorBookServiceImpl.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\QuestionController.java\nD:\\threadTestWorspace\\Check Maven Webapp\\src\\main\\java\\edu\\fjnu\\online\\controller\\admin\\TypeController.java\n"
  },
  {
    "path": "Check Maven Webapp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst",
    "content": ""
  }
]