commit 13acafd43de9b6c01d77c4295c626ed2ee072097 Author: zhangdongxu Date: Tue Dec 19 14:55:52 2017 +0800 上传代码 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..9768e9d --- /dev/null +++ b/.classpath @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.project b/.project new file mode 100644 index 0000000..7e4d140 --- /dev/null +++ b/.project @@ -0,0 +1,48 @@ + + + gk + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.zeroturnaround.eclipse.rebelXmlBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + org.zeroturnaround.eclipse.jrebelNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..585c967 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4531ab9 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources/b.txt=UTF-8 +encoding//src/main/resources/jdbc.properties=UTF-8 +encoding//src/main/resources/log4j.properties=UTF-8 +encoding//src/main/resources/matt.properties=UTF-8 +encoding//src/main/resources/nis.properties=UTF-8 +encoding//src/main/resources/table.properties=UTF-8 +encoding//src/main/webapp/WEB-INF/include/header.jsp=UTF-8 +encoding//src/main/webapp/WEB-INF/tlds/fns.tld=UTF-8 +encoding//src/main/webapp/WEB-INF/views/letter/process/errorView.jsp=UTF-8 +encoding//src/main/webapp/static/common/jeesite.css=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..6b5aebc --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..e62df70 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 0000000..b01fdb7 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..7e0b0a6 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml.bak b/.settings/org.eclipse.wst.common.project.facet.core.xml.bak new file mode 100644 index 0000000..45fbdef --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml.bak @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/.settings/org.eclipse.wst.ws.service.policy.prefs b/.settings/org.eclipse.wst.ws.service.policy.prefs new file mode 100644 index 0000000..6da2f3d --- /dev/null +++ b/.settings/org.eclipse.wst.ws.service.policy.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.wst.ws.service.policy.projectEnabled=false diff --git a/README.md b/README.md new file mode 100644 index 0000000..0104417 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +maat rest service for web \ No newline at end of file diff --git a/lib/XmlSchema-1.4.3.jar b/lib/XmlSchema-1.4.3.jar new file mode 100644 index 0000000..656eced Binary files /dev/null and b/lib/XmlSchema-1.4.3.jar differ diff --git a/lib/activation-1.1.jar b/lib/activation-1.1.jar new file mode 100644 index 0000000..53f82a1 Binary files /dev/null and b/lib/activation-1.1.jar differ diff --git a/lib/ant-1.7.0.jar b/lib/ant-1.7.0.jar new file mode 100644 index 0000000..0a56a58 Binary files /dev/null and b/lib/ant-1.7.0.jar differ diff --git a/lib/ant-launcher-1.7.0.jar b/lib/ant-launcher-1.7.0.jar new file mode 100644 index 0000000..12a1e78 Binary files /dev/null and b/lib/ant-launcher-1.7.0.jar differ diff --git a/lib/aopalliance-1.0.jar b/lib/aopalliance-1.0.jar new file mode 100644 index 0000000..578b1a0 Binary files /dev/null and b/lib/aopalliance-1.0.jar differ diff --git a/lib/apache-ant-zip-2.3.jar b/lib/apache-ant-zip-2.3.jar new file mode 100644 index 0000000..61dbfb3 Binary files /dev/null and b/lib/apache-ant-zip-2.3.jar differ diff --git a/lib/asm-5.0.4.jar b/lib/asm-5.0.4.jar new file mode 100644 index 0000000..cdb283d Binary files /dev/null and b/lib/asm-5.0.4.jar differ diff --git a/lib/aspectjweaver-1.8.6.jar b/lib/aspectjweaver-1.8.6.jar new file mode 100644 index 0000000..98e4bfe Binary files /dev/null and b/lib/aspectjweaver-1.8.6.jar differ diff --git a/lib/axiom-api-1.2.8.jar b/lib/axiom-api-1.2.8.jar new file mode 100644 index 0000000..81c07e3 Binary files /dev/null and b/lib/axiom-api-1.2.8.jar differ diff --git a/lib/axiom-dom-1.2.8.jar b/lib/axiom-dom-1.2.8.jar new file mode 100644 index 0000000..a7b4257 Binary files /dev/null and b/lib/axiom-dom-1.2.8.jar differ diff --git a/lib/axiom-impl-1.2.8.jar b/lib/axiom-impl-1.2.8.jar new file mode 100644 index 0000000..d604476 Binary files /dev/null and b/lib/axiom-impl-1.2.8.jar differ diff --git a/lib/axis2-1.5.1.pom b/lib/axis2-1.5.1.pom new file mode 100644 index 0000000..d7e77ce --- /dev/null +++ b/lib/axis2-1.5.1.pom @@ -0,0 +1,258 @@ + + + + + + + org.apache + apache + 3 + + 4.0.0 + org.apache.axis2 + axis2 + 1.5.1 + pom + Apache Axis2 - Root + + modules/adb + modules/adb-codegen + modules/addressing + modules/codegen + modules/fastinfoset + modules/integration + modules/java2wsdl + modules/jibx + modules/json + modules/kernel + modules/mex + modules/mtompolicy + modules/mtompolicy-mar + modules/parent + modules/ping + modules/samples/version + modules/soapmonitor + modules/spring + modules/tool/axis2-aar-maven-plugin + modules/tool/axis2-ant-plugin + modules/tool/axis2-eclipse-codegen-plugin + modules/tool/axis2-eclipse-service-plugin + modules/tool/axis2-idea-plugin + modules/tool/axis2-java2wsdl-maven-plugin + modules/tool/axis2-mar-maven-plugin + modules/tool/axis2-wsdl2code-maven-plugin + modules/webapp + modules/xmlbeans + modules/samples + modules/scripting + modules/jaxbri + modules/metadata + modules/saaj + modules/jaxws + modules/jaxws-mar + modules/jaxws-integration + modules/clustering + modules/corba + modules/osgi + modules/transport/local + modules/transport/http + + + + plugins + + modules/tool/axis2-aar-maven-plugin + modules/tool/axis2-mar-maven-plugin + + + + transport + + + ../transport + + + + ../transport/modules/parent + ../transport/modules/base + ../transport/modules/tcp + ../transport/modules/xmpp + ../transport/modules/mail + ../transport/modules/jms + + + + release + + + release + + + + modules/documentation + modules/distribution + + + + java15 + + 1.5 + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + axis2-jar + package + + + + + + + + + + + + + + + + + run + + + + + + + + + java16 + + 1.6 + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + axis2-jar + package + + + + + + + + + + + + + + + + + run + + + + + + + + + + continuum + http://vmbuild.apache.org/continuum + + + +
axis2-cvs@ws.apache.org
+
+
+
+
+ + + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + + + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + + http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/ + + + + apache-repo + Maven Central Repository + + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository + + + + apache-snapshots + Apache Development Repository + scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository + false + + + + + + maven-clean-plugin + + false + + + + org.codehaus.mojo + build-helper-maven-plugin + + + axis2-jar-package + package + + attach-artifact + + + + + target/lib/axis2-${pom.version}.jar + jar + + + + + + + + +
diff --git a/lib/axis2-adb-1.5.1.jar b/lib/axis2-adb-1.5.1.jar new file mode 100644 index 0000000..5f5d1ec Binary files /dev/null and b/lib/axis2-adb-1.5.1.jar differ diff --git a/lib/axis2-kernel-1.5.1.jar b/lib/axis2-kernel-1.5.1.jar new file mode 100644 index 0000000..13c4c02 Binary files /dev/null and b/lib/axis2-kernel-1.5.1.jar differ diff --git a/lib/axis2-transport-http-1.5.2.jar b/lib/axis2-transport-http-1.5.2.jar new file mode 100644 index 0000000..07b72e8 Binary files /dev/null and b/lib/axis2-transport-http-1.5.2.jar differ diff --git a/lib/axis2-transport-local-1.5.4.jar b/lib/axis2-transport-local-1.5.4.jar new file mode 100644 index 0000000..916f7eb Binary files /dev/null and b/lib/axis2-transport-local-1.5.4.jar differ diff --git a/lib/bonecp-0.8.0.RELEASE.jar b/lib/bonecp-0.8.0.RELEASE.jar new file mode 100644 index 0000000..d47104f Binary files /dev/null and b/lib/bonecp-0.8.0.RELEASE.jar differ diff --git a/lib/cas-client-core-3.2.1.jar b/lib/cas-client-core-3.2.1.jar new file mode 100644 index 0000000..8fc3f3f Binary files /dev/null and b/lib/cas-client-core-3.2.1.jar differ diff --git a/lib/ckfinder-2.3.jar b/lib/ckfinder-2.3.jar new file mode 100644 index 0000000..4c2bf84 Binary files /dev/null and b/lib/ckfinder-2.3.jar differ diff --git a/lib/ckfinderplugin-fileeditor-2.3.jar b/lib/ckfinderplugin-fileeditor-2.3.jar new file mode 100644 index 0000000..7dfa908 Binary files /dev/null and b/lib/ckfinderplugin-fileeditor-2.3.jar differ diff --git a/lib/ckfinderplugin-imageresize-2.3.jar b/lib/ckfinderplugin-imageresize-2.3.jar new file mode 100644 index 0000000..526f8ff Binary files /dev/null and b/lib/ckfinderplugin-imageresize-2.3.jar differ diff --git a/lib/commons-beanutils-1.8.3.jar b/lib/commons-beanutils-1.8.3.jar new file mode 100644 index 0000000..218510b Binary files /dev/null and b/lib/commons-beanutils-1.8.3.jar differ diff --git a/lib/commons-codec-1.10.jar b/lib/commons-codec-1.10.jar new file mode 100644 index 0000000..1d7417c Binary files /dev/null and b/lib/commons-codec-1.10.jar differ diff --git a/lib/commons-collections-3.2.1.jar b/lib/commons-collections-3.2.1.jar new file mode 100644 index 0000000..c35fa1f Binary files /dev/null and b/lib/commons-collections-3.2.1.jar differ diff --git a/lib/commons-fileupload-1.3.1.jar b/lib/commons-fileupload-1.3.1.jar new file mode 100644 index 0000000..af0cda2 Binary files /dev/null and b/lib/commons-fileupload-1.3.1.jar differ diff --git a/lib/commons-httpclient-3.1.jar b/lib/commons-httpclient-3.1.jar new file mode 100644 index 0000000..7c59774 Binary files /dev/null and b/lib/commons-httpclient-3.1.jar differ diff --git a/lib/commons-io-2.2.jar b/lib/commons-io-2.2.jar new file mode 100644 index 0000000..84ca565 Binary files /dev/null and b/lib/commons-io-2.2.jar differ diff --git a/lib/commons-lang-2.5.jar b/lib/commons-lang-2.5.jar new file mode 100644 index 0000000..ae491da Binary files /dev/null and b/lib/commons-lang-2.5.jar differ diff --git a/lib/commons-lang3-3.3.2.jar b/lib/commons-lang3-3.3.2.jar new file mode 100644 index 0000000..2ce08ae Binary files /dev/null and b/lib/commons-lang3-3.3.2.jar differ diff --git a/lib/commons-logging-1.1.1.jar b/lib/commons-logging-1.1.1.jar new file mode 100644 index 0000000..1deef14 Binary files /dev/null and b/lib/commons-logging-1.1.1.jar differ diff --git a/lib/commons-pool2-2.0.jar b/lib/commons-pool2-2.0.jar new file mode 100644 index 0000000..be6d84f Binary files /dev/null and b/lib/commons-pool2-2.0.jar differ diff --git a/lib/cpdetector-1.0.7.jar b/lib/cpdetector-1.0.7.jar new file mode 100644 index 0000000..825bf8a Binary files /dev/null and b/lib/cpdetector-1.0.7.jar differ diff --git a/lib/cxf-core-3.1.4.jar b/lib/cxf-core-3.1.4.jar new file mode 100644 index 0000000..c16dfd7 Binary files /dev/null and b/lib/cxf-core-3.1.4.jar differ diff --git a/lib/cxf-rt-bindings-soap-3.1.4.jar b/lib/cxf-rt-bindings-soap-3.1.4.jar new file mode 100644 index 0000000..15a18dc Binary files /dev/null and b/lib/cxf-rt-bindings-soap-3.1.4.jar differ diff --git a/lib/cxf-rt-bindings-xml-3.1.4.jar b/lib/cxf-rt-bindings-xml-3.1.4.jar new file mode 100644 index 0000000..9776df4 Binary files /dev/null and b/lib/cxf-rt-bindings-xml-3.1.4.jar differ diff --git a/lib/cxf-rt-databinding-jaxb-3.1.4.jar b/lib/cxf-rt-databinding-jaxb-3.1.4.jar new file mode 100644 index 0000000..6e2a1e0 Binary files /dev/null and b/lib/cxf-rt-databinding-jaxb-3.1.4.jar differ diff --git a/lib/cxf-rt-frontend-jaxws-3.1.4.jar b/lib/cxf-rt-frontend-jaxws-3.1.4.jar new file mode 100644 index 0000000..2ac6df4 Binary files /dev/null and b/lib/cxf-rt-frontend-jaxws-3.1.4.jar differ diff --git a/lib/cxf-rt-frontend-simple-3.1.4.jar b/lib/cxf-rt-frontend-simple-3.1.4.jar new file mode 100644 index 0000000..6cbbd10 Binary files /dev/null and b/lib/cxf-rt-frontend-simple-3.1.4.jar differ diff --git a/lib/cxf-rt-transports-http-3.1.4.jar b/lib/cxf-rt-transports-http-3.1.4.jar new file mode 100644 index 0000000..15f3edf Binary files /dev/null and b/lib/cxf-rt-transports-http-3.1.4.jar differ diff --git a/lib/cxf-rt-ws-addr-3.1.4.jar b/lib/cxf-rt-ws-addr-3.1.4.jar new file mode 100644 index 0000000..214aece Binary files /dev/null and b/lib/cxf-rt-ws-addr-3.1.4.jar differ diff --git a/lib/cxf-rt-ws-policy-3.1.4.jar b/lib/cxf-rt-ws-policy-3.1.4.jar new file mode 100644 index 0000000..39a4ec4 Binary files /dev/null and b/lib/cxf-rt-ws-policy-3.1.4.jar differ diff --git a/lib/cxf-rt-wsdl-3.1.4.jar b/lib/cxf-rt-wsdl-3.1.4.jar new file mode 100644 index 0000000..44f5905 Binary files /dev/null and b/lib/cxf-rt-wsdl-3.1.4.jar differ diff --git a/lib/dom4j-1.6.1.jar b/lib/dom4j-1.6.1.jar new file mode 100644 index 0000000..c8c4dbb Binary files /dev/null and b/lib/dom4j-1.6.1.jar differ diff --git a/lib/ehcache-core-2.6.9.jar b/lib/ehcache-core-2.6.9.jar new file mode 100644 index 0000000..99dd2d2 Binary files /dev/null and b/lib/ehcache-core-2.6.9.jar differ diff --git a/lib/ehcache-web-2.0.4.jar b/lib/ehcache-web-2.0.4.jar new file mode 100644 index 0000000..ac60a53 Binary files /dev/null and b/lib/ehcache-web-2.0.4.jar differ diff --git a/lib/ezmorph-1.0.6.jar b/lib/ezmorph-1.0.6.jar new file mode 100644 index 0000000..30fad12 Binary files /dev/null and b/lib/ezmorph-1.0.6.jar differ diff --git a/lib/filters-2.0.235-1.jar b/lib/filters-2.0.235-1.jar new file mode 100644 index 0000000..1acab56 Binary files /dev/null and b/lib/filters-2.0.235-1.jar differ diff --git a/lib/geronimo-activation_1.1_spec-1.0.1.jar b/lib/geronimo-activation_1.1_spec-1.0.1.jar new file mode 100644 index 0000000..73d5272 Binary files /dev/null and b/lib/geronimo-activation_1.1_spec-1.0.1.jar differ diff --git a/lib/geronimo-javamail_1.4_spec-1.2.jar b/lib/geronimo-javamail_1.4_spec-1.2.jar new file mode 100644 index 0000000..8582a95 Binary files /dev/null and b/lib/geronimo-javamail_1.4_spec-1.2.jar differ diff --git a/lib/geronimo-jta_1.1_spec-1.1.jar b/lib/geronimo-jta_1.1_spec-1.1.jar new file mode 100644 index 0000000..bba9290 Binary files /dev/null and b/lib/geronimo-jta_1.1_spec-1.1.jar differ diff --git a/lib/geronimo-stax-api_1.0_spec-1.0.1.jar b/lib/geronimo-stax-api_1.0_spec-1.0.1.jar new file mode 100644 index 0000000..ab1ee3b Binary files /dev/null and b/lib/geronimo-stax-api_1.0_spec-1.0.1.jar differ diff --git a/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar b/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar new file mode 100644 index 0000000..c8a795a Binary files /dev/null and b/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar differ diff --git a/lib/guava-15.0.jar b/lib/guava-15.0.jar new file mode 100644 index 0000000..eb9ef8a Binary files /dev/null and b/lib/guava-15.0.jar differ diff --git a/lib/httpcore-4.0.jar b/lib/httpcore-4.0.jar new file mode 100644 index 0000000..37eb7d4 Binary files /dev/null and b/lib/httpcore-4.0.jar differ diff --git a/lib/jackson-annotations-2.5.4.jar b/lib/jackson-annotations-2.5.4.jar new file mode 100644 index 0000000..3ac1d0a Binary files /dev/null and b/lib/jackson-annotations-2.5.4.jar differ diff --git a/lib/jackson-core-2.5.4.jar b/lib/jackson-core-2.5.4.jar new file mode 100644 index 0000000..addf939 Binary files /dev/null and b/lib/jackson-core-2.5.4.jar differ diff --git a/lib/jackson-databind-2.5.4.jar b/lib/jackson-databind-2.5.4.jar new file mode 100644 index 0000000..0bc240c Binary files /dev/null and b/lib/jackson-databind-2.5.4.jar differ diff --git a/lib/jackson-module-jaxb-annotations-2.5.4.jar b/lib/jackson-module-jaxb-annotations-2.5.4.jar new file mode 100644 index 0000000..49ab41c Binary files /dev/null and b/lib/jackson-module-jaxb-annotations-2.5.4.jar differ diff --git a/lib/javax.servlet-api-3.1.0.jar b/lib/javax.servlet-api-3.1.0.jar new file mode 100644 index 0000000..6b14c3d Binary files /dev/null and b/lib/javax.servlet-api-3.1.0.jar differ diff --git a/lib/jaxb-core-2.2.11.jar b/lib/jaxb-core-2.2.11.jar new file mode 100644 index 0000000..f3c8412 Binary files /dev/null and b/lib/jaxb-core-2.2.11.jar differ diff --git a/lib/jaxb-impl-2.2.11.jar b/lib/jaxb-impl-2.2.11.jar new file mode 100644 index 0000000..a5c5b23 Binary files /dev/null and b/lib/jaxb-impl-2.2.11.jar differ diff --git a/lib/jaxen-1.1.1.jar b/lib/jaxen-1.1.1.jar new file mode 100644 index 0000000..b633631 Binary files /dev/null and b/lib/jaxen-1.1.1.jar differ diff --git a/lib/jedis-2.5.1.jar b/lib/jedis-2.5.1.jar new file mode 100644 index 0000000..463ad9e Binary files /dev/null and b/lib/jedis-2.5.1.jar differ diff --git a/lib/json-lib-2.4-jdk15.jar b/lib/json-lib-2.4-jdk15.jar new file mode 100644 index 0000000..68d4f3b Binary files /dev/null and b/lib/json-lib-2.4-jdk15.jar differ diff --git a/lib/jsp-api-2.2.jar b/lib/jsp-api-2.2.jar new file mode 100644 index 0000000..64e1b74 Binary files /dev/null and b/lib/jsp-api-2.2.jar differ diff --git a/lib/kaptcha-2.3.2.jar b/lib/kaptcha-2.3.2.jar new file mode 100644 index 0000000..1924015 Binary files /dev/null and b/lib/kaptcha-2.3.2.jar differ diff --git a/lib/log4j-1.2.14.jar b/lib/log4j-1.2.14.jar new file mode 100644 index 0000000..6251307 Binary files /dev/null and b/lib/log4j-1.2.14.jar differ diff --git a/lib/mail-1.4.jar b/lib/mail-1.4.jar new file mode 100644 index 0000000..fd4555b Binary files /dev/null and b/lib/mail-1.4.jar differ diff --git a/lib/metadata-extractor-2.6.2.jar b/lib/metadata-extractor-2.6.2.jar new file mode 100644 index 0000000..bd24cc1 Binary files /dev/null and b/lib/metadata-extractor-2.6.2.jar differ diff --git a/lib/mybatis-3.2.8.jar b/lib/mybatis-3.2.8.jar new file mode 100644 index 0000000..99cdd68 Binary files /dev/null and b/lib/mybatis-3.2.8.jar differ diff --git a/lib/mybatis-spring-1.2.2.jar b/lib/mybatis-spring-1.2.2.jar new file mode 100644 index 0000000..63a226f Binary files /dev/null and b/lib/mybatis-spring-1.2.2.jar differ diff --git a/lib/mysql-connector-java-5.1.36.jar b/lib/mysql-connector-java-5.1.36.jar new file mode 100644 index 0000000..a839c3d Binary files /dev/null and b/lib/mysql-connector-java-5.1.36.jar differ diff --git a/lib/neethi-2.0.4.jar b/lib/neethi-2.0.4.jar new file mode 100644 index 0000000..87da3f0 Binary files /dev/null and b/lib/neethi-2.0.4.jar differ diff --git a/lib/nis-core-1.0.jar b/lib/nis-core-1.0.jar new file mode 100644 index 0000000..621a816 Binary files /dev/null and b/lib/nis-core-1.0.jar differ diff --git a/lib/poi-3.9.jar b/lib/poi-3.9.jar new file mode 100644 index 0000000..0f46288 Binary files /dev/null and b/lib/poi-3.9.jar differ diff --git a/lib/poi-ooxml-3.9.jar b/lib/poi-ooxml-3.9.jar new file mode 100644 index 0000000..8792d46 Binary files /dev/null and b/lib/poi-ooxml-3.9.jar differ diff --git a/lib/poi-ooxml-schemas-3.9.jar b/lib/poi-ooxml-schemas-3.9.jar new file mode 100644 index 0000000..eda4ef4 Binary files /dev/null and b/lib/poi-ooxml-schemas-3.9.jar differ diff --git a/lib/servlet-api-2.3.jar b/lib/servlet-api-2.3.jar new file mode 100644 index 0000000..cd5b351 Binary files /dev/null and b/lib/servlet-api-2.3.jar differ diff --git a/lib/shiro-cas-1.2.3.jar b/lib/shiro-cas-1.2.3.jar new file mode 100644 index 0000000..e5dcf8e Binary files /dev/null and b/lib/shiro-cas-1.2.3.jar differ diff --git a/lib/shiro-core-1.2.3.jar b/lib/shiro-core-1.2.3.jar new file mode 100644 index 0000000..e9a09a6 Binary files /dev/null and b/lib/shiro-core-1.2.3.jar differ diff --git a/lib/shiro-ehcache-1.2.3.jar b/lib/shiro-ehcache-1.2.3.jar new file mode 100644 index 0000000..a680957 Binary files /dev/null and b/lib/shiro-ehcache-1.2.3.jar differ diff --git a/lib/shiro-spring-1.2.3.jar b/lib/shiro-spring-1.2.3.jar new file mode 100644 index 0000000..d2844ab Binary files /dev/null and b/lib/shiro-spring-1.2.3.jar differ diff --git a/lib/shiro-web-1.2.3.jar b/lib/shiro-web-1.2.3.jar new file mode 100644 index 0000000..3dfb799 Binary files /dev/null and b/lib/shiro-web-1.2.3.jar differ diff --git a/lib/sitemesh-3.0.1.jar b/lib/sitemesh-3.0.1.jar new file mode 100644 index 0000000..f2e5938 Binary files /dev/null and b/lib/sitemesh-3.0.1.jar differ diff --git a/lib/slf4j-api-1.7.7.jar b/lib/slf4j-api-1.7.7.jar new file mode 100644 index 0000000..bebabd9 Binary files /dev/null and b/lib/slf4j-api-1.7.7.jar differ diff --git a/lib/slf4j-log4j12-1.7.7.jar b/lib/slf4j-log4j12-1.7.7.jar new file mode 100644 index 0000000..950293b Binary files /dev/null and b/lib/slf4j-log4j12-1.7.7.jar differ diff --git a/lib/spring-aop-4.1.7.RELEASE.jar b/lib/spring-aop-4.1.7.RELEASE.jar new file mode 100644 index 0000000..7dce4d6 Binary files /dev/null and b/lib/spring-aop-4.1.7.RELEASE.jar differ diff --git a/lib/spring-aspects-4.1.7.RELEASE.jar b/lib/spring-aspects-4.1.7.RELEASE.jar new file mode 100644 index 0000000..4fe2922 Binary files /dev/null and b/lib/spring-aspects-4.1.7.RELEASE.jar differ diff --git a/lib/spring-beans-4.1.7.RELEASE.jar b/lib/spring-beans-4.1.7.RELEASE.jar new file mode 100644 index 0000000..6bf32ee Binary files /dev/null and b/lib/spring-beans-4.1.7.RELEASE.jar differ diff --git a/lib/spring-context-4.1.7.RELEASE.jar b/lib/spring-context-4.1.7.RELEASE.jar new file mode 100644 index 0000000..2d78145 Binary files /dev/null and b/lib/spring-context-4.1.7.RELEASE.jar differ diff --git a/lib/spring-context-support-4.1.7.RELEASE.jar b/lib/spring-context-support-4.1.7.RELEASE.jar new file mode 100644 index 0000000..3b3f544 Binary files /dev/null and b/lib/spring-context-support-4.1.7.RELEASE.jar differ diff --git a/lib/spring-core-4.1.7.RELEASE.jar b/lib/spring-core-4.1.7.RELEASE.jar new file mode 100644 index 0000000..6441ef2 Binary files /dev/null and b/lib/spring-core-4.1.7.RELEASE.jar differ diff --git a/lib/spring-expression-4.1.7.RELEASE.jar b/lib/spring-expression-4.1.7.RELEASE.jar new file mode 100644 index 0000000..e929e9e Binary files /dev/null and b/lib/spring-expression-4.1.7.RELEASE.jar differ diff --git a/lib/spring-jdbc-4.1.7.RELEASE.jar b/lib/spring-jdbc-4.1.7.RELEASE.jar new file mode 100644 index 0000000..ab26be0 Binary files /dev/null and b/lib/spring-jdbc-4.1.7.RELEASE.jar differ diff --git a/lib/spring-oxm-4.1.7.RELEASE.jar b/lib/spring-oxm-4.1.7.RELEASE.jar new file mode 100644 index 0000000..14a8687 Binary files /dev/null and b/lib/spring-oxm-4.1.7.RELEASE.jar differ diff --git a/lib/spring-test-4.1.7.RELEASE.jar b/lib/spring-test-4.1.7.RELEASE.jar new file mode 100644 index 0000000..6c35ed2 Binary files /dev/null and b/lib/spring-test-4.1.7.RELEASE.jar differ diff --git a/lib/spring-tx-4.1.7.RELEASE.jar b/lib/spring-tx-4.1.7.RELEASE.jar new file mode 100644 index 0000000..9d2d234 Binary files /dev/null and b/lib/spring-tx-4.1.7.RELEASE.jar differ diff --git a/lib/spring-web-4.1.7.RELEASE.jar b/lib/spring-web-4.1.7.RELEASE.jar new file mode 100644 index 0000000..9a50dcc Binary files /dev/null and b/lib/spring-web-4.1.7.RELEASE.jar differ diff --git a/lib/spring-webmvc-4.1.7.RELEASE.jar b/lib/spring-webmvc-4.1.7.RELEASE.jar new file mode 100644 index 0000000..bc702e2 Binary files /dev/null and b/lib/spring-webmvc-4.1.7.RELEASE.jar differ diff --git a/lib/stax-api-1.0.1.jar b/lib/stax-api-1.0.1.jar new file mode 100644 index 0000000..d9a1665 Binary files /dev/null and b/lib/stax-api-1.0.1.jar differ diff --git a/lib/stax2-api-3.1.4.jar b/lib/stax2-api-3.1.4.jar new file mode 100644 index 0000000..dded036 Binary files /dev/null and b/lib/stax2-api-3.1.4.jar differ diff --git a/lib/thumbnailator-0.4.2.jar b/lib/thumbnailator-0.4.2.jar new file mode 100644 index 0000000..b1b96cd Binary files /dev/null and b/lib/thumbnailator-0.4.2.jar differ diff --git a/lib/woden-api-1.0M8.jar b/lib/woden-api-1.0M8.jar new file mode 100644 index 0000000..095adbb Binary files /dev/null and b/lib/woden-api-1.0M8.jar differ diff --git a/lib/woden-impl-dom-1.0M8.jar b/lib/woden-impl-dom-1.0M8.jar new file mode 100644 index 0000000..4974af3 Binary files /dev/null and b/lib/woden-impl-dom-1.0M8.jar differ diff --git a/lib/woodstox-core-asl-4.4.1.jar b/lib/woodstox-core-asl-4.4.1.jar new file mode 100644 index 0000000..d8b4e8c Binary files /dev/null and b/lib/woodstox-core-asl-4.4.1.jar differ diff --git a/lib/wsdl4j-1.6.2.jar b/lib/wsdl4j-1.6.2.jar new file mode 100644 index 0000000..b9ffc36 Binary files /dev/null and b/lib/wsdl4j-1.6.2.jar differ diff --git a/lib/wstx-asl-3.2.4.jar b/lib/wstx-asl-3.2.4.jar new file mode 100644 index 0000000..700ccf6 Binary files /dev/null and b/lib/wstx-asl-3.2.4.jar differ diff --git a/lib/xalan-2.7.0.jar b/lib/xalan-2.7.0.jar new file mode 100644 index 0000000..007be39 Binary files /dev/null and b/lib/xalan-2.7.0.jar differ diff --git a/lib/xercesImpl-2.8.1.jar b/lib/xercesImpl-2.8.1.jar new file mode 100644 index 0000000..3b351f6 Binary files /dev/null and b/lib/xercesImpl-2.8.1.jar differ diff --git a/lib/xml-apis-1.3.03.jar b/lib/xml-apis-1.3.03.jar new file mode 100644 index 0000000..b338fb6 Binary files /dev/null and b/lib/xml-apis-1.3.03.jar differ diff --git a/lib/xml-resolver-1.2.jar b/lib/xml-resolver-1.2.jar new file mode 100644 index 0000000..e535bdc Binary files /dev/null and b/lib/xml-resolver-1.2.jar differ diff --git a/lib/xmlParserAPIs-2.6.0.jar b/lib/xmlParserAPIs-2.6.0.jar new file mode 100644 index 0000000..2dd8377 Binary files /dev/null and b/lib/xmlParserAPIs-2.6.0.jar differ diff --git a/lib/xmlbeans-2.3.0.jar b/lib/xmlbeans-2.3.0.jar new file mode 100644 index 0000000..ccd8163 Binary files /dev/null and b/lib/xmlbeans-2.3.0.jar differ diff --git a/lib/xmlpull-1.1.3.1.jar b/lib/xmlpull-1.1.3.1.jar new file mode 100644 index 0000000..cbc149d Binary files /dev/null and b/lib/xmlpull-1.1.3.1.jar differ diff --git a/lib/xmlschema-core-2.2.1.jar b/lib/xmlschema-core-2.2.1.jar new file mode 100644 index 0000000..cab69fd Binary files /dev/null and b/lib/xmlschema-core-2.2.1.jar differ diff --git a/lib/xmpcore-5.1.2.jar b/lib/xmpcore-5.1.2.jar new file mode 100644 index 0000000..ecd5db1 Binary files /dev/null and b/lib/xmpcore-5.1.2.jar differ diff --git a/lib/xpp3_min-1.1.4c.jar b/lib/xpp3_min-1.1.4c.jar new file mode 100644 index 0000000..813a9a8 Binary files /dev/null and b/lib/xpp3_min-1.1.4c.jar differ diff --git a/lib/xstream-1.4.7.jar b/lib/xstream-1.4.7.jar new file mode 100644 index 0000000..ea4b6a2 Binary files /dev/null and b/lib/xstream-1.4.7.jar differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..18dae5f --- /dev/null +++ b/pom.xml @@ -0,0 +1,616 @@ + + + + + 4.0.0 + war + gk + com.nis.springmvc + gk + 0.0.1-SNAPSHOT + + + + + + + nexus + Team Nexus Repository + http://10.0.6.30:8044/content/groups/public + + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + [1.0.0,) + + copy-dependencies + + + + + + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + [1.3.2,) + + generate + + + + + + + + + UTF-8 + + + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.2 + + + Generate MyBatis Artifacts + + generate + + + + + + true + true + + + + + + mysql + mysql-connector-java + 5.1.36 + + + + org.mybatis + mybatis + ${mybatis.version} + + + + org.mybatis.generator + mybatis-generator-core + 1.3.2 + + + + + + + + + + + org.mortbay.jetty + maven-jetty-plugin + jar + + + + 8888 + 30000 + + + ${project.build.directory}/${pom.artifactId}-${pom.version} + / + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + UTF-8 + + + + + + + + 4.1.7.RELEASE + 3.2.8 + 1.2.3 + 3.3.2 + 2.6.9 + 2.0.4 + + 2.5.4 + 3.0.1 + 1.4.7 + 3.9 + 1.7.7 + UTF-8 + + + + + + junit + junit + 4.11 + test + + + + com.mangofactory + swagger-springmvc + 1.0.2 + + + + + org.springframework + spring-context-support + ${spring.version} + + + + org.springframework + spring-oxm + ${spring.version} + + + + org.springframework + spring-jdbc + ${spring.version} + + + + org.springframework + spring-webmvc + ${spring.version} + + + + + org.springframework + spring-test + ${spring.version} + + + + org.springframework + spring-web + ${spring.version} + + + + org.springframework + spring-aspects + ${spring.version} + + + + org.sitemesh + sitemesh + ${sitemesh.version} + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + + javax.servlet + jstl + 1.2 + runtime + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + + commons-codec + commons-codec + 1.10 + + + + com.github.penggle + kaptcha + 2.3.2 + + + + + com.thoughtworks.xstream + xstream + ${xstream.version} + + + + + com.drewnoakes + metadata-extractor + 2.6.2 + + + + + net.sf.ehcache + ehcache-core + ${ehcache.version} + + + net.sf.ehcache + ehcache-web + ${ehcache-web.version} + + + redis.clients + jedis + 2.9.0 + + + + + + + org.apache.shiro + shiro-core + ${shiro.version} + + + org.apache.shiro + shiro-spring + ${shiro.version} + + + org.apache.shiro + shiro-cas + ${shiro.version} + + + commons-logging + commons-logging + + + + + org.apache.shiro + shiro-web + ${shiro.version} + + + org.apache.shiro + shiro-ehcache + ${shiro.version} + + + + + + + + + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + + com.jolbox + bonecp + 0.8.0.RELEASE + + + + mysql + mysql-connector-java + 5.1.36 + + + + com.nis.oracle + ojdbc14 + 10.2.0.40 + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + + + log4j + log4j + 1.2.14 + + + + org.mybatis + mybatis + ${mybatis.version} + + + + org.mybatis + mybatis-spring + 1.2.2 + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + ${jackson.version} + + + + + org.apache.poi + poi + ${poi.version} + + + org.apache.poi + poi-ooxml + ${poi.version} + + + org.apache.poi + poi-ooxml-schemas + ${poi.version} + + + + + + net.coobird + thumbnailator + 0.4.2 + + + com.ckfinder + apache-ant-zip + 2.3 + + + com.ckfinder + ckfinder + 2.3 + + + com.ckfinder + ckfinderplugin-fileeditor + 2.3 + + + com.ckfinder + ckfinderplugin-imageresize + 2.3 + + + + + + org.apache.cxf + cxf-rt-frontend-jaxws + 3.1.4 + + + + org.apache.cxf + cxf-rt-transports-http + 3.1.4 + + + + org.apache.axis2 + axis2 + 1.5.1 + pom + compile + + + org.apache.axis2 + axis2-adb + 1.5.1 + jar + compile + + + org.apache.axis2 + axis2-kernel + 1.5.1 + jar + compile + + + javax.servlet + servlet-api + + + + + org.apache.axis2 + axis2-transport-http + 1.5.2 + compile + + + org.apache.axis2 + axis2-transport-local + 1.5.4 + compile + + + + + info.monitorenter + cpdetector + 1.0.7 + + + + com.nis + nis-core + 1.0 + + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + org.apache.hive + hive-jdbc + 2.1.0 + + + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-web + + + org.apache.logging.log4j + log4j-slf4j-impl + + + tomcat + jasper-compiler + + + tomcat + jasper-runtime + + + org.mortbay.jetty + jsp-2.1 + + + + + org.apache.httpcomponents + httpcore + 4.4 + + + jdk.tools + jdk.tools + 1.7 + system + ${JAVA_HOME}/lib/tools.jar + + + org.apache.httpcomponents + httpclient + 4.4 + + + + + diff --git a/sqlupdate/sqlUpdate20161018.sql b/sqlupdate/sqlUpdate20161018.sql new file mode 100644 index 0000000..897e408 --- /dev/null +++ b/sqlupdate/sqlUpdate20161018.sql @@ -0,0 +1,332 @@ +--2016.10.14:2.5.30董晓燕 1. 增加5.8. DNS欺骗IP地址池配置表DNS_FAKE_IP_POOL,业务:由界面配置IP池信息,后台根据讨论策略同步数据到DNS_FAKE_IP表 +--gk_pz库 +-- Create table +create table DNS_FAKE_IP_POOL +( + ID NUMBER not null, + GROUP_ID INTEGER not null, + ADDR_TYPE INTEGER not null, + SRC_IP VARCHAR2(64) not null, + MASK_SRC_IP VARCHAR2(64) not null, + SRC_PORT VARCHAR2(6) not null, + MASK_SRC_PORT VARCHAR2(6) not null, + DST_IP VARCHAR2(64) not null, + MASK_DST_IP VARCHAR2(64) not null, + DST_PORT VARCHAR2(6) not null, + MASK_DST_PORT VARCHAR2(6) not null, + PROTOCOL INTEGER default 0 not null, + DIRECTION INTEGER default 0 not null, + IS_VALID INTEGER not null, + OP_TIME DATE not null, + YL1 INTEGER, + YL2 INTEGER, + YL3 VARCHAR2(80), + YL4 VARCHAR2(80), + YL5 VARCHAR2(80), + LAST_UPDATE DATE, + PROC_SEQ NUMBER +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 8K + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DNS_FAKE_IP_POOL.ID + is '主键自增SEQ_DNS_FAKE_IP_POOL.nextval'; +comment on column DNS_FAKE_IP_POOL.GROUP_ID + is 'DNS_GROUP_TYPE(GROUP_ID); +0:无策略欺骗IP,并且IP不需要发SYN_ACK欺骗 +1: 无策略欺骗IP,并且IP需要发SYN_ACK欺骗 +'; +comment on column DNS_FAKE_IP_POOL.ADDR_TYPE + is 'Ipv4=4,ipv6=6'; +comment on column DNS_FAKE_IP_POOL.SRC_IP + is '0.0.0.0值表示任意'; +comment on column DNS_FAKE_IP_POOL.MASK_SRC_IP + is 'IPv4:255.255.255.255表示无掩码,即精确IP匹配,0.0.0.0值表示任意; +IPv6:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff表示无掩码,::(两个半角冒号)表示任意。 +'; +comment on column DNS_FAKE_IP_POOL.SRC_PORT + is '0值表示任意'; +comment on column DNS_FAKE_IP_POOL.MASK_SRC_PORT + is '65535表示无掩码,即精确端口匹配,0表示任意'; +comment on column DNS_FAKE_IP_POOL.DST_IP + is '同源IP地址'; +comment on column DNS_FAKE_IP_POOL.MASK_DST_IP + is '同源IP掩码'; +comment on column DNS_FAKE_IP_POOL.DST_PORT + is '同源端口'; +comment on column DNS_FAKE_IP_POOL.MASK_DST_PORT + is '同源端口掩码'; +comment on column DNS_FAKE_IP_POOL.PROTOCOL + is '6表示TCP,17表示UDP,无限制默认为0'; +comment on column DNS_FAKE_IP_POOL.DIRECTION + is '0双向,1单向'; +comment on column DNS_FAKE_IP_POOL.IS_VALID + is '0无效,1有效'; +comment on column DNS_FAKE_IP_POOL.OP_TIME + is '当前时间'; +comment on column DNS_FAKE_IP_POOL.LAST_UPDATE + is '本地操作更新时间,后台生成'; +comment on column DNS_FAKE_IP_POOL.PROC_SEQ + is '版本序列号,由SEQ_MESSAGE序列生成,触发器生成'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DNS_FAKE_IP_POOL + add constraint PK_DNS_FAKE_IP_POOL primary key (ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +--gk_pz库 +-- Create sequence +create sequence SEQ_DNS_FAKE_IP_POOL +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +--gk_log库 +--2016-10-13:2.5.29 2016.10.13 杨嵘 +--2. 日志公共部分中SERVER_PORT在PPTP业务中的含义为服务端CALL_ID;CLIENT_PORT在PPTP业务中的含义为客户端CALL_ID; +--该项属于业务理解范畴不调整表格和服务 + +--3. 在L2TP和PPTP封堵日志中增加CONTENT_TYPE字段 +alter table DF_PPTP_LOG add CONTENT_TYPE INTEGER; +alter table DF_L2TP_LOG add CONTENT_TYPE INTEGER; +--alter table DJ_PPTP_LOG add CONTENT_TYPE INTEGER; +--alter table DJ_L2TP_LOG add CONTENT_TYPE INTEGER; + +--gk_log库 +--2.5.28 2016.10.13 张成伟 DF_MAIL_LOG日志表FFROM改为MAIL_FROM,TTO改为MAIL_TO +alter table DF_MAIL_LOG rename column FFROM to MAIL_FROM; +alter table DF_MAIL_LOG rename column TTO to MAIL_TO; + +--gk_log库 +--2016.10.12 2.5.27 张成伟 公共库表增加封堵包INJECTED_PKT_FILE字段 +alter table df_dns_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ftp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_http_req_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_http_res_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ipsec_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ip_port_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_l2tp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_mail_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_openvpn_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_pptp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ssh_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ssl_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ck_stat_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_dns_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ftp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_keyword_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_req_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_res_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ipsec_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ip_port_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_l2tp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_mail_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_openvpn_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_pptp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ssh_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ssl_log add INJECTED_PKT_FILE VARCHAR2(256); + +--gk_log库 +--2016-10-11:Number位数较大时,Java Integer和Long型不能满足,改为设置数据库show numw,然后代码按Bigdecimal获取按字符串返回给服务调用者; + --设置数据库show numw + set numw 50 + + +--2016-10-10:杨威2.5.26版数据库涉及更新内容 + +对应配置库 +--gk_pz库 +--1。与郑超讨论后决定出于业务组织分布,封堵业务大量配置将集中在URL字段,因此将URL单独设置配置表,对应5.1和6.1分别增加DF_HTTP_URL和DJ_HTTP_URL配置表 +--DF_HTTP_URL +-- Create table +create table DF_HTTP_URL +( + REGION_ID NUMBER not null, + GROUP_ID NUMBER not null, + KEYWORDS VARCHAR2(1024) not null, + EXPR_TYPE NUMBER not null, + MATCH_METHOD NUMBER not null, + IS_HEXBIN NUMBER default 0 not null, + IS_VALID NUMBER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER, + LAST_UPDATE DATE +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DF_HTTP_URL.REGION_ID + is '由SEQ_REGIONID.nextval生成,主键'; +comment on column DF_HTTP_URL.GROUP_ID + is '关联管控配置分组表中的group_id由SEQ_GROUPID.nextval生成'; +comment on column DF_HTTP_URL.KEYWORDS + is 'expr_type:1,时, keywords中’&’为与运算操作符,子表达式中的’&’符号用’\&’转义。'; +comment on column DF_HTTP_URL.EXPR_TYPE + is '0:无表达式,1:表示为与表达式'; +comment on column DF_HTTP_URL.MATCH_METHOD + is 'expr_type:0时有意义,其它情况必须置0。 +0:子串匹配;1:右匹配;2:左匹配;3:完全匹配 +'; +comment on column DF_HTTP_URL.IS_HEXBIN + is '默认为0:大小写不敏感,且非HEX +1:HEX格式二进制 +2:大小写敏感,且非HEX +二进制格式是一种特殊的编码,受table_info.conf文件中do_merge控制 +'; +comment on column DF_HTTP_URL.IS_VALID + is '0无效,1有效'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_HTTP_URL + add constraint PK_DF_HTTP_URL primary key (REGION_ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +--gk_pz库 +--对应触发器 +CREATE OR REPLACE TRIGGER TRG_DJ_HTTP_URL_BEFORE BEFORE INSERT OR UPDATE ON DJ_HTTP_URL +FOR EACH ROW +BEGIN + SELECT SEQ_MESSAGE.NEXTVAL into :NEW.PROC_SEQ FROM DUAL; +END; +--gk_pz库 +CREATE OR REPLACE TRIGGER TRG_DJ_HTTP_URL_AFTER AFTER INSERT OR UPDATE ON DJ_HTTP_URL +FOR EACH ROW +DECLARE +is_exist int :=0; +BEGIN + SELECT COUNT(*) INTO is_exist FROM MESA_PZ_ZT WHERE upper(TABLE_NAME)='DJ_HTTP_URL'; + IF is_exist>0 THEN + UPDATE MESA_PZ_ZT SET PROC_SEQ=:NEW.PROC_SEQ WHERE upper(TABLE_NAME)='DJ_HTTP_URL'; + ELSE + INSERT INTO MESA_PZ_ZT(TABLE_NAME,PROC_SEQ) VALUES ('DJ_HTTP_URL',:NEW.PROC_SEQ); + END IF; +END; + +--gk_pz库 +--DJ_HTTP_URL +-- Create table +create table DJ_HTTP_URL +( + REGION_ID NUMBER not null, + GROUP_ID NUMBER not null, + KEYWORDS VARCHAR2(1024) not null, + EXPR_TYPE NUMBER not null, + MATCH_METHOD NUMBER not null, + IS_HEXBIN NUMBER default 0 not null, + IS_VALID NUMBER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER, + LAST_UPDATE DATE +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DJ_HTTP_URL.REGION_ID + is '由SEQ_REGIONID.nextval生成,主键'; +comment on column DJ_HTTP_URL.GROUP_ID + is '关联管控配置分组表中的group_id由SEQ_GROUPID.nextval生成'; +comment on column DJ_HTTP_URL.KEYWORDS + is 'expr_type:1,时, keywords中’&’为与运算操作符,子表达式中的’&’符号用’\&’转义。'; +comment on column DJ_HTTP_URL.EXPR_TYPE + is '0:无表达式,1:表示为与表达式'; +comment on column DJ_HTTP_URL.MATCH_METHOD + is 'expr_type:0时有意义,其它情况必须置0。 +0:子串匹配;1:右匹配;2:左匹配;3:完全匹配 +'; +comment on column DJ_HTTP_URL.IS_HEXBIN + is '默认为0:大小写不敏感,且非HEX +1:HEX格式二进制 +2:大小写敏感,且非HEX +二进制格式是一种特殊的编码,受table_info.conf文件中do_merge控制 +'; +comment on column DJ_HTTP_URL.IS_VALID + is '0无效,1有效'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DJ_HTTP_URL + add constraint PK_DJ_HTTP_URL primary key (REGION_ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +--gk_pz库 +--对应触发器 +CREATE OR REPLACE TRIGGER TRG_DF_HTTP_URL_BEFORE BEFORE INSERT OR UPDATE ON DF_HTTP_URL +FOR EACH ROW +BEGIN + SELECT SEQ_MESSAGE.NEXTVAL into :NEW.PROC_SEQ FROM DUAL; +END; + +CREATE OR REPLACE TRIGGER TRG_DF_HTTP_URL_AFTER AFTER INSERT OR UPDATE ON DF_HTTP_URL +FOR EACH ROW +DECLARE +is_exist int :=0; +BEGIN + SELECT COUNT(*) INTO is_exist FROM MESA_PZ_ZT WHERE upper(TABLE_NAME)='DF_HTTP_URL'; + IF is_exist>0 THEN + UPDATE MESA_PZ_ZT SET PROC_SEQ=:NEW.PROC_SEQ WHERE upper(TABLE_NAME)='DF_HTTP_URL'; + ELSE + INSERT INTO MESA_PZ_ZT(TABLE_NAME,PROC_SEQ) VALUES ('DF_HTTP_URL',:NEW.PROC_SEQ); + END IF; +END; + +--gk_log库 +对应日志库 +-- 2.应哈工大要求,10.9增加chap_name日志字段 +alter table df_l2tp_log add CHAP_NAME VARCHAR2(256); +alter table dj_l2tp_log add CHAP_NAME VARCHAR2(256); diff --git a/sqlupdate/sqlUpdate20161021.sql b/sqlupdate/sqlUpdate20161021.sql new file mode 100644 index 0000000..1b66335 --- /dev/null +++ b/sqlupdate/sqlUpdate20161021.sql @@ -0,0 +1,6 @@ +--gk_pz库 +--2.5.32 2016.10.21 窦凤虎 1. DF_L2TP_URL由增强字符域改为字符域 +alter table DF_L2TP_URL drop column DISTRICT ; +--2. DF_PPTP_URL由增强字符域改为字符域 +alter table DF_PPTP_URL drop column DISTRICT ; + diff --git a/sqlupdate/sqlUpdateLog20161018.sql b/sqlupdate/sqlUpdateLog20161018.sql new file mode 100644 index 0000000..ee50ac5 --- /dev/null +++ b/sqlupdate/sqlUpdateLog20161018.sql @@ -0,0 +1,58 @@ +--------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2016/10/18, 10:08:29 -- +--------------------------------------------- + +spool services_request_log.log + +prompt +prompt Creating table SERVICES_REQUEST_LOG +prompt =================================== +prompt +create table GK_LOG.SERVICES_REQUEST_LOG +( + ID NUMBER not null, + OPERATOR VARCHAR2(200), + VERSION VARCHAR2(100) not null, + OPACTION INTEGER not null, + OPTIME DATE, + REQUEST_CONTENT CLOB, + REQUEST_TIME DATE not null, + CONSUMER_TIME NUMBER not null, + REQUEST_IP VARCHAR2(200) +) +; +comment on column GK_LOG.SERVICES_REQUEST_LOG.ID + is '由数据库序列号中SEQ_SERVICES_REQUEST_LOG.nextval生成,主键'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.OPERATOR + is '操作者'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.VERSION + is '版本'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.OPACTION + is '操作'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.OPTIME + is '操作时间(来自服务请求传入)'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.REQUEST_CONTENT + is '请求内容,如果是文件,写文件路径和文件MD5值'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.REQUEST_TIME + is '请求到达服务器时间'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.CONSUMER_TIME + is '服务器处理时间'; +comment on column GK_LOG.SERVICES_REQUEST_LOG.REQUEST_IP + is '请求者的IP'; +alter table GK_LOG.SERVICES_REQUEST_LOG + add constraint PK_SERVICES_REQUEST_LOG primary key (ID); + +prompt +prompt Creating sequence SEQ_SERVICES_REQUEST_LOG +prompt ========================================== +prompt +create sequence GK_LOG.SEQ_SERVICES_REQUEST_LOG +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 157 +increment by 1 +cache 20; + + +spool off diff --git a/sqlupdate/sqlupdate(20161021)DNS_GROUP_TYPE增加字段.sql b/sqlupdate/sqlupdate(20161021)DNS_GROUP_TYPE增加字段.sql new file mode 100644 index 0000000..a97d3fd --- /dev/null +++ b/sqlupdate/sqlupdate(20161021)DNS_GROUP_TYPE增加字段.sql @@ -0,0 +1,5 @@ +-- Add/modify columns +alter table DNS_GROUP_TYPE add group_name VARCHAR2(256) not null; +-- Add comments to the columns +comment on column DNS_GROUP_TYPE.group_name + is '组名称'; diff --git a/sqlupdate/sqlupdate(20161031)新增统计表.sql b/sqlupdate/sqlupdate(20161031)新增统计表.sql new file mode 100644 index 0000000..ddb1975 --- /dev/null +++ b/sqlupdate/sqlupdate(20161031)新增统计表.sql @@ -0,0 +1,179 @@ +--soq文本数据库设计_内部开发版本 +--2.5.34 +--增加实时统计所需表13.13-13.17分别为: +--DF_PZ_REPORT\DF_SERVICE_REPORT\DF_TAG_REPORT +--DF_SRCIP_DOMESTIC_REPORT\DF_DESTIP_COUNTRY_REPORT + +-- Create table +create table DF_PZ_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + CFG_ID NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255; +-- Add comments to the table +comment on table DF_PZ_REPORT + is '管控配置实时统计表 该表只在B版日志数据库中'; +-- Add comments to the columns +comment on column DF_PZ_REPORT.ACTIVE_SYS + is 'A版:4 +B版:2 +C版:1 +'; +comment on column DF_PZ_REPORT.REPORT_TIME + is '粒度5分钟'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_PZ_REPORT + add constraint PK_DF_PZ_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255; + +-- Create table +create table DF_SERVICE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255; +-- Add comments to the table +comment on table DF_SERVICE_REPORT + is '该表只在B版日志数据库中'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_SERVICE_REPORT + add constraint PK_DF_SERVICE_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255; + +-- Create table +create table DF_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + TAG INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255; +-- Add comments to the table +comment on table DF_TAG_REPORT + is '该表只在B版日志数据库中'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_TAG_REPORT + add constraint PK_DF_TAG_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255; + +-- Create table +create table DF_SRCIP_DOMESTIC_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256) not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255; +-- Add comments to the table +comment on table DF_SRCIP_DOMESTIC_REPORT + is '该表只在B版日志数据库中'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_SRCIP_DOMESTIC_REPORT + add constraint PK_DF_SRCIP_DOMESTIC_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255; + +-- Create table +create table DF_DESTIP_COUNTRY_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + DEST_COUNTRY VARCHAR2(256) not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255; +-- Add comments to the table +comment on table DF_DESTIP_COUNTRY_REPORT + is '该表只在B版日志数据库中'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_DESTIP_COUNTRY_REPORT + add constraint PK_DF_DESTIP_COUNTRY_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255; + +-- Create sequence +create sequence SEQ_DF_PZ_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +-- Create sequence +create sequence SEQ_DF_SERVICE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +-- Create sequence +create sequence SEQ_DF_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +-- Create sequence +create sequence SEQ_DF_SRCIP_DOMESTIC_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +-- Create sequence +create sequence SEQ_DF_DESTIP_COUNTRY_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; \ No newline at end of file diff --git a/sqlupdate/sqlupdate(20161102)新增字段.sql b/sqlupdate/sqlupdate(20161102)新增字段.sql new file mode 100644 index 0000000..e1494a2 --- /dev/null +++ b/sqlupdate/sqlupdate(20161102)新增字段.sql @@ -0,0 +1,2 @@ +-- Add/modify columns +alter table JK_FD_ZB add ADDR_TYPE integer not null; diff --git a/sqlupdate/sqlupdate(20161104)数据字典表.sql b/sqlupdate/sqlupdate(20161104)数据字典表.sql new file mode 100644 index 0000000..b220825 --- /dev/null +++ b/sqlupdate/sqlupdate(20161104)数据字典表.sql @@ -0,0 +1,95 @@ +-- Create table +create table DATADICTIONARYNAME +( + id NUMBER(10) not null, + datadictname VARCHAR2(1000) not null, + isvalid NUMBER(2) not null +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DATADICTIONARYNAME.id + is '数据字典名称id'; +comment on column DATADICTIONARYNAME.datadictname + is '数据字典名称'; +comment on column DATADICTIONARYNAME.isvalid + is '数据字典是否有效'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DATADICTIONARYNAME + add primary key (ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + + + + + -- Create table +create table DATADICTIONARYVALUE +( + id NUMBER(10) not null, + datadictid NUMBER(10) not null, + datadictvalue VARCHAR2(1000) not null, + isvalid NUMBER(2) not null +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DATADICTIONARYVALUE.id + is '数据字典值id'; +comment on column DATADICTIONARYVALUE.datadictid + is '数据字典名称id'; +comment on column DATADICTIONARYVALUE.datadictvalue + is '数据字典值'; +comment on column DATADICTIONARYVALUE.isvalid + is '数据字典值是否有效'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DATADICTIONARYVALUE + add primary key (ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DATADICTIONARYVALUE + add constraint FK_DATADICTVALUE_ID foreign key (DATADICTID) + references DATADICTIONARYNAME (ID); + + + +--创建数据字典序列 +create sequence seq_datadict start with 1 increment by 1; \ No newline at end of file diff --git a/sqlupdate/sqlupdate(20161108)dns_response_strategy增加字段.sql b/sqlupdate/sqlupdate(20161108)dns_response_strategy增加字段.sql new file mode 100644 index 0000000..8896996 --- /dev/null +++ b/sqlupdate/sqlupdate(20161108)dns_response_strategy增加字段.sql @@ -0,0 +1,10 @@ +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add MIN_TTL INTEGER not null; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.MIN_TTL + is '最小生存时间'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add MAX_TTL INTEGER not null; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.MAX_TTL + is '最大生存时间'; diff --git a/sqlupdate/sqlupdate(20161108)services_request_log增加字段.sql b/sqlupdate/sqlupdate(20161108)services_request_log增加字段.sql new file mode 100644 index 0000000..a7a33c0 --- /dev/null +++ b/sqlupdate/sqlupdate(20161108)services_request_log增加字段.sql @@ -0,0 +1,6 @@ +-- Add/modify columns +alter table SERVICES_REQUEST_LOG add BUSINESS_CODE INTEGER ; +-- Add comments to the columns +comment on column SERVICES_REQUEST_LOG.BUSINESS_CODE + is '服务状态码'; + diff --git a/sqlupdate/sqlupdate(20161108)新增表和字段.sql b/sqlupdate/sqlupdate(20161108)新增表和字段.sql new file mode 100644 index 0000000..5246e78 --- /dev/null +++ b/sqlupdate/sqlupdate(20161108)新增表和字段.sql @@ -0,0 +1,62 @@ +-- Create table +create table FX_HTTP_URL +( + REGION_ID NUMBER not null, + GROUP_ID NUMBER not null, + KEYWORDS VARCHAR2(1024) not null, + EXPR_TYPE NUMBER not null, + MATCH_METHOD NUMBER not null, + IS_HEXBIN NUMBER default 0 not null, + IS_VALID NUMBER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER, + LAST_UPDATE DATE +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column FX_HTTP_URL.REGION_ID + is ''; +comment on column FX_HTTP_URL.GROUP_ID + is 'ܿ÷еgroup_id'; +comment on column FX_HTTP_URL.KEYWORDS + is 'expr_type:1,ʱ keywordsС,ӱʽеġ&ת塣'; +comment on column FX_HTTP_URL.EXPR_TYPE + is '0:ޱʽ,1:ʾΪʽ'; +comment on column FX_HTTP_URL.MATCH_METHOD + is 'expr_type:0ʱ壬0 +0Ӵƥ䣻1ƥ䣻2ƥ䣻3ȫƥ +'; +comment on column FX_HTTP_URL.IS_HEXBIN + is 'ĬΪ0:СдУҷHEX 1:HEXʽ2:СдУҷHEXƸʽһı룬table_info.confļdo_merge'; +comment on column FX_HTTP_URL.IS_VALID + is '0Ч1Ч'; +-- Create/Recreate primary, unique and foreign key constraints +alter table FX_HTTP_URL + add constraint PK_FX_HTTP_URL primary key (REGION_ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + + + + alter table dns_response_strategy add column MIN_TTL integer not null; + alter table dns_response_strategy add column MAX_TTL integer not null; diff --git a/sqlupdate/sqlupdate(20161109).sql b/sqlupdate/sqlupdate(20161109).sql new file mode 100644 index 0000000..9d9bb28 --- /dev/null +++ b/sqlupdate/sqlupdate(20161109).sql @@ -0,0 +1,110 @@ +JK_PZ库,调整如下: +-- Drop columns +alter table JK_FD_ZB drop column ADDR_TYPE; +-- Add/modify columns +alter table JK_FD_ZB add ISP_RAW raw(16) not null; + + +GK_LOG库调整如下: +1、新增表 +-- Create table +create table DF_KEY_MAIL_ADDR +( + ID INTEGER not null, + KEY_ID INTEGER not null, + MAIL_ADDR VARCHAR2(1024) not null, + OP_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DF_KEY_MAIL_ADDR.ID + is '自增,序列SEQ_KEY_CONVERT_URL'; +comment on column DF_KEY_MAIL_ADDR.KEY_ID + is '命中关键字ID'; +comment on column DF_KEY_MAIL_ADDR.MAIL_ADDR + is '邮件地址'; +comment on column DF_KEY_MAIL_ADDR.OP_TIME + is '操作时间'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_KEY_MAIL_ADDR + add constraint PK_DF_KEY_MAIL_ADDR primary key (ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Create/Recreate indexes +create index DF_KEY_MAIL_ADDR_OPTIME on DF_KEY_MAIL_ADDR (OP_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + + +GK_PZ库调整如下: +1、新增表 +-- Create table +create table SYSTEM_FUN_STATUS +( + ID NUMBER not null, + FUNCTION NUMBER not null, + BACK_DATA NUMBER not null, + EFFECTIVE_RANGE VARCHAR2(32) not null, + ACTIVE_SYS INTEGER not null, + IS_VALID INTEGER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the table +comment on table SYSTEM_FUN_STATUS + is '文本系统功能业务表'; +-- Create/Recreate primary, unique and foreign key constraints +alter table SYSTEM_FUN_STATUS + add constraint PK_SYSTEM_FUN_STATUS primary key (ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); diff --git a/sqlupdate/sqlupdate(20161109)dns_response_strategy增加字段.sql b/sqlupdate/sqlupdate(20161109)dns_response_strategy增加字段.sql new file mode 100644 index 0000000..8c4261a --- /dev/null +++ b/sqlupdate/sqlupdate(20161109)dns_response_strategy增加字段.sql @@ -0,0 +1,31 @@ +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_3_ID INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_3_ID + is 'DNS_GROUP_TYPE(GROUP_ID),default(0)'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_3_NUM INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_3_NUM + is 'default(0)'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_4_ID INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_4_ID + is 'DNS_GROUP_TYPE(GROUP_ID),default(0)'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_4_NUM INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_4_NUM + is 'default(0)'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_5_ID INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_5_ID + is 'DNS_GROUP_TYPE(GROUP_ID),default(0)'; +-- Add/modify columns +alter table DNS_RESPONSE_STRATEGY add RES_GROUP_5_NUM INTEGER default 0; +-- Add comments to the columns +comment on column DNS_RESPONSE_STRATEGY.RES_GROUP_5_NUM + is 'default(0)'; + diff --git a/sqlupdate/sqlupdate(20161115)新增触发器seq.sql b/sqlupdate/sqlupdate(20161115)新增触发器seq.sql new file mode 100644 index 0000000..7c01de8 --- /dev/null +++ b/sqlupdate/sqlupdate(20161115)新增触发器seq.sql @@ -0,0 +1,1460 @@ +--GK_LOG库 + +CREATE OR REPLACE TRIGGER TRG_DF_KEY_MAIL_ADDR_B BEFORE INSERT OR UPDATE ON DF_KEY_MAIL_ADDR +FOR EACH ROW + +BEGIN + SELECT SEQ_DF_KEY_MAIL_ADDR.NEXTVAL into :NEW.ID FROM DUAL; +END; + +-- Create sequence +create sequence SEQ_DF_KEY_CONVERT_MAIL_ADDR +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + + +alter table df_stat_log_daily add LOG_TYPE char(1) default 0; +alter table df_stat_log_month add LOG_TYPE char(1) default 0; + +--更新所有报表存储过程 +--------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2016/11/15, 17:33:15 -- +--------------------------------------------- + +spool 20161115更新存储过程.log + +prompt +prompt Creating procedure PRO_DF_DNS_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DF_DNS_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_DNS_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_DNS_LOG 6'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除前一次统计的数据信息,避免累计统计 + delete from df_stat_log_daily dd where service=6 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_DNS_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 6, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_dns_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_DNS_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_FTP_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DF_FTP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_FTP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_FTP_LOG 14'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + delete from df_stat_log_daily dd where service=14 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_FTP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 14, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_ftp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_FTP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_FTP_LOG_MONTH +prompt ======================================= +prompt +create or replace procedure PRO_DF_FTP_LOG_MONTH(NUMDAYS INT) +--DF_FTP月统计,基于日报表进行,每月月初统计上个月月报 +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_FTP_LOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_FTP_LOG'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + begin + RIQI := to_char(trunc(sysdate-1-NUMDAYS, 'month'), 'yyyy-MM'); + RIQI_S := to_char(trunc(sysdate-1-NUMDAYS, 'month'), 'yyyy-MM-dd'); -- 前N天所在月月初 + RIQI_S := RIQI_S || ' 00:00:00'; + RIQI_E := to_char(last_day(sysdate-1-NUMDAYS), 'yyyy-mm-dd'); -- 前N天所在月月末 + RIQI_E := RIQI_E || ' 23:59:59'; + --先删除要统计月的统计的数据信息,清理之前该月统计然后重新统计,避免累计统计 + delete from df_stat_log_month dm where dm.stat_time=to_date(RIQI,'yyyy-MM'); + commit; + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_FTP月报 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert \*+ append *\ into df_stat_log_month(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, SERVICE_TYPE, shijian, shuliang,0 from(select CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_stat_log_daily where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_FTP月报 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_HTTP_KEYWORD_LOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_DF_HTTP_KEYWORD_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_HTTP_KEYWORD_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_HTTP_KEYWORD_LOG 14'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + delete from df_stat_log_daily dd where service=14 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_HTTP_KEYWORD_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, SERVICE_TYPE, shijian, shuliang,0 from(select CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_http_keyword_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_HTTP_KEYWORD_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_HTTP_REQ_LOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_DF_HTTP_REQ_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_HTTP_REQ_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_HTTP_REQ_LOG 3'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --df_http_req_log + delete from df_stat_log_daily dd where service=3 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_HTTP_REQ_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 3, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_http_req_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_HTTP_REQ_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + /*execute immediate 'insert \*+ append *\ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM) (select seq_df_stat_log_daily.nextval, CFG_ID, SERVICE_TYPE, shijian, shuliang from(select CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_http_req_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,SERVICE_TYPE,trunc(FOUND_TIME, ''DD'')))'; + commit;*/ + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_HTTP_RES_LOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_DF_HTTP_RES_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_HTTP_RES_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_HTTP_RES_LOG 4'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --df_http_res_log + delete from df_stat_log_daily dd where service=4 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_HTTP_RES_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 4, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_http_res_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_HTTP_RES_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_IPSEC_LOG_DAILY +prompt ========================================= +prompt +create or replace procedure PRO_DF_IPSEC_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_IPSEC_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_IPSEC_LOG 9'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_IPSEC_LOG + delete from df_stat_log_daily dd where service=9 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_IPSEC_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 9, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_ipsec_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_IPSEC_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_IP_PORT_LOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_DF_IP_PORT_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_IP_PORT_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_IP_PORT_LOG 1'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_IP_PORT_LOG + delete from df_stat_log_daily dd where service=1 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_IP_PORT_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 1, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_ip_port_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_IP_PORT_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_L2TP_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DF_L2TP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_L2TP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_L2TP_LOG 8'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_L2TP_LOG + delete from df_stat_log_daily dd where service=8 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_L2TP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 8, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_l2tp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_L2TP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_MAIL_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DF_MAIL_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_MAIL_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_MAIL_LOG 13'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_MAIL_LOG + delete from df_stat_log_daily dd where service=13 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_MAIL_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 13, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_mail_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_MAIL_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_OPENVPN_LOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_DF_OPENVPN_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_OPENVPN_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_OPENVPN_LOG 10'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_OPENVPN_LOG + delete from df_stat_log_daily dd where service=10 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_OPENVPN_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 10, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_openvpn_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_OPENVPN_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_PPTP_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DF_PPTP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_PPTP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_PPTP_LOG 7'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_PPTP_LOG + delete from df_stat_log_daily dd where service=7 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_PPTP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 7, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_pptp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_PPTP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_SSH_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DF_SSH_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_SSH_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SSH_LOG 11'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_SSH_LOG + delete from df_stat_log_daily dd where service=11 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SSH_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 11, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_ssh_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SSH_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DF_SSL_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DF_SSL_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DF_SSL_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SSL_LOG 12'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DF_SSL_LOG + delete from df_stat_log_daily dd where service=12 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SSL_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 12, shijian, shuliang,0 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from df_ssl_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SSL_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_DNS_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DJ_DNS_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_DNS_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_DNS_LOG 52'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_DNS_LOG + delete from df_stat_log_daily dd where service=52 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_DNS_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 52, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_dns_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_DNS_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_FTP_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DJ_FTP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_FTP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_FTP_LOG 53'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_FTP_LOG + delete from df_stat_log_daily dd where service=53 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_FTP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 53, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_ftp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_FTP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_HTTP_KEYWORD_LOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_DJ_HTTP_KEYWORD_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_HTTP_KEYWORD_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_HTTP_KEYWORD_LOG 51'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_HTTP_KEYWORD_LOG + delete from df_stat_log_daily dd where service=51 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_HTTP_KEYWORD_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 51, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_http_keyword_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_HTTP_KEYWORD_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_HTTP_REQ_LOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_DJ_HTTP_REQ_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_HTTP_REQ_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_HTTP_REQ_LOG 49'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_HTTP_REQ_LOG + delete from df_stat_log_daily dd where service=49 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_HTTP_REQ_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 49, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_http_req_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_HTTP_REQ_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_HTTP_RES_LOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_DJ_HTTP_RES_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_HTTP_RES_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_HTTP_RES_LOG 50'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_HTTP_RES_LOG + delete from df_stat_log_daily dd where service=50 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_HTTP_RES_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 50, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_http_res_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_HTTP_RES_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_IPSEC_LOG_DAILY +prompt ========================================= +prompt +create or replace procedure PRO_DJ_IPSEC_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_IPSEC_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_IPSEC_LOG 56'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_IPSEC_LOG + delete from df_stat_log_daily dd where service=56 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_IPSEC_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 56, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_ipsec_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_IPSEC_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_IP_PORT_LOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_DJ_IP_PORT_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_IP_PORT_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_IP_PORT_LOG 48'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_IP_PORT_LOG + delete from df_stat_log_daily dd where service=48 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_IP_PORT_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 48, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_ip_port_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_IP_PORT_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_L2TP_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DJ_L2TP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_L2TP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_L2TP_LOG 55'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_L2TP_LOG + delete from df_stat_log_daily dd where service=55 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_L2TP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 55, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_l2tp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_L2TP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_MAIL_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DJ_MAIL_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_MAIL_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_MAIL_LOG 60'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_MAIL_LOG + delete from df_stat_log_daily dd where service=60 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_MAIL_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 60, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_mail_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_MAIL_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + -------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_OPENVPN_LOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_DJ_OPENVPN_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_OPENVPN_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_OPENVPN_LOG 57'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_OPENVPN_LOG + delete from df_stat_log_daily dd where service=57 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_OPENVPN_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 57, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_openvpn_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_OPENVPN_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_PPTP_LOG_DAILY +prompt ======================================== +prompt +create or replace procedure PRO_DJ_PPTP_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_PPTP_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_PPTP_LOG 54'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_PPTP_LOG + delete from df_stat_log_daily dd where service=54 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_PPTP_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 54, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_pptp_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_PPTP_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_SSH_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DJ_SSH_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_SSH_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SSH_LOG 58'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_SSH_LOG + delete from df_stat_log_daily dd where service=58 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SSH_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 58, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_ssh_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SSH_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DJ_SSL_LOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_DJ_SSL_LOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJ_SSL_LOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SSL_LOG 59'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMDAYS, 'yyyy-mm-dd'); + RIQI_S := RIQI || '00:00:00'; + RIQI_E := RIQI || '23:59:59'; + --先删除要统计天统计的数据信息,避免补充历史日志统计信息时重复统计同一天数据。 + --DJ_SSL_LOG + delete from df_stat_log_daily dd where service=59 and dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SSL_LOG一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_daily(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_daily.nextval, CFG_ID, 59, shijian, shuliang,1 from(select CFG_ID,trunc(FOUND_TIME, ''DD'') as shijian,count(*) as shuliang from dj_ssl_log where FOUND_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd hh24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd hh24:mi:ss'') group by CFG_ID,trunc(FOUND_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SSL_LOG一天的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; + --------------------------------------- +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_LOG_MONTH +prompt ===================================== +prompt +create or replace procedure PRO_STAT_LOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_STAT_LOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_LOG all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from df_stat_log_month dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_LOG一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into df_stat_log_month(SEQ,CONFIG_ID,SERVICE,STAT_TIME,SUM,LOG_TYPE) (select seq_df_stat_log_month.nextval, CONFIG_ID, SERVICE, shijian, shuliang,LOG_TYPE from(select SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang,LOG_TYPE from df_stat_log_daily where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by LOG_TYPE,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_LOG一个月的日志开始 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/sqlupdate(20161116)services_request_log增加字段.sql b/sqlupdate/sqlupdate(20161116)services_request_log增加字段.sql new file mode 100644 index 0000000..c87d676 --- /dev/null +++ b/sqlupdate/sqlupdate(20161116)services_request_log增加字段.sql @@ -0,0 +1,6 @@ +-- Add/modify columns +alter table SERVICES_REQUEST_LOG add EXCEPTION_INFO VARCHAR2(1024) ; +-- Add comments to the columns +comment on column SERVICES_REQUEST_LOG.EXCEPTION_INFO + is '请求时发生的异常记录,不记录rest异常'; + diff --git a/sqlupdate/sqlupdate(20161117)services_request_log修改字段.sql b/sqlupdate/sqlupdate(20161117)services_request_log修改字段.sql new file mode 100644 index 0000000..d5eca65 --- /dev/null +++ b/sqlupdate/sqlupdate(20161117)services_request_log修改字段.sql @@ -0,0 +1,6 @@ +alter table services_request_log drop column EXCEPTION_INFO; +-- Add/modify columns +alter table SERVICES_REQUEST_LOG add EXCEPTION_INFO clob; +-- Add comments to the columns +comment on column SERVICES_REQUEST_LOG.EXCEPTION_INFO + is '请求时发生的异常记录,不记录rest异常'; diff --git a/sqlupdate/sqlupdate(20161121)报表调整.sql b/sqlupdate/sqlupdate(20161121)报表调整.sql new file mode 100644 index 0000000..dd9e7df --- /dev/null +++ b/sqlupdate/sqlupdate(20161121)报表调整.sql @@ -0,0 +1,737 @@ +GK_LOG +drop table DF_PZ_REPORT; +-- Create table +create table DF_PZ_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + CFG_ID NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER default 0 not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the table +comment on table DF_PZ_REPORT + is 'ܿʵʱͳƱ ñֻB־ݿ'; +-- Add comments to the columns +comment on column DF_PZ_REPORT.ACTIVE_SYS + is 'A棺4 +B棺2 +C棺1 +'; +comment on column DF_PZ_REPORT.REPORT_TIME + is '5'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_PZ_REPORT + add constraint PK_DF_PZ_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +--ʵʱ +-- Create table +create table DJ_PZ_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + CFG_ID NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER default 0 not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the table +comment on table DJ_PZ_REPORT + is 'ܿʵʱͳƱ ñֻB־ݿ'; +-- Add comments to the columns +comment on column DJ_PZ_REPORT.ACTIVE_SYS + is 'A棺4 +B棺2 +C棺1 +'; +comment on column DJ_PZ_REPORT.REPORT_TIME + is '5'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DJ_PZ_REPORT + add constraint PK_DJ_PZ_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +-- Create sequence +create sequence SEQ_DJ_PZ_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +-- Create sequence +create sequence SEQ_DF_STAT_LOG_HOUR +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; +-- Create sequence +create sequence SEQ_DJ_STAT_LOG_HOUR +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; +-- Create sequence +create sequence SEQ_DJ_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; +-- Create sequence +create sequence SEQ_DJ_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +ԭ洢̣СʱͳƣÿСʱÿӳ6ӽͳ +--------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2016/11/22, 14:28:39 -- +--------------------------------------------- + +spool ṹ洢.log + +prompt +prompt Creating table DF_STAT_LOG_DAILY +prompt ================================ +prompt +create table DF_STAT_LOG_DAILY +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_DAILY + add constraint PK_DF_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_DAILY on DF_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_STAT_LOG_HOUR +prompt =============================== +prompt +create table DF_STAT_LOG_HOUR +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_HOUR + add constraint PK_DF_STAT_LOG_HOUR primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_HOUR on DF_STAT_LOG_HOUR (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_STAT_LOG_MONTH +prompt ================================ +prompt +create table DF_STAT_LOG_MONTH +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_MONTH + add constraint PK_DF_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_MONTH on DF_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DJ_STAT_LOG_DAILY +prompt ================================ +prompt +create table DJ_STAT_LOG_DAILY +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DJ_STAT_LOG_DAILY + add constraint PK_DJ_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DJ_STAT_TIME_DAILY on DJ_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DJ_STAT_LOG_HOUR +prompt =============================== +prompt +create table DJ_STAT_LOG_HOUR +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DJ_STAT_LOG_HOUR + add constraint PK_DJ_STAT_LOG_HOUR primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DJ_STAT_TIME_HOUR on DJ_STAT_LOG_HOUR (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DJ_STAT_LOG_MONTH +prompt ================================ +prompt +create table DJ_STAT_LOG_MONTH +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DJ_STAT_LOG_MONTH + add constraint PK_DJ_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DJ_STAT_TIME_MONTH on DJ_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating procedure PRO_STAT_DFLOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DFSTAT_LOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_LOG_DAILY all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_STAT_LOG_DAILY(SEQ,ACTIVE_SYS,SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DF_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, CONFIG_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, CONFIG_ID,trunc(STAT_TIME, ''DD'') as shijian,sum(SUM) as shuliang from DF_STAT_LOG_HOUR where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:mi:ss'') group by ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_LOGһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_DFLOG_HOUR +prompt ====================================== +prompt +create or replace procedure PRO_STAT_DFLOG_HOUR(NUMHOURS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DFSTAT_LOG_HOUR'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_STAT_LOG_HOUR all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMHOURS/24,'yyyy-mm-dd HH24');--ָСʱǰǸСʱ + RIQI_S := RIQI || ':00:00'; + RIQI_E := RIQI || ':59:59'; + --ɾǰһͳƵϢ,ۼͳ + delete from DF_STAT_LOG_HOUR dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD HH24'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_LOG_HOURһСʱ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_STAT_LOG_HOUR(SEQ,ACTIVE_SYS, SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DF_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, CFG_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, CFG_ID, trunc(REPORT_TIME, ''HH'') as shijian, sum(SUM) as shuliang from DF_PZ_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,CFG_ID,trunc(REPORT_TIME, ''HH'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_LOG_HOURһСʱ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_DFLOG_MONTH +prompt ======================================= +prompt +create or replace procedure PRO_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DF_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, CONFIG_ID, shijian, shuliang from(select ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_DJLOG_DAILY +prompt ======================================= +prompt +create or replace procedure PRO_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJSTAT_LOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DJ_LOG_DAILY all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DJ_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDJ_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_STAT_LOG_DAILY(SEQ,ACTIVE_SYS,SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DJ_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, CONFIG_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, CONFIG_ID,trunc(STAT_TIME, ''DD'') as shijian,sum(SUM) as shuliang from DJ_STAT_LOG_HOUR where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:mi:ss'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:mi:ss'') group by ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDJ_LOGһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_DJLOG_HOUR +prompt ====================================== +prompt +create or replace procedure PRO_STAT_DJLOG_HOUR(NUMHOURS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DJSTAT_LOG_HOUR'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DJ_STAT_LOG_HOUR all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(sysdate-NUMHOURS/24,'yyyy-mm-dd HH24');--ָСʱǰǸСʱ + RIQI_S := RIQI || ':00:00'; + RIQI_E := RIQI || ':59:59'; + --ɾǰһͳƵϢ,ۼͳ + delete from DJ_STAT_LOG_HOUR dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD HH24'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDJ_LOG_HOURһСʱ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_STAT_LOG_HOUR(SEQ,ACTIVE_SYS, SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DJ_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, CFG_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, CFG_ID, trunc(REPORT_TIME, ''HH'') as shijian, sum(SUM) as shuliang from DJ_PZ_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,CFG_ID,trunc(REPORT_TIME, ''HH'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDJ_LOG_HOURһСʱ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_STAT_DJLOG_MONTH +prompt ======================================= +prompt +create or replace procedure PRO_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_STAT_DJLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DJ_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DJ_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDJ_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,CONFIG_ID,STAT_TIME,SUM) (select SEQ_DF_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, CONFIG_ID, shijian, shuliang from(select ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,CONFIG_ID,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDJ_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/sqlupdate(20161124)调整字段类型.sql b/sqlupdate/sqlupdate(20161124)调整字段类型.sql new file mode 100644 index 0000000..bc37f96 --- /dev/null +++ b/sqlupdate/sqlupdate(20161124)调整字段类型.sql @@ -0,0 +1,3 @@ +GK_PZ +--޸ֶͣ +alter table DJ_IPSEC_LOG MODIFY ISAKMP_MODE NUMBER; \ No newline at end of file diff --git a/sqlupdate/sqlupdate(20161208)services_request_log增加字段.sql b/sqlupdate/sqlupdate(20161208)services_request_log增加字段.sql new file mode 100644 index 0000000..b522a33 --- /dev/null +++ b/sqlupdate/sqlupdate(20161208)services_request_log增加字段.sql @@ -0,0 +1,6 @@ +-- Add/modify columns +alter table SERVICES_REQUEST_LOG add SERVER_IP VARCHAR2(200) ; +-- Add comments to the columns +comment on column SERVICES_REQUEST_LOG.SERVER_IP + is '服务器IP'; + diff --git a/sqlupdate/sqlupdate(20161209)所有日志表增加一个字段.sql b/sqlupdate/sqlupdate(20161209)所有日志表增加一个字段.sql new file mode 100644 index 0000000..4302f41 --- /dev/null +++ b/sqlupdate/sqlupdate(20161209)所有日志表增加一个字段.sql @@ -0,0 +1,186 @@ +-- Add/modify columns +alter table df_dns_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_dns_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_ftp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_ftp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_http_keyword_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_http_keyword_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_http_req_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_http_req_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_http_res_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_http_res_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_ipsec_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_ipsec_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_ip_port_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_ip_port_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_l2tp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_l2tp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_mail_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_mail_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_openvpn_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_openvpn_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + + -- Add/modify columns +alter table df_pptp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_pptp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_ssh_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_ssh_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table df_ssl_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column df_ssl_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + +-- Add/modify columns +alter table dj_dns_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_dns_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_ftp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_ftp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_http_keyword_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_http_keyword_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_http_req_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_http_req_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_http_res_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_http_res_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_ipsec_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_ipsec_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_ip_port_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_ip_port_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_l2tp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_l2tp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_mail_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_mail_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_openvpn_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_openvpn_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + + -- Add/modify columns +alter table dj_pptp_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_pptp_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_ssh_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_ssh_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + +-- Add/modify columns +alter table dj_ssl_log add NEST_ADDR_LIST VARCHAR2(1024); +-- Add comments to the columns +comment on column dj_ssl_log.NEST_ADDR_LIST + is '嵌套地址列表,用于辅助对准查询,可空'; + + + + + + + diff --git a/sqlupdate/sqlupdate(20161223)增加日志表.sql b/sqlupdate/sqlupdate(20161223)增加日志表.sql new file mode 100644 index 0000000..8cab312 --- /dev/null +++ b/sqlupdate/sqlupdate(20161223)增加日志表.sql @@ -0,0 +1,56 @@ +--------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2014/12/23, 15:43:17 -- +--------------------------------------------- + +spool sqlupdate(20161223)增加日志表.log + +prompt +prompt Creating table DF_TUNNEL_RANDOM_LOG +prompt =================================== +prompt +create table DF_TUNNEL_RANDOM_LOG +( + ID NUMBER not null, + CFG_ID NUMBER not null, + FOUND_TIME DATE not null, + RECV_TIME DATE not null, + OVER_ID NUMBER not null, + PROTOCOL VARCHAR2(20) not null, + SERVER_IP VARCHAR2(64) not null, + CLIENT_IP VARCHAR2(64) not null, + SERVER_PORT INTEGER not null, + CLIENT_PORT INTEGER not null, + NEST_PROTOCOL VARCHAR2(20), + NEST_SERVER_IP VARCHAR2(64), + NEST_CLIENT_IP VARCHAR2(64), + NEST_SERVER_PORT INTEGER, + NEST_CLIENT_PORT INTEGER, + SERVICE_TYPE INTEGER not null, + ENTRANCE_ID NUMBER not null, + CLJ_IP VARCHAR2(64) not null, + SCENE_FILE VARCHAR2(256), + ACTION INTEGER, + SERVER_LOCATE VARCHAR2(1024), + CLIENT_LOCATE VARCHAR2(1024), + INJECTED_PKT_FILE VARCHAR2(256), + NEST_ADDR_LIST VARCHAR2(1024), + TUNNEL_NAME VARCHAR2(1024) +) +; +alter table DF_TUNNEL_RANDOM_LOG + add constraint PK_DF_TUNNEL_RANDOM_LOG primary key (ID); + +prompt +prompt Creating sequence SEQ_DF_TUNNEL_RANDOM_LOG +prompt ========================================== +prompt +create sequence SEQ_DF_TUNNEL_RANDOM_LOG +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + + +spool off diff --git a/sqlupdate/sqlupdate(201700208实时统计、报表新增监测业务)表、序列、存储过程.sql b/sqlupdate/sqlupdate(201700208实时统计、报表新增监测业务)表、序列、存储过程.sql new file mode 100644 index 0000000..f6a13b9 --- /dev/null +++ b/sqlupdate/sqlupdate(201700208实时统计、报表新增监测业务)表、序列、存储过程.sql @@ -0,0 +1,1123 @@ +-------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2015/3/16, 11:17:23 -- +-------------------------------------------- + +spool sqlupdate(201700208实时统计、报表新增监测业务)表、序列、存储过程.log + +prompt +prompt Creating table DJ_ATTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DJ_ATTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ATTR_TYPE INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_ATTR_STAT_LOG_DAILY + add constraint PK_DJ_ATTR_STAT_LOG_DAILY primary key (SEQ); +create index DJ_ATTR_STAT_TIME_DAILY on DJ_ATTR_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_ATTR_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DJ_ATTR_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ATTR_TYPE INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_ATTR_STAT_LOG_MONTH + add constraint PK_DJ_ATTR_STAT_LOG_MONTH primary key (SEQ); +create index DJ_ATTR_STAT_TIME_MONTH on DJ_ATTR_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_ATTR_TYPE_REPORT +prompt ================================== +prompt +create table DJ_ATTR_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + ATTR_TYPE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DJ_ATTR_TYPE_REPORT + is '管控性质实时统计表 该表只在B版日志数据库中'; +comment on column DJ_ATTR_TYPE_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DJ_ATTR_TYPE_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DJ_ATTR_TYPE_REPORT + add constraint PK_DJ_ATTR_TYPE_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_DESTIP_COUNTRY_REPORT +prompt ======================================= +prompt +create table DJ_DESTIP_COUNTRY_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + DEST_COUNTRY VARCHAR2(256) not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +comment on table DJ_DESTIP_COUNTRY_REPORT + is '该表只在B版日志数据库中'; +comment on column DJ_DESTIP_COUNTRY_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; +alter table DJ_DESTIP_COUNTRY_REPORT + add constraint PK_DJ_DESTIP_COUNTRY_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_DESTIP_STAT_LOG_DAILY +prompt ======================================= +prompt +create table DJ_DESTIP_STAT_LOG_DAILY +( + SEQ NUMBER not null, + DEST_COUNTRY VARCHAR2(256) not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_DESTIP_STAT_LOG_DAILY + add constraint PK_DJ_DESTIP_STAT_LOG_DAILY primary key (SEQ); +create index DJ_DESTIP_STAT_TIME_DAILY on DJ_DESTIP_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_DESTIP_STAT_LOG_MONTH +prompt ======================================= +prompt +create table DJ_DESTIP_STAT_LOG_MONTH +( + SEQ NUMBER not null, + DEST_COUNTRY VARCHAR2(256) not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_DESTIP_STAT_LOG_MONTH + add constraint PK_DJ_DESTIP_STAT_LOG_MONTH primary key (SEQ); +create index DJ_DESTIP_STAT_TIME_MONTH on DJ_DESTIP_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_ENTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DJ_ENTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ENTRANCE_ID INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_ENTR_STAT_LOG_DAILY + add constraint PK_DJ_ENTR_STAT_LOG_DAILY primary key (SEQ); +create index DJ_ENTR_STAT_TIME_DAILY on DJ_ENTR_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_ENTR_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DJ_ENTR_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ENTRANCE_ID INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_ENTR_STAT_LOG_MONTH + add constraint PK_DJ_ENTR_STAT_LOG_MONTH primary key (SEQ); +create index DJ_ENTR_STAT_TIME_MONTH on DJ_ENTR_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_REPORT +prompt ============================= +prompt +create table DJ_LWHH_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + LWHH INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DJ_LWHH_REPORT + is '管控来文函号实时统计表 该表只在B版日志数据库中'; +comment on column DJ_LWHH_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DJ_LWHH_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DJ_LWHH_REPORT + add constraint PK_DJ_LWHH_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_LWHH_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DJ_LWHH_STAT_LOG_DAILY +( + SEQ NUMBER not null, + LWHH INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_LWHH_STAT_LOG_DAILY + add constraint PK_DJ_LWHH_STAT_LOG_DAILY primary key (SEQ); +create index DJ_LWHH_STAT_TIME_DAILY on DJ_LWHH_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DJ_LWHH_STAT_LOG_MONTH +( + SEQ NUMBER not null, + LWHH INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_LWHH_STAT_LOG_MONTH + add constraint PK_DJ_LWHH_STAT_LOG_MONTH primary key (SEQ); +create index DJ_LWHH_STAT_TIME_MONTH on DJ_LWHH_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_SERVICE_REPORT +prompt ================================ +prompt +create table DJ_SERVICE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DJ_SERVICE_REPORT + is '该表只在B版日志数据库中'; +alter table DJ_SERVICE_REPORT + add constraint PK_DJ_SERVICE_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_SRCIP_DOMESTIC_REPORT +prompt ======================================= +prompt +create table DJ_SRCIP_DOMESTIC_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256), + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +comment on table DJ_SRCIP_DOMESTIC_REPORT + is '该表只在B版日志数据库中'; +comment on column DJ_SRCIP_DOMESTIC_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; +alter table DJ_SRCIP_DOMESTIC_REPORT + add constraint PK_DJ_SRCIP_DOMESTIC_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_SRCIP_STAT_LOG_DAILY +prompt ====================================== +prompt +create table DJ_SRCIP_STAT_LOG_DAILY +( + SEQ NUMBER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256), + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_SRCIP_STAT_LOG_DAILY + add constraint PK_DJ_SRCIP_STAT_LOG_DAILY primary key (SEQ); +create index DJ_SRCIP_STAT_LOG_DAILY on DJ_SRCIP_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_SRCIP_STAT_LOG_MONTH +prompt ====================================== +prompt +create table DJ_SRCIP_STAT_LOG_MONTH +( + SEQ NUMBER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256), + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_SRCIP_STAT_LOG_MONTH + add constraint PK_DJ_SRCIP_STAT_LOG_MONTH primary key (SEQ); +create index DJ_SRCIP_STAT_TIME_MONTH on DJ_SRCIP_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_TAG_REPORT +prompt ============================ +prompt +create table DJ_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + TAG INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +comment on table DJ_TAG_REPORT + is '该表只在B版日志数据库中'; +comment on column DJ_TAG_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; +alter table DJ_TAG_REPORT + add constraint PK_DJ_TAG_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DJ_TAG_STAT_LOG_DAILY +prompt ==================================== +prompt +create table DJ_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + TAG INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_TAG_STAT_LOG_DAILY + add constraint PK_DJ_TAG_STAT_LOG_DAILY primary key (SEQ); +create index DJ_TAG_STAT_TIME_DAILY on DJ_TAG_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_TAG_STAT_LOG_MONTH +prompt ==================================== +prompt +create table DJ_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + TAG INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DJ_TAG_STAT_LOG_MONTH + add constraint PK_DJ_TAG_STAT_LOG_MONTH primary key (SEQ); +create index DJ_TAG_STAT_TIME_MONTH on DJ_TAG_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating sequence SEQ_DJ_ATTR_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DJ_ATTR_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_ATTR_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DJ_ATTR_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_ATTR_TYPE_REPORT +prompt ========================================= +prompt +create sequence SEQ_DJ_ATTR_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_DESTIP_COUNTRY_REPORT +prompt ============================================== +prompt +create sequence SEQ_DJ_DESTIP_COUNTRY_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_DESTIP_STAT_LOG_DAILY +prompt ============================================== +prompt +create sequence SEQ_DJ_DESTIP_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_DESTIP_STAT_LOG_MONTH +prompt ============================================== +prompt +create sequence SEQ_DJ_DESTIP_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_ENTR_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DJ_ENTR_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_ENTR_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DJ_ENTR_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_REPORT +prompt ==================================== +prompt +create sequence SEQ_DJ_LWHH_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DJ_LWHH_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DJ_LWHH_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SERVICE_REPORT +prompt ======================================= +prompt +create sequence SEQ_DJ_SERVICE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_DOMESTIC_REPORT +prompt ============================================== +prompt +create sequence SEQ_DJ_SRCIP_DOMESTIC_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_STAT_LOG_DAILY +prompt ============================================= +prompt +create sequence SEQ_DJ_SRCIP_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_STAT_LOG_MONTH +prompt ============================================= +prompt +create sequence SEQ_DJ_SRCIP_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_TAG_REPORT +prompt =================================== +prompt +create sequence SEQ_DJ_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 21 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_TAG_STAT_LOG_DAILY +prompt =========================================== +prompt +create sequence SEQ_DJ_TAG_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_TAG_STAT_LOG_MONTH +prompt =========================================== +prompt +create sequence SEQ_DJ_TAG_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating procedure PRO_ATTR_STAT_DJLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_ATTR_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ATTR_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_ATTR_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_ATTR_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_ATTR_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_ATTR_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_ATTR_TYPE_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_ATTR_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ATTR_STAT_DJLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_ATTR_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ATTR_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_ATTR_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_ATTR_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_ATTR_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_ATTR_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_ATTR_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_ATTR_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_ATTR_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DESTIP_STAT_DJLOG_DAILY +prompt ============================================== +prompt +create or replace procedure PRO_DESTIP_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DESTIP_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_DESTIP_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_DESTIP_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_DESTIP_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,DEST_COUNTRY,STAT_TIME,SUM) (select SEQ_DJ_DESTIP_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, DEST_COUNTRY, shijian, shuliang from(select ACTIVE_SYS, SERVICE, DEST_COUNTRY, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_DESTIP_country_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,DEST_COUNTRY,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_DESTIP_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DESTIP_STAT_DJLOG_MONTH +prompt ============================================== +prompt +create or replace procedure PRO_DESTIP_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DESTIP_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_DESTIP_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_DESTIP_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_DESTIP_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_DESTIP_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,DEST_COUNTRY,STAT_TIME,SUM) (select SEQ_DJ_DESTIP_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, DEST_COUNTRY, shijian, shuliang from(select ACTIVE_SYS,SERVICE,DEST_COUNTRY,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_DESTIP_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,DEST_COUNTRY,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_DESTIP_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ENTR_STAT_DJLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_ENTR_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ENTR_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_ENTR_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_ENTR_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_ENTR_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,ENTRANCE_ID,STAT_TIME,SUM) (select SEQ_DJ_ENTR_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, ENTRANCE_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, GJ_CK_ID ENTRANCE_ID, trunc(CAP_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_CK_STAT_LOG where CAP_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,GJ_CK_ID,trunc(CAP_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_ENTR_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ENTR_STAT_DJLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_ENTR_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ENTR_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_ENTR_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_ENTR_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_ENTR_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_ENTR_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,ENTRANCE_ID,STAT_TIME,SUM) (select SEQ_DJ_ENTR_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, ENTRANCE_ID, shijian, shuliang from(select ACTIVE_SYS,SERVICE,ENTRANCE_ID,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_ENTR_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,ENTRANCE_ID,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_ENTR_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_STAT_DJLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_LWHH_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,STAT_TIME,SUM) (select SEQ_DJ_LWHH_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, LWHH, shijian, shuliang from(select ACTIVE_SYS, SERVICE, LWHH, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_LWHH_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_STAT_DJLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_LWHH_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_LWHH_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,STAT_TIME,SUM) (select SEQ_DJ_LWHH_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_LWHH_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRCIP_STAT_DJLOG_DAILY +prompt ============================================= +prompt +create or replace procedure PRO_SRCIP_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,SRC_CITY,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, shijian, shuliang from(select ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_SRCIP_DOMESTIC_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,SRC_CITY,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRCIP_STAT_DJLOG_MONTH +prompt ============================================= +prompt +create or replace procedure PRO_SRCIP_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_SRCIP_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_TAG_STAT_DJLOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_TAG_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_TAG_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_STAT_LOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_TAG_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,TAG,STAT_TIME,SUM) (select SEQ_DJ_TAG_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, TAG, shijian, shuliang from(select ACTIVE_SYS, SERVICE, TAG, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,TAG,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_TAG_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_TAG_STAT_DJLOG_MONTH +prompt =========================================== +prompt +create or replace procedure PRO_TAG_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_TAG_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_TAG_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_TAG_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,TAG,STAT_TIME,SUM) (select SEQ_DJ_TAG_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_TAG_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/sqlupdate(201700308)http_req、res增加字段.sql b/sqlupdate/sqlupdate(201700308)http_req、res增加字段.sql new file mode 100644 index 0000000..afa7482 --- /dev/null +++ b/sqlupdate/sqlupdate(201700308)http_req、res增加字段.sql @@ -0,0 +1,28 @@ +-- Add/modify columns +alter table DF_HTTP_REQ_LOG add COOKIE VARCHAR2(1024); +alter table DF_HTTP_REQ_LOG add REFERER VARCHAR2(1024); +alter table DF_HTTP_REQ_LOG add UA VARCHAR2(1024); +alter table DF_HTTP_REQ_LOG add USER_DEFINE_KEY VARCHAR2(1024); +alter table DF_HTTP_REQ_LOG add USER_DEFINE_VALUE VARCHAR2(1024); + +-- Add/modify columns +alter table DJ_HTTP_REQ_LOG add COOKIE VARCHAR2(1024); +alter table DJ_HTTP_REQ_LOG add REFERER VARCHAR2(1024); +alter table DJ_HTTP_REQ_LOG add UA VARCHAR2(1024); +alter table DJ_HTTP_REQ_LOG add USER_DEFINE_KEY VARCHAR2(1024); +alter table DJ_HTTP_REQ_LOG add USER_DEFINE_VALUE VARCHAR2(1024); + +-- Add/modify columns +alter table DF_HTTP_RES_LOG add SET_COOKIE VARCHAR2(1024); +alter table DF_HTTP_RES_LOG add CONTENT_LEN VARCHAR2(1024); +alter table DF_HTTP_RES_LOG add CONTENT_TYPE VARCHAR2(1024); +alter table DF_HTTP_RES_LOG add USER_DEFINE_KEY VARCHAR2(1024); +alter table DF_HTTP_RES_LOG add USER_DEFINE_VALUE VARCHAR2(1024); + +-- Add/modify columns +alter table DJ_HTTP_RES_LOG add SET_COOKIE VARCHAR2(1024); +alter table DJ_HTTP_RES_LOG add CONTENT_LEN VARCHAR2(1024); +alter table DJ_HTTP_RES_LOG add CONTENT_TYPE VARCHAR2(1024); +alter table DJ_HTTP_RES_LOG add USER_DEFINE_KEY VARCHAR2(1024); +alter table DJ_HTTP_RES_LOG add USER_DEFINE_VALUE VARCHAR2(1024); + diff --git a/sqlupdate/sqlupdate(20170104实时统计修改)修改实时统计表.sql b/sqlupdate/sqlupdate(20170104实时统计修改)修改实时统计表.sql new file mode 100644 index 0000000..00f080f --- /dev/null +++ b/sqlupdate/sqlupdate(20170104实时统计修改)修改实时统计表.sql @@ -0,0 +1,35 @@ +--B库更改 +--1. 修改DF_DESTIP_COUNTRY_REPORT增加界面私有标签列SERVICE。 +-- Add/modify columns +alter table DF_DESTIP_COUNTRY_REPORT add SERVICE INTEGER not null; +-- Add comments to the columns +comment on column DF_DESTIP_COUNTRY_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; + +--2. 修改DF_SRCIP _DOMESTIC_REPORT增加界面私有标签列SERVICE。 + -- Add/modify columns +alter table DF_SRCIP_DOMESTIC_REPORT add SERVICE INTEGER not null; +-- Add comments to the columns +comment on column DF_SRCIP_DOMESTIC_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; + +--3. 修改DF_TAG_REPORT,增加界面私有标签列SERVICE + -- Add/modify columns +alter table DF_TAG_REPORT add SERVICE INTEGER not null; +-- Add comments to the columns +comment on column DF_TAG_REPORT.SERVICE + is '界面私有标签(界面菜单ID),值小于10000'; + -- Add/modify columns + +--4. 修改DJ_CK_STAT_LOG,增加列active_sys列 +alter table DJ_CK_STAT_LOG add ACTIVE_SYS INTEGER not null; +-- Add comments to the columns +comment on column DJ_CK_STAT_LOG.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; + + + + + + + diff --git a/sqlupdate/sqlupdate(20170104实时统计新增)增加日志表.sql b/sqlupdate/sqlupdate(20170104实时统计新增)增加日志表.sql new file mode 100644 index 0000000..4ae6763 --- /dev/null +++ b/sqlupdate/sqlupdate(20170104实时统计新增)增加日志表.sql @@ -0,0 +1,144 @@ +------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2015/1/4, 11:41:22 -- +------------------------------------------- + +spool sqlupdate(20170104实时统计新增)增加日志表.log + +prompt +prompt Creating table DF_ATTR_TYPE_REPORT +prompt ================================== +prompt +create table DF_ATTR_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + ATTR_TYPE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DF_ATTR_TYPE_REPORT + is '管控性质实时统计表 该表只在B版日志数据库中'; +comment on column DF_ATTR_TYPE_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DF_ATTR_TYPE_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DF_ATTR_TYPE_REPORT + add constraint PK_DF_ATTR_TYPE_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DF_ENTRANCE_REPORT +prompt ================================= +prompt +create table DF_ENTRANCE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + ENTRANCE_ID NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DF_ENTRANCE_REPORT + is '管控局点实时统计表 该表只在B版日志数据库中'; +comment on column DF_ENTRANCE_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DF_ENTRANCE_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DF_ENTRANCE_REPORT + add constraint PK_DF_ENTRANCE_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DF_LWHH_REPORT +prompt ============================= +prompt +create table DF_LWHH_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + LWHH INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DF_LWHH_REPORT + is '管控来文函号实时统计表 该表只在B版日志数据库中'; +comment on column DF_LWHH_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DF_LWHH_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DF_LWHH_REPORT + add constraint PK_DF_LWHH_REPORT primary key (STAT_ID); + +prompt +prompt Creating table DF_PVT_TAG_REPORT +prompt ================================ +prompt +create table DF_PVT_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +; +comment on table DF_PVT_TAG_REPORT + is '管控标签实时统计表 该表只在B版日志数据库中'; +comment on column DF_PVT_TAG_REPORT.ACTIVE_SYS + is 'A版:4 B版:2 C版:1'; +comment on column DF_PVT_TAG_REPORT.REPORT_TIME + is '粒度5分钟'; +alter table DF_PVT_TAG_REPORT + add constraint PK_DF_PVT_TAG_REPORT primary key (STAT_ID); + +prompt +prompt Creating sequence SEQ_DF_ATTR_TYPE_REPORT +prompt ========================================= +prompt +create sequence SEQ_DF_ATTR_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ENTRANCE_REPORT +prompt ======================================== +prompt +create sequence SEQ_DF_ENTRANCE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_REPORT +prompt ==================================== +prompt +create sequence SEQ_DF_LWHH_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_PVT_TAG_REPORT +prompt ======================================= +prompt +create sequence SEQ_DF_PVT_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + + +spool off diff --git a/sqlupdate/sqlupdate(20170105新增报表表结构及存储过程).sql b/sqlupdate/sqlupdate(20170105新增报表表结构及存储过程).sql new file mode 100644 index 0000000..85ba7b5 --- /dev/null +++ b/sqlupdate/sqlupdate(20170105新增报表表结构及存储过程).sql @@ -0,0 +1,1260 @@ +------------------------------------------ +-- Export file for user GK_LOG -- +-- Created by dell on 2017/1/8, 9:14:26 -- +------------------------------------------ + +spool sqlupdate(20170105ṹ洢).log + +prompt +prompt Creating table DF_ATTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DF_ATTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ATTR_TYPE INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_ATTR_STAT_LOG_DAILY + add constraint PK_DF_ATTR_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_ATTR_STAT_TIME_DAILY on DF_ATTR_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_ATTR_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DF_ATTR_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ATTR_TYPE INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_ATTR_STAT_LOG_MONTH + add constraint PK_DF_ATTR_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_ATTR_STAT_TIME_MONTH on DF_ATTR_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_ATTR_TYPE_REPORT +prompt ================================== +prompt +create table DF_ATTR_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + ATTR_TYPE INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +comment on table DF_ATTR_TYPE_REPORT + is 'ܿʵʱͳƱ ñֻB־ݿ'; +comment on column DF_ATTR_TYPE_REPORT.ACTIVE_SYS + is 'A棺4 B棺2 C棺1'; +comment on column DF_ATTR_TYPE_REPORT.REPORT_TIME + is '5'; +alter table DF_ATTR_TYPE_REPORT + add constraint PK_DF_ATTR_TYPE_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_ENTRANCE_REPORT +prompt ================================= +prompt +create table DF_ENTRANCE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + ENTRANCE_ID NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +comment on table DF_ENTRANCE_REPORT + is 'ܿؾֵʵʱͳƱ ñֻB־ݿ'; +comment on column DF_ENTRANCE_REPORT.ACTIVE_SYS + is 'A棺4 B棺2 C棺1'; +comment on column DF_ENTRANCE_REPORT.REPORT_TIME + is '5'; +alter table DF_ENTRANCE_REPORT + add constraint PK_DF_ENTRANCE_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_ENTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DF_ENTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ENTRANCE_ID INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_ENTR_STAT_LOG_DAILY + add constraint PK_DF_ENTR_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_ENTR_STAT_TIME_DAILY on DF_ENTR_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_ENTR_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DF_ENTR_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ENTRANCE_ID INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_ENTR_STAT_LOG_MONTH + add constraint PK_DF_ENTR_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_ENTR_STAT_TIME_MONTH on DF_ENTR_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_LWHH_REPORT +prompt ============================= +prompt +create table DF_LWHH_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + LWHH INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +comment on table DF_LWHH_REPORT + is 'ܿĺʵʱͳƱ ñֻB־ݿ'; +comment on column DF_LWHH_REPORT.ACTIVE_SYS + is 'A棺4 B棺2 C棺1'; +comment on column DF_LWHH_REPORT.REPORT_TIME + is '5'; +alter table DF_LWHH_REPORT + add constraint PK_DF_LWHH_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_LWHH_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DF_LWHH_STAT_LOG_DAILY +( + SEQ NUMBER not null, + LWHH INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_LWHH_STAT_LOG_DAILY + add constraint PK_DF_LWHH_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_LWHH_STAT_TIME_DAILY on DF_LWHH_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_LWHH_STAT_LOG_MONTH +prompt ===================================== +prompt +create table DF_LWHH_STAT_LOG_MONTH +( + SEQ NUMBER not null, + LWHH INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_LWHH_STAT_LOG_MONTH + add constraint PK_DF_LWHH_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_LWHH_STAT_TIME_MONTH on DF_LWHH_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_STAT_LOG_DAILY +prompt ================================ +prompt +create table DF_STAT_LOG_DAILY +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_DAILY + add constraint PK_DF_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_DAILY on DF_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_STAT_LOG_HOUR +prompt =============================== +prompt +create table DF_STAT_LOG_HOUR +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_HOUR + add constraint PK_DF_STAT_LOG_HOUR primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_HOUR on DF_STAT_LOG_HOUR (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_STAT_LOG_MONTH +prompt ================================ +prompt +create table DF_STAT_LOG_MONTH +( + SEQ NUMBER not null, + CONFIG_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_STAT_LOG_MONTH + add constraint PK_DF_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_STAT_TIME_MONTH on DF_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_TAG_REPORT +prompt ============================ +prompt +create table DF_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + TAG INTEGER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +comment on table DF_TAG_REPORT + is 'ñֻB־ݿ'; +comment on column DF_TAG_REPORT.SERVICE + is '˽бǩ˵ID,ֵС10000'; +alter table DF_TAG_REPORT + add constraint PK_DF_TAG_REPORT primary key (STAT_ID) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_TAG_STAT_LOG_DAILY +prompt ==================================== +prompt +create table DF_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + TAG INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_TAG_STAT_LOG_DAILY + add constraint PK_DF_TAG_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_TAG_STAT_TIME_DAILY on DF_TAG_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_TAG_STAT_LOG_MONTH +prompt ==================================== +prompt +create table DF_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + TAG INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +alter table DF_TAG_STAT_LOG_MONTH + add constraint PK_DF_TAG_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_TAG_STAT_TIME_MONTH on DF_TAG_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating sequence SEQ_DF_ATTR_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DF_ATTR_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ATTR_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DF_ATTR_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ATTR_TYPE_REPORT +prompt ========================================= +prompt +create sequence SEQ_DF_ATTR_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ENTRANCE_REPORT +prompt ======================================== +prompt +create sequence SEQ_DF_ENTRANCE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ENTR_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DF_ENTR_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_ENTR_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DF_ENTR_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_REPORT +prompt ==================================== +prompt +create sequence SEQ_DF_LWHH_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_STAT_LOG_DAILY +prompt ============================================ +prompt +create sequence SEQ_DF_LWHH_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_STAT_LOG_MONTH +prompt ============================================ +prompt +create sequence SEQ_DF_LWHH_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_TAG_REPORT +prompt =================================== +prompt +create sequence SEQ_DF_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_TAG_STAT_LOG_DAILY +prompt =========================================== +prompt +create sequence SEQ_DF_TAG_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_TAG_STAT_LOG_MONTH +prompt =========================================== +prompt +create sequence SEQ_DF_TAG_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating procedure PRO_ATTR_STAT_DFLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_ATTR_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ATTR_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_ATTR_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_ATTR_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_ATTR_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_ATTR_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_ATTR_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_ATTR_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ATTR_STAT_DFLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_ATTR_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ATTR_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_ATTR_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_ATTR_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_ATTR_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_ATTR_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_ATTR_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_ATTR_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_ATTR_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ENTR_STAT_DFLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_ENTR_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ENTR_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_ENTR_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_ENTR_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_ENTR_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,ENTRANCE_ID,STAT_TIME,SUM) (select SEQ_DF_ENTR_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, ENTRANCE_ID, shijian, shuliang from(select ACTIVE_SYS, SERVICE, ENTRANCE_ID, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_ENTR_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,ENTRANCE_ID,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_ENTR_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_ENTR_STAT_DFLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_ENTR_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_ENTR_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_ENTR_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_ENTR_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_ENTR_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_ENTR_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,ENTRANCE_ID,STAT_TIME,SUM) (select SEQ_DF_ENTR_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, ENTRANCE_ID, shijian, shuliang from(select ACTIVE_SYS,SERVICE,ENTRANCE_ID,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_ENTR_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,ENTRANCE_ID,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_ENTR_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_STAT_DFLOG_DAILY +prompt ============================================ +prompt +create or replace procedure PRO_LWHH_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_LWHH_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_LWHH_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,STAT_TIME,SUM) (select SEQ_DF_LWHH_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, LWHH, shijian, shuliang from(select ACTIVE_SYS, SERVICE, LWHH, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_LWHH_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_LWHH_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_STAT_DFLOG_MONTH +prompt ============================================ +prompt +create or replace procedure PRO_LWHH_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_LWHH_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_LWHH_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_LWHH_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,STAT_TIME,SUM) (select SEQ_DF_LWHH_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_LWHH_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_LWHH_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_TAG_STAT_DFLOG_DAILY +prompt =========================================== +prompt +create or replace procedure PRO_TAG_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_TAG_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_TAG_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,TAG,STAT_TIME,SUM) (select SEQ_DF_TAG_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, TAG, shijian, shuliang from(select ACTIVE_SYS, SERVICE, TAG, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,TAG,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_TAG_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_TAG_STAT_DFLOG_MONTH +prompt =========================================== +prompt +create or replace procedure PRO_TAG_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_TAG_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_TAG_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,TAG,STAT_TIME,SUM) (select SEQ_DF_TAG_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_TAG_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/sqlupdate(20170106新增报表表结构及存储过程).sql b/sqlupdate/sqlupdate(20170106新增报表表结构及存储过程).sql new file mode 100644 index 0000000..1c1194c --- /dev/null +++ b/sqlupdate/sqlupdate(20170106新增报表表结构及存储过程).sql @@ -0,0 +1,449 @@ +------------------------------------------ +-- Export file for user GK_LOG -- +-- Created by dell on 2017/1/8, 9:17:11 -- +------------------------------------------ + +spool sqlupdate(20170106ṹ洢).log + +prompt +prompt Creating table DF_DESTIP_STAT_LOG_DAILY +prompt ======================================= +prompt +create table DF_DESTIP_STAT_LOG_DAILY +( + SEQ NUMBER not null, + DEST_COUNTRY VARCHAR2(256) not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 16K + next 8K + minextents 1 + maxextents unlimited + ); +alter table DF_DESTIP_STAT_LOG_DAILY + add constraint PK_DF_DESTIP_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_DESTIP_STAT_TIME_DAILY on DF_DESTIP_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_DESTIP_STAT_LOG_MONTH +prompt ======================================= +prompt +create table DF_DESTIP_STAT_LOG_MONTH +( + SEQ NUMBER not null, + DEST_COUNTRY VARCHAR2(256) not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 16K + next 8K + minextents 1 + maxextents unlimited + ); +alter table DF_DESTIP_STAT_LOG_MONTH + add constraint PK_DF_DESTIP_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_DESTIP_STAT_TIME_MONTH on DF_DESTIP_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_SRCIP_STAT_LOG_DAILY +prompt ====================================== +prompt +create table DF_SRCIP_STAT_LOG_DAILY +( + SEQ NUMBER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256), + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 16K + next 8K + minextents 1 + maxextents unlimited + ); +alter table DF_SRCIP_STAT_LOG_DAILY + add constraint PK_DF_SRCIP_STAT_LOG_DAILY primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_SRCIP_STAT_LOG_DAILY on DF_SRCIP_STAT_LOG_DAILY (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating table DF_SRCIP_STAT_LOG_MONTH +prompt ====================================== +prompt +create table DF_SRCIP_STAT_LOG_MONTH +( + SEQ NUMBER not null, + SRC_PROVINCE VARCHAR2(256) not null, + SRC_CITY VARCHAR2(256), + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +tablespace GK_LOG + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 16K + next 8K + minextents 1 + maxextents unlimited + ); +alter table DF_SRCIP_STAT_LOG_MONTH + add constraint PK_DF_SRCIP_STAT_LOG_MONTH primary key (SEQ) + using index + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +create index DF_SRCIP_STAT_TIME_MONTH on DF_SRCIP_STAT_LOG_MONTH (STAT_TIME) + tablespace GK_LOG + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +prompt +prompt Creating sequence SEQ_DF_DESTIP_STAT_LOG_DAILY +prompt ============================================== +prompt +create sequence SEQ_DF_DESTIP_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_DESTIP_STAT_LOG_MONTH +prompt ============================================== +prompt +create sequence SEQ_DF_DESTIP_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_STAT_LOG_DAILY +prompt ============================================= +prompt +create sequence SEQ_DF_SRCIP_STAT_LOG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_STAT_LOG_MONTH +prompt ============================================= +prompt +create sequence SEQ_DF_SRCIP_STAT_LOG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +prompt +prompt Creating procedure PRO_DESTIP_STAT_DFLOG_DAILY +prompt ============================================== +prompt +create or replace procedure PRO_DESTIP_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DESTIP_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_TAG_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_DESTIP_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_DESTIP_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_DESTIP_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,DEST_COUNTRY,STAT_TIME,SUM) (select SEQ_DF_DESTIP_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, DEST_COUNTRY, shijian, shuliang from(select ACTIVE_SYS, SERVICE, DEST_COUNTRY, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_DESTIP_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,DEST_COUNTRY,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_DESTIP_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_DESTIP_STAT_DFLOG_MONTH +prompt ============================================== +prompt +create or replace procedure PRO_DESTIP_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_DESTIP_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_DESTIP_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_DESTIP_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_DESTIP_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_DESTIP_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,DEST_COUNTRY,STAT_TIME,SUM) (select SEQ_DF_DESTIP_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, DEST_COUNTRY, shijian, shuliang from(select ACTIVE_SYS,SERVICE,DEST_COUNTRY,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_DESTIP_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,DEST_COUNTRY,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_DESTIP_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRCIP_STAT_DFLOG_DAILY +prompt ============================================= +prompt +create or replace procedure PRO_SRCIP_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_STAT_DFLOG_DAILY'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_SRCIP_STAT_LOG_DAILY'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- ָǰ + RIQI_S := RIQI || ' 00:00:00'; -- ָǰ00 + RIQI_E := RIQI || ' 23:59:59'; -- ָǰ23 + --ɾǰһͳƵϢ,ۼͳ + delete from DF_SRCIP_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_SRCIP_STAT_LOG_DAILYһ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,SRC_CITY,STAT_TIME,SUM) (select SEQ_DF_SRCIP_STAT_LOG_DAILY.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, shijian, shuliang from(select ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_SRCIP_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,SRC_CITY,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_SRCIP_STAT_LOG_DAILYһ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRCIP_STAT_DFLOG_MONTH +prompt ============================================= +prompt +create or replace procedure PRO_SRCIP_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----ʹ洢̿ʹroleȨ + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --־¼ڴ˱ + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_STAT_DFLOG_MONTH'; --ǰ洢̵ + CTYPE VARCHAR2(100) :='DF_SRCIP_LOG_MONTH all'; --ǰ洢ͳҵ + v_log_table_sql VARCHAR2(5000);--д־log + v_errortext varchar2(1000); --Ϣ + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- ǰN³ + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- ĩ + --ɾǰһͳƵϢ,ۼͳ + delete from DF_SRCIP_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.ͳDF_SRCIP_LOG_MONTHһµ־ʼ begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,STAT_TIME,SUM) (select SEQ_DF_SRCIP_STAT_LOG_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,SRC_CITY, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_SRCIP_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,SRC_CITY,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.ͳDF_SRCIP_LOG_MONTHһµ־ end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --쳣ƣ¼صoraԼ쳣Ϣ + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/sqlupdate(20170109)性质和局点日报表proc修改.sql b/sqlupdate/sqlupdate(20170109)性质和局点日报表proc修改.sql new file mode 100644 index 0000000..8e12bc9 --- /dev/null +++ b/sqlupdate/sqlupdate(20170109)性质和局点日报表proc修改.sql @@ -0,0 +1,45 @@ +------------------------------------------ +-- Export file for user GK_LOG -- +-- Created by dell on 2015/1/9, 9:28:18 -- +------------------------------------------ + +spool sqlupdate(20170109)性质和局点日报表proc修改.log + +prompt +prompt Creating table DF_ATTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DF_ATTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ATTR_TYPE INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DF_ATTR_STAT_LOG_DAILY + add constraint PK_DF_ATTR_STAT_LOG_DAILY primary key (SEQ); +create index DF_ATTR_STAT_TIME_DAILY on DF_ATTR_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DF_ENTR_STAT_LOG_DAILY +prompt ===================================== +prompt +create table DF_ENTR_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ENTRANCE_ID INTEGER not null, + ACTIVE_SYS INTEGER not null, + SERVICE INTEGER not null, + SUM NUMBER not null, + STAT_TIME DATE not null +) +; +alter table DF_ENTR_STAT_LOG_DAILY + add constraint PK_DF_ENTR_STAT_LOG_DAILY primary key (SEQ); +create index DF_ENTR_STAT_TIME_DAILY on DF_ENTR_STAT_LOG_DAILY (STAT_TIME); + + +spool off diff --git a/sqlupdate/sqlupdate(20170116)新增字段.sql b/sqlupdate/sqlupdate(20170116)新增字段.sql new file mode 100644 index 0000000..dea94a1 --- /dev/null +++ b/sqlupdate/sqlupdate(20170116)新增字段.sql @@ -0,0 +1,2 @@ +--ÿ + alter table SYSTEM_FUN_STATUS add column RUN_SYS integer not null; diff --git a/sqlupdate/sqlupdate(20170807)多维统计增加.sql b/sqlupdate/sqlupdate(20170807)多维统计增加.sql new file mode 100644 index 0000000..ef45b12 --- /dev/null +++ b/sqlupdate/sqlupdate(20170807)多维统计增加.sql @@ -0,0 +1,1489 @@ +------------------------------------------- +-- Export file for user GK_LOG -- +-- Created by dell on 2017/8/7, 17:25:39 -- +------------------------------------------- + +spool sqlupdate(20170807)多维统计增加.log + +prompt +prompt Creating table DF_LWHH_TAG_REPORT +prompt ================================= +prompt +create table DF_LWHH_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TAG_REPORT + add constraint PK_DF_LWHH_TAG_REPORT primary key (STAT_ID); +create index DF_LWHH_TAG_REPORT_INDEX on DF_LWHH_TAG_REPORT (REPORT_TIME); + +prompt +prompt Creating table DF_LWHH_TAG_STAT_LOG_DAILY +prompt ========================================= +prompt +create table DF_LWHH_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TAG_STAT_LOG_DAILY + add constraint PK_DF_LWHH_TAG_DAILY primary key (SEQ); +create index DF_LWHH_TAG_DAILY_INDEX on DF_LWHH_TAG_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DF_LWHH_TAG_STAT_LOG_MONTH +prompt ========================================= +prompt +create table DF_LWHH_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TAG_STAT_LOG_MONTH + add constraint PK_DF_LWHH_TAG_MONTH primary key (SEQ); +create index DF_LWHH_TAG_MONTH_INDEX on DF_LWHH_TAG_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DF_LWHH_TYPE_REPORT +prompt ================================== +prompt +create table DF_LWHH_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TYPE_REPORT + add constraint PK_DF_LWHH_TYPE_REPORT primary key (STAT_ID); +create index DF_LWHH_TYPE_REPORT_INDEX on DF_LWHH_TYPE_REPORT (REPORT_TIME); + +prompt +prompt Creating table DF_LWHH_TYPE_STAT_LOG_DAILY +prompt ========================================== +prompt +create table DF_LWHH_TYPE_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TYPE_STAT_LOG_DAILY + add constraint PK_DF_LWHH_TYPE_DAILY primary key (SEQ); +create index DF_LWHH_TYPE_DAILY_INDEX on DF_LWHH_TYPE_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DF_LWHH_TYPE_STAT_LOG_MONTH +prompt ========================================== +prompt +create table DF_LWHH_TYPE_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_LWHH_TYPE_STAT_LOG_MONTH + add constraint PK_DF_LWHH_TYPE_MONTH primary key (SEQ); +create index DF_LWHH_TYPE_MONTH_INDEX on DF_LWHH_TYPE_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DF_SRCIP_DOMESTIC_TAG_REPORT +prompt =========================================== +prompt +create table DF_SRCIP_DOMESTIC_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_DOMESTIC_TAG_REPORT + add constraint PDF_SRCIP_DOMESTIC_TAG_REPORT primary key (STAT_ID); +create index DF_SRCIP_TAG_REPORT_INDEX on DF_SRCIP_DOMESTIC_TAG_REPORT (REPORT_TIME); + +prompt +prompt Creating table DF_SRCIP_DOMESTIC_TYPE_REPORT +prompt ============================================ +prompt +create table DF_SRCIP_DOMESTIC_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_DOMESTIC_TYPE_REPORT + add constraint PDF_SRCIP_DOMESTIC_TYPE_REPORT primary key (STAT_ID); +create index DF_SRCIP_TYPE_REPORT_INDEX on DF_SRCIP_DOMESTIC_TYPE_REPORT (REPORT_TIME); + +prompt +prompt Creating table DF_SRCIP_TAG_STAT_LOG_DAILY +prompt ========================================== +prompt +create table DF_SRCIP_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_TAG_STAT_LOG_DAILY + add constraint PK_DF_SRCIP_TAG_DAILY primary key (SEQ); +create index DF_SRCIP_TAG_DAILY_INDEX on DF_SRCIP_TAG_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DF_SRCIP_TAG_STAT_LOG_MONTH +prompt ========================================== +prompt +create table DF_SRCIP_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_TAG_STAT_LOG_MONTH + add constraint PK_DF_SRCIP_TAG_MONTH primary key (SEQ); +create index DF_SRCIP_TAG_MONTH_INDEX on DF_SRCIP_TAG_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DF_SRCIP_TYPE_STAT_LOG_DAILY +prompt =========================================== +prompt +create table DF_SRCIP_TYPE_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_TYPE_STAT_LOG_DAILY + add constraint PK_DF_SRCIP_TYPE_DAILY primary key (SEQ); +create index DF_SRCIP_TYPE_DAILY_INDEX on DF_SRCIP_TYPE_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DF_SRCIP_TYPE_STAT_LOG_MONTH +prompt =========================================== +prompt +create table DF_SRCIP_TYPE_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DF_SRCIP_TYPE_STAT_LOG_MONTH + add constraint PK_DF_SRCIP_TYPE_MONTH primary key (SEQ); +create index DF_SRCIP_TYPE_MONTH_INDEX on DF_SRCIP_TYPE_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_TAG_REPORT +prompt ================================= +prompt +create table DJ_LWHH_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TAG_REPORT + add constraint PK_DJ_LWHH_TAG_REPORT primary key (STAT_ID); +create index DJ_LWHH_TAG_REPORT_INDEX on DJ_LWHH_TAG_REPORT (REPORT_TIME); + +prompt +prompt Creating table DJ_LWHH_TAG_STAT_LOG_DAILY +prompt ========================================= +prompt +create table DJ_LWHH_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TAG_STAT_LOG_DAILY + add constraint PK_DJ_LWHH_TAG_DAILY primary key (SEQ); +create index DJ_LWHH_TAG_DAILY_INDEX on DJ_LWHH_TAG_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_TAG_STAT_LOG_MONTH +prompt ========================================= +prompt +create table DJ_LWHH_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TAG_STAT_LOG_MONTH + add constraint PK_DJ_LWHH_TAG_MONTH primary key (SEQ); +create index DJ_LWHH_TAG_MONTH_INDEX on DJ_LWHH_TAG_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_TYPE_REPORT +prompt ================================== +prompt +create table DJ_LWHH_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TYPE_REPORT + add constraint PK_DJ_LWHH_TYPE_REPORT primary key (STAT_ID); +create index DJ_LWHH_TYPE_REPORT_INDEX on DJ_LWHH_TYPE_REPORT (REPORT_TIME); + +prompt +prompt Creating table DJ_LWHH_TYPE_STAT_LOG_DAILY +prompt ========================================== +prompt +create table DJ_LWHH_TYPE_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TYPE_STAT_LOG_DAILY + add constraint PK_DJ_LWHH_TYPE_DAILY primary key (SEQ); +create index DJ_LWHH_TYPE_DAILY_INDEX on DJ_LWHH_TYPE_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_LWHH_TYPE_STAT_LOG_MONTH +prompt ========================================== +prompt +create table DJ_LWHH_TYPE_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + LWHH NUMBER not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_LWHH_TYPE_STAT_LOG_MONTH + add constraint PK_DJ_LWHH_TYPE_MONTH primary key (SEQ); +create index DJ_LWHH_TYPE_MONTH_INDEX on DJ_LWHH_TYPE_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_SRCIP_DOMESTIC_TAG_REPORT +prompt =========================================== +prompt +create table DJ_SRCIP_DOMESTIC_TAG_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_DOMESTIC_TAG_REPORT + add constraint PDJ_SRCIP_DOMESTIC_TAG_REPORT primary key (STAT_ID); +create index DJ_SRCIP_TAG_REPORT_INDEX on DJ_SRCIP_DOMESTIC_TAG_REPORT (REPORT_TIME); + +prompt +prompt Creating table DJ_SRCIP_DOMESTIC_TYPE_REPORT +prompt ============================================ +prompt +create table DJ_SRCIP_DOMESTIC_TYPE_REPORT +( + STAT_ID NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + REPORT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_DOMESTIC_TYPE_REPORT + add constraint PDJ_SRCIP_DOMESTIC_TYPE_REPORT primary key (STAT_ID); +create index DJ_SRCIP_TYPE_REPORT_INDEX on DJ_SRCIP_DOMESTIC_TYPE_REPORT (REPORT_TIME); + +prompt +prompt Creating table DJ_SRCIP_TAG_STAT_LOG_DAILY +prompt ========================================== +prompt +create table DJ_SRCIP_TAG_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_TAG_STAT_LOG_DAILY + add constraint PK_DJ_SRCIP_TAG_DAILY primary key (SEQ); +create index DJ_SRCIP_TAG_DAILY_INDEX on DJ_SRCIP_TAG_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_SRCIP_TAG_STAT_LOG_MONTH +prompt ========================================== +prompt +create table DJ_SRCIP_TAG_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + TAG NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_TAG_STAT_LOG_MONTH + add constraint PK_DJ_SRCIP_TAG_MONTH primary key (SEQ); +create index DJ_SRCIP_TAG_MONTH_INDEX on DJ_SRCIP_TAG_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating table DJ_SRCIP_TYPE_STAT_LOG_DAILY +prompt =========================================== +prompt +create table DJ_SRCIP_TYPE_STAT_LOG_DAILY +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_TYPE_STAT_LOG_DAILY + add constraint PK_DJ_SRCIP_TYPE_DAILY primary key (SEQ); +create index DJ_SRCIP_TYPE_DAILY_INDEX on DJ_SRCIP_TYPE_STAT_LOG_DAILY (STAT_TIME); + +prompt +prompt Creating table DJ_SRCIP_TYPE_STAT_LOG_MONTH +prompt =========================================== +prompt +create table DJ_SRCIP_TYPE_STAT_LOG_MONTH +( + SEQ NUMBER not null, + ACTIVE_SYS INTEGER not null, + SRC_PROVINCE VARCHAR2(100) not null, + ATTR_TYPE NUMBER not null, + SUM NUMBER not null, + STAT_TIME DATE not null, + SERVICE INTEGER not null +) +; +alter table DJ_SRCIP_TYPE_STAT_LOG_MONTH + add constraint PK_DJ_SRCIP_TYPE_MONTH primary key (SEQ); +create index DJ_SRCIP_TYPE_MONTH_INDEX on DJ_SRCIP_TYPE_STAT_LOG_MONTH (STAT_TIME); + +prompt +prompt Creating sequence SEQ_DF_LWHH_TAG_DAILY +prompt ======================================= +prompt +create sequence SEQ_DF_LWHH_TAG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_TAG_MONTH +prompt ======================================= +prompt +create sequence SEQ_DF_LWHH_TAG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_TAG_REPORT +prompt ======================================== +prompt +create sequence SEQ_DF_LWHH_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 61 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_TYPE_DAILY +prompt ======================================== +prompt +create sequence SEQ_DF_LWHH_TYPE_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_TYPE_MONTH +prompt ======================================== +prompt +create sequence SEQ_DF_LWHH_TYPE_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_LWHH_TYPE_REPORT +prompt ========================================= +prompt +create sequence SEQ_DF_LWHH_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TAG_DAILY +prompt ======================================== +prompt +create sequence SEQ_DF_SRCIP_TAG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 61 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TAG_MONTH +prompt ======================================== +prompt +create sequence SEQ_DF_SRCIP_TAG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TAG_REPORT +prompt ========================================= +prompt +create sequence SEQ_DF_SRCIP_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TYPE_DAILY +prompt ========================================= +prompt +create sequence SEQ_DF_SRCIP_TYPE_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TYPE_MONTH +prompt ========================================= +prompt +create sequence SEQ_DF_SRCIP_TYPE_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DF_SRCIP_TYPE_REPORT +prompt ========================================== +prompt +create sequence SEQ_DF_SRCIP_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TAG_DAILY +prompt ======================================= +prompt +create sequence SEQ_DJ_LWHH_TAG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TAG_MONTH +prompt ======================================= +prompt +create sequence SEQ_DJ_LWHH_TAG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TAG_REPORT +prompt ======================================== +prompt +create sequence SEQ_DJ_LWHH_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TYPE_DAILY +prompt ======================================== +prompt +create sequence SEQ_DJ_LWHH_TYPE_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TYPE_MONTH +prompt ======================================== +prompt +create sequence SEQ_DJ_LWHH_TYPE_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_LWHH_TYPE_REPORT +prompt ========================================= +prompt +create sequence SEQ_DJ_LWHH_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TAG_DAILY +prompt ======================================== +prompt +create sequence SEQ_DJ_SRCIP_TAG_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TAG_MONTH +prompt ======================================== +prompt +create sequence SEQ_DJ_SRCIP_TAG_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TAG_REPORT +prompt ========================================= +prompt +create sequence SEQ_DJ_SRCIP_TAG_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TYPE_DAILY +prompt ========================================= +prompt +create sequence SEQ_DJ_SRCIP_TYPE_DAILY +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TYPE_MONTH +prompt ========================================= +prompt +create sequence SEQ_DJ_SRCIP_TYPE_MONTH +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating sequence SEQ_DJ_SRCIP_TYPE_REPORT +prompt ========================================== +prompt +create sequence SEQ_DJ_SRCIP_TYPE_REPORT +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 41 +increment by 1 +cache 20; + +prompt +prompt Creating procedure PRO_LWHH_TAG_STAT_DFLOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_LWHH_TAG_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TAG_STAT_DFLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_LWHH_TAG_STAT_DFLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_LWHH_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_LWHH_TAG_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,tag,STAT_TIME,SUM) (select SEQ_DF_LWHH_TAG_DAILY.nextval, ACTIVE_SYS, SERVICE,LWHH, tag, shijian, shuliang from(select ACTIVE_SYS, SERVICE,LWHH, tag, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_LWHH_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,tag,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_LWHH_TAG_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TAG_STAT_DFLOG_MONTH +prompt ================================================ +prompt +create or replace procedure PRO_LWHH_TAG_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TAG_STAT_DFLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_LWHH_TAG_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_LWHH_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_LWHH_TAG_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,TAG,STAT_TIME,SUM) (select SEQ_DF_LWHH_TAG_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH,TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_LWHH_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_LWHH_TAG_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TAG_STAT_DJLOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_LWHH_TAG_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TAG_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_LWHH_TAG_STAT_DJLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_TAG_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,tag,STAT_TIME,SUM) (select SEQ_DJ_LWHH_TAG_DAILY.nextval, ACTIVE_SYS, SERVICE,LWHH, tag, shijian, shuliang from(select ACTIVE_SYS, SERVICE,LWHH, tag, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_LWHH_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,tag,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_TAG_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TAG_STAT_DJLOG_MONTH +prompt ================================================ +prompt +create or replace procedure PRO_LWHH_TAG_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TAG_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_LWHH_TAG_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_TAG_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,TAG,STAT_TIME,SUM) (select SEQ_DJ_LWHH_TAG_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH,TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_LWHH_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_TAG_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TYPE_STAT_DFLOG_DAILY +prompt ================================================= +prompt +create or replace procedure PRO_LWHH_TYPE_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TYPE_STAT_DFLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_LWHH_TYPE_STAT_DFLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_LWHH_TYPE_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_LWHH_TYPE_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_TYPE_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_LWHH_TYPE_DAILY.nextval, ACTIVE_SYS, SERVICE,LWHH, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE,LWHH, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_LWHH_TYPE_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_LWHH_TYPE_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TYPE_STAT_DFLOG_MONTH +prompt ================================================= +prompt +create or replace procedure PRO_LWHH_TYPE_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TYPE_STAT_DFLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_LWHH_TYPE_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_LWHH_TYPE_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_LWHH_TYPE_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_LWHH_TYPE_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_LWHH_TYPE_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH,ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_LWHH_TYPE_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_LWHH_TYPE_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TYPE_STAT_DJLOG_DAILY +prompt ================================================= +prompt +create or replace procedure PRO_LWHH_TYPE_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TYPE_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_LWHH_TYPE_STAT_DJLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_TYPE_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_TYPE_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_TYPE_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,LWHH,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_LWHH_TYPE_DAILY.nextval, ACTIVE_SYS, SERVICE,LWHH, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE,LWHH, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_LWHH_TYPE_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,LWHH,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_TYPE_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_LWHH_TYPE_STAT_DJLOG_MONTH +prompt ================================================= +prompt +create or replace procedure PRO_LWHH_TYPE_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_LWHH_TYPE_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_LWHH_TYPE_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_LWHH_TYPE_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_LWHH_TYPE_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_LWHH_TYPE_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_LWHH_TYPE_MONTH.nextval, ACTIVE_SYS, SERVICE, LWHH,ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_LWHH_TYPE_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,LWHH,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_LWHH_TYPE_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TAG_STAT_DFLOG_DAILY +prompt =============================================== +prompt +create or replace procedure PRO_SRC_TAG_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_TAG_STAT_DFLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SRCIP_TAG_STAT_DFLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_SRCIP_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SRCIP_TAG_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,tag,STAT_TIME,SUM) (select SEQ_DF_SRCIP_TAG_DAILY.nextval, ACTIVE_SYS, SERVICE,SRC_PROVINCE, tag, shijian, shuliang from(select ACTIVE_SYS, SERVICE,SRC_PROVINCE, tag, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_SRCIP_DOMESTIC_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,tag,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SRCIP_TAG_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TAG_STAT_DFLOG_MONTH +prompt =============================================== +prompt +create or replace procedure PRO_SRC_TAG_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRC_TAG_STAT_DFLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SRCIP_TAG_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_SRCIP_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SRCIP_TAG_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,STAT_TIME,SUM) (select SEQ_DF_SRCIP_TAG_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_SRCIP_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SRCIP_TAG_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TAG_STAT_DJLOG_DAILY +prompt =============================================== +prompt +create or replace procedure PRO_SRC_TAG_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_TAG_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_TAG_STAT_DJLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_TAG_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_TAG_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_TAG_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,tag,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_TAG_DAILY.nextval, ACTIVE_SYS, SERVICE,SRC_PROVINCE, tag, shijian, shuliang from(select ACTIVE_SYS, SERVICE,SRC_PROVINCE, tag, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_SRCIP_DOMESTIC_TAG_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,tag,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_TAG_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TAG_STAT_DJLOG_MONTH +prompt =============================================== +prompt +create or replace procedure PRO_SRC_TAG_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRC_TAG_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_TAG_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_TAG_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_TAG_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_TAG_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_TAG_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,TAG, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_SRCIP_TAG_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,TAG,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_TAG_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TYPE_STAT_DFLOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_SRC_TYPE_STAT_DFLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_TYPE_STAT_DFLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SRCIP_TYPE_STAT_DFLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_SRCIP_TYPE_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SRCIP_TYPE_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_TYPE_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_SRCIP_TYPE_DAILY.nextval, ACTIVE_SYS, SERVICE,SRC_PROVINCE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE,SRC_PROVINCE, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DF_SRCIP_DOMESTIC_TYPE_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SRCIP_TYPE_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TYPE_STAT_DFLOG_MONTH +prompt ================================================ +prompt +create or replace procedure PRO_SRC_TYPE_STAT_DFLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRC_TYPE_STAT_DFLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DF_SRCIP_TYPE_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DF_SRCIP_TYPE_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DF_SRCIP_TYPE_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DF_SRCIP_TYPE_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DF_SRCIP_TYPE_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DF_SRCIP_TYPE_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DF_SRCIP_TYPE_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TYPE_STAT_DJLOG_DAILY +prompt ================================================ +prompt +create or replace procedure PRO_SRC_TYPE_STAT_DJLOG_DAILY(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRCIP_TYPE_STAT_DJLOG_DAILY'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_TYPE_STAT_DJLOG_DAILY'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI := to_char(trunc((sysdate-NUMDAYS), 'dd'), 'yyyy-MM-dd'); -- 指定天数前的那天日期 + RIQI_S := RIQI || ' 00:00:00'; -- 指定天数前的那天日期00点 + RIQI_E := RIQI || ' 23:59:59'; -- 指定天数前的那天日期23点 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_TYPE_STAT_LOG_DAILY dd where dd.stat_time=to_date(RIQI,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_TYPE_STAT_LOG_DAILY一天的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_TYPE_STAT_LOG_DAILY(SEQ,ACTIVE_SYS, SERVICE,SRC_PROVINCE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_TYPE_DAILY.nextval, ACTIVE_SYS, SERVICE,SRC_PROVINCE, ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS, SERVICE,SRC_PROVINCE, ATTR_TYPE, trunc(REPORT_TIME, ''DD'') as shijian, sum(SUM) as shuliang from DJ_SRCIP_DOMESTIC_TYPE_REPORT where REPORT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd HH24:MI:SS'') and to_date('''||RIQI_E||''',''yyyy-mm-dd HH24:MI:SS'') group by ACTIVE_SYS, SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(REPORT_TIME, ''DD'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_TYPE_STAT_LOG_DAILY一天的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + +prompt +prompt Creating procedure PRO_SRC_TYPE_STAT_DJLOG_MONTH +prompt ================================================ +prompt +create or replace procedure PRO_SRC_TYPE_STAT_DJLOG_MONTH(NUMDAYS INT) +Authid Current_User----使存储过程可以使用role权限 + as + c_log_table_name CONSTANT VARCHAR2(100) :='PRO_EXEC_LOG'; --日志记录在此表内 + c_cur_pro_name CONSTANT VARCHAR2(100) :='PRO_SRC_TYPE_STAT_DJLOG_MONTH'; --当前存储过程的名称 + CTYPE VARCHAR2(100) :='DJ_SRCIP_TYPE_LOG_MONTH all'; --当前存储过程统计业务类型 + v_log_table_sql VARCHAR2(5000);--写入日志log + v_errortext varchar2(1000); --出错的信息 + --RIQI VARCHAR(32); + RIQI_S VARCHAR(32); + RIQI_E VARCHAR(32); +begin + --declare + begin + RIQI_S := to_char(trunc((sysdate-NUMDAYS), 'month'), 'yyyy-MM-dd'); -- 前N月月初 + RIQI_E := to_char(last_day(sysdate-NUMDAYS), 'yyyy-mm-dd'); -- 上月月末 + --先删除前一次统计的数据信息,避免累计统计 + delete from DJ_SRCIP_TYPE_STAT_LOG_MONTH dd where dd.stat_time=to_date(RIQI_S,'yyyy-MM-DD'); + -------------------------------------------------------------------------------------------------------- + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''1.统计DJ_SRCIP_TYPE_LOG_MONTH一个月的日志开始 begin'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + execute immediate 'insert /*+ append */ into DJ_SRCIP_TYPE_STAT_LOG_MONTH(SEQ,ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,STAT_TIME,SUM) (select SEQ_DJ_SRCIP_TYPE_MONTH.nextval, ACTIVE_SYS, SERVICE, SRC_PROVINCE,ATTR_TYPE, shijian, shuliang from(select ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(STAT_TIME, ''MM'') as shijian,sum(SUM) as shuliang from DJ_SRCIP_TYPE_STAT_LOG_DAILY where STAT_TIME between to_date('''||RIQI_S||''',''yyyy-mm-dd'') and to_date('''||RIQI_E||''',''yyyy-mm-dd'') group by ACTIVE_SYS,SERVICE,SRC_PROVINCE,ATTR_TYPE,trunc(STAT_TIME, ''MM'')))'; + commit; + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) + VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''|| CTYPE ||''',''2.统计DJ_SRCIP_TYPE_LOG_MONTH一个月的日志结束 end'')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + end; +EXCEPTION + --异常处理机制,记录相关的ora错误号以及相关异常信息 + WHEN OTHERS THEN + BEGIN + ROLLBACK; + v_errortext :=SUBSTR(replace(SQLERRM,'''',''),1,900); + v_log_table_sql := 'INSERT INTO '||c_log_table_name||'(id,proname,type,log_cont) VALUES(SEQ_PRO_EXEC_LOG.nextval,'''||c_cur_pro_name||''','''||CTYPE||''',''error:'||v_errortext||''')'; + EXECUTE IMMEDIATE v_log_table_sql; + COMMIT; + END; +end; +/ + + +spool off diff --git a/sqlupdate/tableupdate.sql b/sqlupdate/tableupdate.sql new file mode 100644 index 0000000..f6684ac --- /dev/null +++ b/sqlupdate/tableupdate.sql @@ -0,0 +1,332 @@ +--2016.10.14:2.5.30 1. 5.8. DNSƭIPַñDNS_FAKE_IP_POOLҵɽIPϢ̨۲ͬݵDNS_FAKE_IP +--gk_pz +-- Create table +create table DNS_FAKE_IP_POOL +( + ID NUMBER not null, + GROUP_ID INTEGER not null, + ADDR_TYPE INTEGER not null, + SRC_IP VARCHAR2(64) not null, + MASK_SRC_IP VARCHAR2(64) not null, + SRC_PORT VARCHAR2(6) not null, + MASK_SRC_PORT VARCHAR2(6) not null, + DST_IP VARCHAR2(64) not null, + MASK_DST_IP VARCHAR2(64) not null, + DST_PORT VARCHAR2(6) not null, + MASK_DST_PORT VARCHAR2(6) not null, + PROTOCOL INTEGER default 0 not null, + DIRECTION INTEGER default 0 not null, + IS_VALID INTEGER not null, + OP_TIME DATE not null, + YL1 INTEGER, + YL2 INTEGER, + YL3 VARCHAR2(80), + YL4 VARCHAR2(80), + YL5 VARCHAR2(80), + LAST_UPDATE DATE, + PROC_SEQ NUMBER +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 8K + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DNS_FAKE_IP_POOL.ID + is 'SEQ_DNS_FAKE_IP_POOL.nextval'; +comment on column DNS_FAKE_IP_POOL.GROUP_ID + is 'DNS_GROUP_TYPEGROUP_ID +0:޲ƭIPIPҪSYN_ACKƭ +1: ޲ƭIPIPҪSYN_ACKƭ +'; +comment on column DNS_FAKE_IP_POOL.ADDR_TYPE + is 'Ipv4=4,ipv6=6'; +comment on column DNS_FAKE_IP_POOL.SRC_IP + is '0.0.0.0ֵʾ'; +comment on column DNS_FAKE_IP_POOL.MASK_SRC_IP + is 'IPv4:255.255.255.255ʾ룬ȷIPƥ䣬0.0.0.0ֵʾ⣻ +IPv6ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffffʾ룬::ðţʾ⡣ +'; +comment on column DNS_FAKE_IP_POOL.SRC_PORT + is '0ֵʾ'; +comment on column DNS_FAKE_IP_POOL.MASK_SRC_PORT + is '65535ʾ룬ȷ˿ƥ䣬0ʾ'; +comment on column DNS_FAKE_IP_POOL.DST_IP + is 'ͬԴIPַ'; +comment on column DNS_FAKE_IP_POOL.MASK_DST_IP + is 'ͬԴIP'; +comment on column DNS_FAKE_IP_POOL.DST_PORT + is 'ͬԴ˿'; +comment on column DNS_FAKE_IP_POOL.MASK_DST_PORT + is 'ͬԴ˿'; +comment on column DNS_FAKE_IP_POOL.PROTOCOL + is '6ʾTCP17ʾUDPĬΪ0'; +comment on column DNS_FAKE_IP_POOL.DIRECTION + is '0˫1'; +comment on column DNS_FAKE_IP_POOL.IS_VALID + is '0Ч1Ч'; +comment on column DNS_FAKE_IP_POOL.OP_TIME + is 'ǰʱ'; +comment on column DNS_FAKE_IP_POOL.LAST_UPDATE + is 'زʱ䣬̨'; +comment on column DNS_FAKE_IP_POOL.PROC_SEQ + is '汾кţSEQ_MESSAGEɣ'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DNS_FAKE_IP_POOL + add constraint PK_DNS_FAKE_IP_POOL primary key (ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +--gk_pz +-- Create sequence +create sequence SEQ_DNS_FAKE_IP_POOL +minvalue 1 +maxvalue 9999999999999999999999999999 +start with 1 +increment by 1 +cache 20; + +--gk_log +--2016-10-13:2.5.29 2016.10.13 +--2. ־SERVER_PORTPPTPҵеĺΪCALL_ID;CLIENT_PORTPPTPҵеĺΪͻCALL_ID; +--ҵⷶ벻ͷ + +--3. L2TPPPTP־CONTENT_TYPEֶ +alter table DF_PPTP_LOG add CONTENT_TYPE INTEGER; +alter table DJ_PPTP_LOG add CONTENT_TYPE INTEGER; +alter table DF_L2TP_LOG add CONTENT_TYPE INTEGER; +alter table DJ_L2TP_LOG add CONTENT_TYPE INTEGER; + +--gk_log +--2.5.28 2016.10.13 ųΰ DF_MAIL_LOG־FFROMΪMAIL_FROMTTOΪMAIL_TO +alter table DF_MAIL_LOG rename column FFROM to MAIL_FROM; +alter table DF_MAIL_LOG rename column TTO to MAIL_TO; + +--gk_log +--2016.10.12 2.5.27 ųΰ ӷ°INJECTED_PKT_FILEֶ +alter table df_dns_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ftp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_http_keyword_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_http_req_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_http_res_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ipsec_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ip_port_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_l2tp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_mail_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_openvpn_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_pptp_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ssh_log add INJECTED_PKT_FILE VARCHAR2(256); +alter table df_ssl_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_dns_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ftp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_keyword_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_req_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_http_res_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ipsec_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ip_port_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_l2tp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_mail_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_openvpn_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_pptp_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ssh_log add INJECTED_PKT_FILE VARCHAR2(256); +--alter table dj_ssl_log add INJECTED_PKT_FILE VARCHAR2(256); + +--gk_log +--2016-10-11:NumberλϴʱJava IntegerLongͲ㣬Ϊݿshow numwȻ밴Bigdecimalȡַظߣ + --ݿshow numw + set numw 50 + + +--2016-10-10:2.5.26ݿ漰 + +Ӧÿ +--gk_pz +--1֣ۺҵֲ֯,ҵýURLֶ,˽URLñ,Ӧ5.16.1ֱDF_HTTP_URLDJ_HTTP_URLñ +--DF_HTTP_URL +-- Create table +create table DF_HTTP_URL +( + REGION_ID NUMBER not null, + GROUP_ID NUMBER not null, + KEYWORDS VARCHAR2(1024) not null, + EXPR_TYPE NUMBER not null, + MATCH_METHOD NUMBER not null, + IS_HEXBIN NUMBER default 0 not null, + IS_VALID NUMBER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER, + LAST_UPDATE DATE +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DF_HTTP_URL.REGION_ID + is 'SEQ_REGIONID.nextvalɣ'; +comment on column DF_HTTP_URL.GROUP_ID + is 'ܿ÷еgroup_idSEQ_GROUPID.nextval'; +comment on column DF_HTTP_URL.KEYWORDS + is 'expr_type:1,ʱ keywordsС&Ϊ,ӱʽеġ&á\&ת塣'; +comment on column DF_HTTP_URL.EXPR_TYPE + is '0:ޱʽ,1:ʾΪʽ'; +comment on column DF_HTTP_URL.MATCH_METHOD + is 'expr_type:0ʱ壬0 +0Ӵƥ䣻1ƥ䣻2ƥ䣻3ȫƥ +'; +comment on column DF_HTTP_URL.IS_HEXBIN + is 'ĬΪ0:СдУҷHEX +1:HEXʽ +2:СдУҷHEX +Ƹʽһı룬table_info.confļdo_merge +'; +comment on column DF_HTTP_URL.IS_VALID + is '0Ч1Ч'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DF_HTTP_URL + add constraint PK_DF_HTTP_URL primary key (REGION_ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); + +--gk_pz +--Ӧ +CREATE OR REPLACE TRIGGER TRG_DJ_HTTP_URL_BEFORE BEFORE INSERT OR UPDATE ON DJ_HTTP_URL +FOR EACH ROW +BEGIN + SELECT SEQ_MESSAGE.NEXTVAL into :NEW.PROC_SEQ FROM DUAL; +END; +--gk_pz +CREATE OR REPLACE TRIGGER TRG_DJ_HTTP_URL_AFTER AFTER INSERT OR UPDATE ON DJ_HTTP_URL +FOR EACH ROW +DECLARE +is_exist int :=0; +BEGIN + SELECT COUNT(*) INTO is_exist FROM MESA_PZ_ZT WHERE upper(TABLE_NAME)='DJ_HTTP_URL'; + IF is_exist>0 THEN + UPDATE MESA_PZ_ZT SET PROC_SEQ=:NEW.PROC_SEQ WHERE upper(TABLE_NAME)='DJ_HTTP_URL'; + ELSE + INSERT INTO MESA_PZ_ZT(TABLE_NAME,PROC_SEQ) VALUES ('DJ_HTTP_URL',:NEW.PROC_SEQ); + END IF; +END; + +--gk_pz +--DJ_HTTP_URL +-- Create table +create table DJ_HTTP_URL +( + REGION_ID NUMBER not null, + GROUP_ID NUMBER not null, + KEYWORDS VARCHAR2(1024) not null, + EXPR_TYPE NUMBER not null, + MATCH_METHOD NUMBER not null, + IS_HEXBIN NUMBER default 0 not null, + IS_VALID NUMBER not null, + OP_TIME DATE not null, + PROC_SEQ NUMBER, + LAST_UPDATE DATE +) +tablespace GK_PZ + pctfree 10 + initrans 1 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +-- Add comments to the columns +comment on column DJ_HTTP_URL.REGION_ID + is 'SEQ_REGIONID.nextvalɣ'; +comment on column DJ_HTTP_URL.GROUP_ID + is 'ܿ÷еgroup_idSEQ_GROUPID.nextval'; +comment on column DJ_HTTP_URL.KEYWORDS + is 'expr_type:1,ʱ keywordsС&Ϊ,ӱʽеġ&á\&ת塣'; +comment on column DJ_HTTP_URL.EXPR_TYPE + is '0:ޱʽ,1:ʾΪʽ'; +comment on column DJ_HTTP_URL.MATCH_METHOD + is 'expr_type:0ʱ壬0 +0Ӵƥ䣻1ƥ䣻2ƥ䣻3ȫƥ +'; +comment on column DJ_HTTP_URL.IS_HEXBIN + is 'ĬΪ0:СдУҷHEX +1:HEXʽ +2:СдУҷHEX +Ƹʽһı룬table_info.confļdo_merge +'; +comment on column DJ_HTTP_URL.IS_VALID + is '0Ч1Ч'; +-- Create/Recreate primary, unique and foreign key constraints +alter table DJ_HTTP_URL + add constraint PK_DJ_HTTP_URL primary key (REGION_ID) + using index + tablespace GK_PZ + pctfree 10 + initrans 2 + maxtrans 255 + storage + ( + initial 64K + next 1M + minextents 1 + maxextents unlimited + ); +--gk_pz +--Ӧ +CREATE OR REPLACE TRIGGER TRG_DF_HTTP_URL_BEFORE BEFORE INSERT OR UPDATE ON DF_HTTP_URL +FOR EACH ROW +BEGIN + SELECT SEQ_MESSAGE.NEXTVAL into :NEW.PROC_SEQ FROM DUAL; +END; + +CREATE OR REPLACE TRIGGER TRG_DF_HTTP_URL_AFTER AFTER INSERT OR UPDATE ON DF_HTTP_URL +FOR EACH ROW +DECLARE +is_exist int :=0; +BEGIN + SELECT COUNT(*) INTO is_exist FROM MESA_PZ_ZT WHERE upper(TABLE_NAME)='DF_HTTP_URL'; + IF is_exist>0 THEN + UPDATE MESA_PZ_ZT SET PROC_SEQ=:NEW.PROC_SEQ WHERE upper(TABLE_NAME)='DF_HTTP_URL'; + ELSE + INSERT INTO MESA_PZ_ZT(TABLE_NAME,PROC_SEQ) VALUES ('DF_HTTP_URL',:NEW.PROC_SEQ); + END IF; +END; + +--gk_log +Ӧ־ +-- 2.ӦҪ,10.9chap_name־ֶ +alter table df_l2tp_log add CHAP_NAME VARCHAR2(256); +alter table dj_l2tp_log add CHAP_NAME VARCHAR2(256); diff --git a/src/main/java/com/nis/datasource/CustomerContextHolder.java b/src/main/java/com/nis/datasource/CustomerContextHolder.java new file mode 100644 index 0000000..5ad214b --- /dev/null +++ b/src/main/java/com/nis/datasource/CustomerContextHolder.java @@ -0,0 +1,28 @@ +package com.nis.datasource; + +public class CustomerContextHolder { + public static final String DATA_SOURCE_A = "dataSourceA"; + public static final String DATA_SOURCE_B = "dataSourceB"; + public static final String DATA_SOURCE_C = "dataSourceC"; + public static final String DATA_SOURCE_D = "dataSourceD"; + public static final String DATA_SOURCE_E = "dataSourceE"; + public static final String DATA_SOURCE_F = "dataSourceF"; + public static final String DATA_SOURCE_G = "dataSourceG"; + public static final String DATA_SOURCE_H = "dataSourceH"; + + //线程本地环境 + private static final ThreadLocal contextHolder = new ThreadLocal(); + //设置数据源类型 + public static void setCustomerType(String customerType){ + contextHolder.set(customerType); + } + //获取数据源类型 + public static String getCustomerType(){ + return contextHolder.get(); + } + //清除数据源类型 + public static void clearCustomerType(){ + contextHolder.remove(); + } + +} diff --git a/src/main/java/com/nis/datasource/DynamicDataSource.java b/src/main/java/com/nis/datasource/DynamicDataSource.java new file mode 100644 index 0000000..f9f2091 --- /dev/null +++ b/src/main/java/com/nis/datasource/DynamicDataSource.java @@ -0,0 +1,12 @@ +package com.nis.datasource; + +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; + +public class DynamicDataSource extends AbstractRoutingDataSource { + + @Override + protected Object determineCurrentLookupKey() { + return CustomerContextHolder.getCustomerType(); + } + +} diff --git a/src/main/java/com/nis/domain/BaseEntity.java b/src/main/java/com/nis/domain/BaseEntity.java new file mode 100644 index 0000000..4023dc6 --- /dev/null +++ b/src/main/java/com/nis/domain/BaseEntity.java @@ -0,0 +1,168 @@ +package com.nis.domain; + +import java.io.Serializable; +import java.util.Map; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.collect.Maps; +import com.nis.supcan.SupCol; +import com.nis.supcan.SupTreeList; +import com.nis.util.Configurations; +import com.nis.util.StringUtil; +import com.nis.web.security.UserUtils; + +/** + * Entity支持类 + * @author ThinkGem + * @version 2014-05-16 + */ +@SupTreeList +public abstract class BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 删除标记(1:正常;0:删除;2:审核;) + */ + public static final String DEL_FLAG_NORMAL = "1"; + public static final String DEL_FLAG_DELETE = "0"; + public static final String DEL_FLAG_AUDIT = "2"; + + /** + * 实体编号(唯一标识) + */ + protected Long id; + + /** + * 当前用户 + */ + protected SysUser currentUser; + + /** + * 当前实体分页对象 + */ + protected Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + protected Map sqlMap; + + /** + * 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。 + * 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。 + */ + protected boolean isNewRecord = false; + + public BaseEntity() { + + } + + public BaseEntity(Long id) { + this(); + this.id = id; + } + + @SupCol(isUnique="true", isHide="true") + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @JsonIgnore + @XmlTransient + public SysUser getCurrentUser() { + if(currentUser == null){ + currentUser = UserUtils.getUser(); + } + return currentUser; + } + + public void setCurrentUser(SysUser currentUser) { + this.currentUser = currentUser; + } + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null){ + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null){ + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + + + /** + * 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。 + * 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。 + * @return + */ + @JsonIgnore + public boolean getIsNewRecord() { + return isNewRecord || StringUtil.isEmpty(getId()); + } + + /** + * 是否是新记录(默认:false),调用setIsNewRecord()设置新记录,使用自定义ID。 + * 设置为true后强制执行插入语句,ID不会自动生成,需从手动传入。 + */ + public void setIsNewRecord(boolean isNewRecord) { + this.isNewRecord = isNewRecord; + } + + /** + * 获取数据库名称 + */ + @JsonIgnore + public String getDbName(){ + return Configurations.getStringProperty("jdbc.type", "mysql"); + } + + @Override + public boolean equals(Object obj) { + if (null == obj) { + return false; + } + if (this == obj) { + return true; + } + if (!getClass().equals(obj.getClass())) { + return false; + } + BaseEntity that = (BaseEntity) obj; + return null == this.getId() ? false : this.getId().equals(that.getId()); + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + + + +} diff --git a/src/main/java/com/nis/domain/ControlLog.java b/src/main/java/com/nis/domain/ControlLog.java new file mode 100644 index 0000000..b7c9ef6 --- /dev/null +++ b/src/main/java/com/nis/domain/ControlLog.java @@ -0,0 +1,120 @@ +/** +* @Title: ControlLog.java +* @Package com.nis.domain +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月15日 下午4:11:12 +* @version V1.0 +*/ +package com.nis.domain; + +import java.util.Date; + +import com.wordnik.swagger.annotations.ApiModel; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: ControlLog +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月15日 下午4:11:12 +* @version V1.0 +*/ +@ApiModel +public class ControlLog extends BaseEntity { + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 7644628891063420679L; + /** + */ + @ApiModelProperty(value="域名", required=true) + private String domain; + @ApiModelProperty(value="标题", required=true) + private String title; + @ApiModelProperty(value="源IP", required=true) + private String srcIp; + @ApiModelProperty(value="应答IP", required=true) + private String resIp; + @ApiModelProperty(value="状态", required=true) + private Integer status; + @ApiModelProperty(value="操作时间", required=true) + private Date optTime; + /** + * @return domain + */ + public String getDomain() { + return domain; + } + /** + * @param domain 要设置的 domain + */ + public void setDomain(String domain) { + this.domain = domain; + } + /** + * @return title + */ + public String getTitle() { + return title; + } + /** + * @param title 要设置的 title + */ + public void setTitle(String title) { + this.title = title; + } + /** + * @return srcIp + */ + public String getSrcIp() { + return srcIp; + } + /** + * @param srcIp 要设置的 srcIp + */ + public void setSrcIp(String srcIp) { + this.srcIp = srcIp; + } + /** + * @return resIp + */ + public String getResIp() { + return resIp; + } + /** + * @param resIp 要设置的 resIp + */ + public void setResIp(String resIp) { + this.resIp = resIp; + } + + /** + * @return status + */ + public Integer getStatus() { + return status; + } + /** + * @param status 要设置的 status + */ + public void setStatus(Integer status) { + this.status = status; + } + /** + * @return optTime + */ + public Date getOptTime() { + return optTime; + } + /** + * @param optTime 要设置的 optTime + */ + public void setOptTime(Date optTime) { + this.optTime = optTime; + } + + + + +} diff --git a/src/main/java/com/nis/domain/DfJitLogEntity.java b/src/main/java/com/nis/domain/DfJitLogEntity.java new file mode 100644 index 0000000..5d967c0 --- /dev/null +++ b/src/main/java/com/nis/domain/DfJitLogEntity.java @@ -0,0 +1,179 @@ +/** +* @Title: LogEntity.java +* @Package com.nis.domain +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年9月1日 上午10:16:54 +* @version V1.0 +*/ +package com.nis.domain; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; +import javax.xml.bind.annotation.XmlTransient; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.google.common.collect.Maps; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfJitLogEntity + * @Description: TODO(实时统计公共实体部分) + * @author (rkg) + * @date 2016年9月13日下午2:54:12 + * @version V1.0 + */ +public abstract class DfJitLogEntity implements Serializable { + + @ApiModelProperty(value = "id", required = true) + protected Long statId; + @ApiModelProperty(value = "统计时间", required = true) + protected Date reportTime; + @ApiModelProperty(value = "ip所属国家", required = false) + protected String nation; + @ApiModelProperty(value = "ip所属省", required = false) + protected String province; + @ApiModelProperty(value = "ip所属市", required = false) + protected String city; + @ApiModelProperty(value = "日志数量", required = true) + protected Long sum; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + + /** + * 公共查询部分 + */ + protected String searchReportStartTime; + protected String searchReportEndTime; + protected String searchService; + + /** + * 当前实体分页对象 + */ + protected Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + protected Map sqlMap; + + public DfJitLogEntity() { + super(); + } + + public Long getStatId() { + return statId; + } + + public void setStatId(Long statId) { + this.statId = statId; + } + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getReportTime() { + return reportTime; + } + + public void setReportTime(Date reportTime) { + this.reportTime = reportTime; + } + + public String getNation() { + return nation; + } + + public void setNation(String nation) { + this.nation = nation; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + + public Long getSum() { + return sum; + } + + public void setSum(Long sum) { + this.sum = sum; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + @JsonIgnore + public String getSearchReportStartTime() { + return searchReportStartTime; + } + + public void setSearchReportStartTime(String searchReportStartTime) { + this.searchReportStartTime = searchReportStartTime; + } + + @JsonIgnore + public String getSearchReportEndTime() { + return searchReportEndTime; + } + + public void setSearchReportEndTime(String searchReportEndTime) { + this.searchReportEndTime = searchReportEndTime; + } + + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null) { + page = new Page(); + } + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null) { + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + +} diff --git a/src/main/java/com/nis/domain/DfReportEntity.java b/src/main/java/com/nis/domain/DfReportEntity.java new file mode 100644 index 0000000..8d85bb9 --- /dev/null +++ b/src/main/java/com/nis/domain/DfReportEntity.java @@ -0,0 +1,149 @@ +package com.nis.domain; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.google.common.collect.Maps; +import com.nis.domain.Page; +import com.nis.util.Configurations; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfReportEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 2990823464993846973L; + @ApiModelProperty(value = "A系统", required = true) + protected Long asum; + @ApiModelProperty(value = "B系统", required = true) + protected Long bsum; + @ApiModelProperty(value = "C系统", required = true) + protected Long csum; + @ApiModelProperty(value = "统计时间", required = true) + protected Date reportTime; + + @ApiModelProperty(value = "全A+单B", required = true) + protected Long absum; + + public Long getAsum() { + return asum; + } + + public void setAsum(Long asum) { + this.asum = asum; + } + + public Long getBsum() { + return bsum; + } + + public void setBsum(Long bsum) { + this.bsum = bsum; + } + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getReportTime() { + return reportTime; + } + + public void setReportTime(Date reportTime) { + this.reportTime = reportTime; + } + + protected String searchReportStartTime; + protected String searchReportEndTime; + + @JsonIgnore + public String getSearchReportStartTime() { + return searchReportStartTime; + } + + public void setSearchReportStartTime(String searchReportStartTime) { + this.searchReportStartTime = searchReportStartTime; + } + + @JsonIgnore + public String getSearchReportEndTime() { + return searchReportEndTime; + } + + public void setSearchReportEndTime(String searchReportEndTime) { + this.searchReportEndTime = searchReportEndTime; + } + + /** + * 当前实体分页对象 + */ + protected Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + protected Map sqlMap; + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null) { + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null) { + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + + /** + * 获取数据库名称 + */ + @JsonIgnore + public String getDbName() { + return Configurations.getStringProperty("jdbc.type", "mysql"); + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + + public Long getAbsum() { + return absum; + } + + public void setAbsum(Long absum) { + this.absum = absum; + } + + public Long getCsum() { + return csum; + } + + public void setCsum(Long csum) { + this.csum = csum; + } + +} diff --git a/src/main/java/com/nis/domain/LogEntity.java b/src/main/java/com/nis/domain/LogEntity.java new file mode 100644 index 0000000..0f5bab4 --- /dev/null +++ b/src/main/java/com/nis/domain/LogEntity.java @@ -0,0 +1,841 @@ +/** +* @Title: LogEntity.java +* @Package com.nis.domain +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年9月1日 上午10:16:54 +* @version V1.0 +*/ +package com.nis.domain; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.google.common.collect.Maps; +import com.nis.util.Configurations; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: LogEntity +* @Description: TODO(日志公共实体部分) +* @author (darnell) +* @date 2016年9月1日 上午10:16:54 +* @version V1.0 +*/ +public abstract class LogEntity implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value="日志编号", required=true) + protected Long id; + + @ApiModelProperty(value="配置ID", required=true) + protected Long cfgId; + @ApiModelProperty(value="发现时间", required=true) + protected Date foundTime; + @ApiModelProperty(value="接收时间", required=true) + protected Date recvTime; + /*@ApiModelProperty(value="外层嵌套关联信息ID", required=true) + protected Long overId;*/ + @ApiModelProperty(value="外层嵌套关联信息ID", required=true) + protected String overId; + @ApiModelProperty(value="协议类型", required=true) + protected String protocol; + @ApiModelProperty(value="服务端ip地址", required=true) + protected String serverIp; + @ApiModelProperty(value="客户端ip地址", required=true) + protected String clientIp; + @ApiModelProperty(value="服务端端口", required=true) + protected Integer serverPort; + @ApiModelProperty(value="客户端端口", required=true) + protected Integer clientPort; + @ApiModelProperty(value="嵌套协议类型", required=true) + protected String nestProtocol; + @ApiModelProperty(value="嵌套服务端ip地址", required=true) + protected String nestServerIp; + @ApiModelProperty(value="嵌套客户端ip地址", required=true) + protected String nestClientIp; + @ApiModelProperty(value="嵌套服务端端口", required=true) + protected Integer nestServerPort; + @ApiModelProperty(value="嵌套客户端端口", required=true) + protected Integer nestClientPort; + @ApiModelProperty(value="业务类型", required=true) + protected Integer serviceType; + @ApiModelProperty(value="出入口编号", required=true) + protected Long entranceId; + @ApiModelProperty(value="处理机IP", required=true) + protected String cljIp; + @ApiModelProperty(value="封堵包记录文件", required=true) + protected String injectedPktFile; + + @ApiModelProperty(value="存放现场日志文件的URL地址", required=true) + protected String sceneFile; + @ApiModelProperty(value="管控动作", required=true) + protected Integer action; + @ApiModelProperty(value="服务端地址定位信息", required=true) + protected String serverLocate; + @ApiModelProperty(value="客户端地址定位信息", required=true) + protected String clientLocate; + + + protected Long foundTimeCluster; + protected Long recvTimeCluster; + + + + + protected String searchFoundStartTime; + protected String searchFoundEndTime; + protected Long searchFoundStartTimeCluster; + protected Long searchFoundEndTimeCluster; + protected String searchCfgId; + protected String searchProtocol; + protected String searchServiceType; + protected String searchServerIp; + protected String searchClientIp; + protected String searchEntranceId; + protected String searchCljIp; + protected String tableName;//神通数据库根据A/B版,动态切换表名 + + @JsonIgnore + public Long getFoundTimeCluster() { + return foundTimeCluster; + } + @JsonIgnore + public Long getRecvTimeCluster() { + return recvTimeCluster; + } + public void setFoundTimeCluster(Long foundTimeCluster) { + this.foundTimeCluster = foundTimeCluster; + } + public void setRecvTimeCluster(Long recvTimeCluster) { + this.recvTimeCluster = recvTimeCluster; + } + + @JsonIgnore + public Long getSearchFoundStartTimeCluster() { + return searchFoundStartTimeCluster; + } + public void setSearchFoundStartTimeCluster(Long searchFoundStartTimeCluster) { + this.searchFoundStartTimeCluster = searchFoundStartTimeCluster; + } + @JsonIgnore + public Long getSearchFoundEndTimeCluster() { + return searchFoundEndTimeCluster; + } + public void setSearchFoundEndTimeCluster(Long searchFoundEndTimeCluster) { + this.searchFoundEndTimeCluster = searchFoundEndTimeCluster; + } + @JsonIgnore + public String getTableName() { + return tableName; + } + public void setTableName(String tableName) { + this.tableName = tableName; + } + public String getOverId() { + return overId; + } + public void setOverId(String overId) { + this.overId = overId; + } + /** + * 当前实体分页对象 + */ + protected Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + protected Map sqlMap; + + /** + * @Title: + * @Description: TODO + * @param 入参 + */ + public LogEntity() { + super(); + } + + public String getInjectedPktFile() { + return injectedPktFile; + } + + public void setInjectedPktFile(String injectedPktFile) { + this.injectedPktFile = injectedPktFile; + } + + + /** + * @return id + */ + public Long getId() { + return id; + } + + + + + /** + * @param id 要设置的 id + */ + public void setId(Long id) { + this.id = id; + } + + + + + /** + * @return cfgId + */ + public Long getCfgId() { + return cfgId; + } + + + + + /** + * @param cfgId 要设置的 cfgId + */ + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + + + + + /** + * @return foundTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getFoundTime() { + if(foundTime ==null && this.foundTimeCluster != null){ + foundTime=new Date(this.foundTimeCluster*1000); + } + return foundTime; + } + + + + + /** + * @param foundTime 要设置的 foundTime + */ + public void setFoundTime(Date foundTime) { + this.foundTime = foundTime; + } + + + + + /** + * @return recvTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getRecvTime() { + if(recvTime ==null && this.recvTimeCluster != null){ + recvTime=new Date(this.recvTimeCluster*1000); + } + return recvTime; + } + + + + + /** + * @param recvTime 要设置的 recvTime + */ + public void setRecvTime(Date recvTime) { + this.recvTime = recvTime; + } + + + + + /** + * @return overId + */ + /*public Long getOverId() { + return overId; + } + + + + + *//** + * @param overId 要设置的 overId + *//* + public void setOverId(Long overId) { + this.overId = overId; + }*/ + + + + + /** + * @return protocol + */ + public String getProtocol() { + return protocol; + } + + + + + /** + * @param protocol 要设置的 protocol + */ + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + + + + /** + * @return serverIp + */ + public String getServerIp() { + return serverIp; + } + + + + + /** + * @param serverIp 要设置的 serverIp + */ + public void setServerIp(String serverIp) { + this.serverIp = serverIp; + } + + + + + /** + * @return clientIp + */ + public String getClientIp() { + return clientIp; + } + + + + + /** + * @param clientIp 要设置的 clientIp + */ + public void setClientIp(String clientIp) { + this.clientIp = clientIp; + } + + + + + /** + * @return serverPort + */ + public Integer getServerPort() { + return serverPort; + } + + + + + /** + * @param serverPort 要设置的 serverPort + */ + public void setServerPort(Integer serverPort) { + this.serverPort = serverPort; + } + + + + + /** + * @return clientPort + */ + public Integer getClientPort() { + return clientPort; + } + + + + + /** + * @param clientPort 要设置的 clientPort + */ + public void setClientPort(Integer clientPort) { + this.clientPort = clientPort; + } + + + + + /** + * @return nestProtocol + */ + public String getNestProtocol() { + return nestProtocol; + } + + + + + /** + * @param nestProtocol 要设置的 nestProtocol + */ + public void setNestProtocol(String nestProtocol) { + this.nestProtocol = nestProtocol; + } + + + + + /** + * @return nestServerIp + */ + public String getNestServerIp() { + return nestServerIp; + } + + + + + /** + * @param nestServerIp 要设置的 nestServerIp + */ + public void setNestServerIp(String nestServerIp) { + this.nestServerIp = nestServerIp; + } + + + + + /** + * @return nestClientIp + */ + public String getNestClientIp() { + return nestClientIp; + } + + + + + /** + * @param nestClientIp 要设置的 nestClientIp + */ + public void setNestClientIp(String nestClientIp) { + this.nestClientIp = nestClientIp; + } + + + + + /** + * @return nestServerPort + */ + public Integer getNestServerPort() { + return nestServerPort; + } + + + + + /** + * @param nestServerPort 要设置的 nestServerPort + */ + public void setNestServerPort(Integer nestServerPort) { + this.nestServerPort = nestServerPort; + } + + + + + /** + * @return nestClientPort + */ + public Integer getNestClientPort() { + return nestClientPort; + } + + + + + /** + * @param nestClientPort 要设置的 nestClientPort + */ + public void setNestClientPort(Integer nestClientPort) { + this.nestClientPort = nestClientPort; + } + + + + + /** + * @return serviceType + */ + public Integer getServiceType() { + return serviceType; + } + + + + + /** + * @param serviceType 要设置的 serviceType + */ + public void setServiceType(Integer serviceType) { + this.serviceType = serviceType; + } + + + + + /** + * @return entranceId + */ + public Long getEntranceId() { + return entranceId; + } + + + + + /** + * @param entranceId 要设置的 entranceId + */ + public void setEntranceId(Long entranceId) { + this.entranceId = entranceId; + } + + + + + /** + * @return cljIp + */ + public String getCljIp() { + return cljIp; + } + + + + + /** + * @param cljIp 要设置的 cljIp + */ + public void setCljIp(String cljIp) { + this.cljIp = cljIp; + } + + + + + public String getServerLocate() { + return serverLocate; + } + + + + + public void setServerLocate(String serverLocate) { + this.serverLocate = serverLocate; + } + + + + + public String getClientLocate() { + return clientLocate; + } + + + + + public void setClientLocate(String clientLocate) { + this.clientLocate = clientLocate; + } + + + + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null){ + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null){ + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + + /** + * 获取数据库名称 + */ + @JsonIgnore + public String getDbName(){ + return Configurations.getStringProperty("jdbc.type", "mysql"); + } + + @Override + public boolean equals(Object obj) { + if (null == obj) { + return false; + } + if (this == obj) { + return true; + } + if (!getClass().equals(obj.getClass())) { + return false; + } + LogEntity that = (LogEntity) obj; + return null == this.getId() ? false : this.getId().equals(that.getId()); + } + + + + /** + * @return searchFoundStartTime + */ + @JsonIgnore + public String getSearchFoundStartTime() { + return searchFoundStartTime; + } + + + + + /** + * @param searchFoundStartTime 要设置的 searchFoundStartTime + */ + public void setSearchFoundStartTime(String searchFoundStartTime) { + this.searchFoundStartTime = searchFoundStartTime; + } + + + + + /** + * @return searchFoundEndTime + */ + @JsonIgnore + public String getSearchFoundEndTime() { + return searchFoundEndTime; + } + + + + + /** + * @param searchFoundEndTime 要设置的 searchFoundEndTime + */ + public void setSearchFoundEndTime(String searchFoundEndTime) { + this.searchFoundEndTime = searchFoundEndTime; + } + + + + + /** + * @return searchCfgId + */ + @JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + + + + + /** + * @param searchCfgId 要设置的 searchCfgId + */ + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + } + + + + + /** + * @return searchProtocol + */ + @JsonIgnore + public String getSearchProtocol() { + return searchProtocol; + } + + + + + /** + * @param searchProtocol 要设置的 searchProtocol + */ + public void setSearchProtocol(String searchProtocol) { + this.searchProtocol = searchProtocol; + } + + + + + /** + * @return searchServerIp + */ + @JsonIgnore + public String getSearchServerIp() { + return searchServerIp; + } + + + + + /** + * @param searchServerIp 要设置的 searchServerIp + */ + public void setSearchServerIp(String searchServerIp) { + this.searchServerIp = searchServerIp; + } + + + + + /** + * @return searchClientIp + */ + @JsonIgnore + public String getSearchClientIp() { + return searchClientIp; + } + + + + + /** + * @param searchClientIp 要设置的 searchClientIp + */ + public void setSearchClientIp(String searchClientIp) { + this.searchClientIp = searchClientIp; + } + + + + + /** + * @return searchEntranceId + */ + @JsonIgnore + public String getSearchEntranceId() { + return searchEntranceId; + } + + + + + /** + * @param searchEntranceId 要设置的 searchEntranceId + */ + public void setSearchEntranceId(String searchEntranceId) { + this.searchEntranceId = searchEntranceId; + } + + + + + /** + * @return searchCljIp + */ + @JsonIgnore + public String getSearchCljIp() { + return searchCljIp; + } + + + + + /** + * @param searchCljIp 要设置的 searchCljIp + */ + + public void setSearchCljIp(String searchCljIp) { + this.searchCljIp = searchCljIp; + } + + + + + /** + * @return searchServiceType + */ + @JsonIgnore + public String getSearchServiceType() { + return searchServiceType; + } + + + + + /** + * @param searchServiceType 要设置的 searchServiceType + */ + public void setSearchServiceType(String searchServiceType) { + this.searchServiceType = searchServiceType; + } + + + + public String getSceneFile() { + return sceneFile; + } + public void setSceneFile(String sceneFile) { + this.sceneFile = sceneFile; + } + + public Integer getAction() { + return action; + } + public void setAction(Integer action) { + this.action = action; + } + + + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + +} diff --git a/src/main/java/com/nis/domain/Page.java b/src/main/java/com/nis/domain/Page.java new file mode 100644 index 0000000..fd7225d --- /dev/null +++ b/src/main/java/com/nis/domain/Page.java @@ -0,0 +1,814 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.domain; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; +import org.apache.ibatis.session.SqlSessionFactory; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.restful.DfIpPortLog; +import com.nis.util.Configurations; +import com.nis.util.Constants; +import com.nis.util.CookieUtil; +import com.nis.util.StringUtil; +import com.nis.web.service.SpringContextHolder; + +/** + * 分页类 + * @author ThinkGem + * @version 2013-7-2 + * @param + */ +public class Page { + + private int pageNo = 1; // 当前页码 + private int pageSize = Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30)); // 页面大小,设置为“-1”表示不进行分页(分页无效) + + private long count;// 总记录数,设置为“-1”表示不查询总数 + private int first;// 首页索引 + private int last;// 尾页索引 + private int prev;// 上一页索引 + private int next;// 下一页索引 + + + private boolean firstPage;//是否是第一页 + private boolean lastPage;//是否是最后一页 + + private int length = 8;// 显示页面长度 + private int slider = 1;// 前后显示页面长度 + + private List list = new ArrayList(); + + private String orderBy = ""; // 标准查询有效, 实例: updatedate desc, name asc + + private String fields ="";//制定资源的字段 + + private String where; + + private String funcName = "page"; // 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。 + + private String funcParam = ""; // 函数的附加参数,第三个参数值。 + + private String message = ""; // 设置提示消息,显示在“共n条”之后 + + public Page() { + this.pageSize = pageSize; + } + + + /** + * 构造方法 + * @param request 传递 repage 参数,来记住页码 + * @param response 用于设置 Cookie,记住页码 + */ + public Page(HttpServletRequest request, HttpServletResponse response){ + + //this(request, response,Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); + + } + /** + * 构造方法 + * @param request 传递 repage 参数,来记住页码 + * @param response 用于设置 Cookie,记住页码 + * + */ + public Page(HttpServletRequest request, HttpServletResponse response,Class clazz){ + + this(request, response,clazz.getSimpleName(),Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); + + } + public Page(HttpServletRequest request, HttpServletResponse response,int defaultPageSize){ + + this(request, response,"",Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); + + } + + public Page(HttpServletRequest request, HttpServletResponse response,String className, int defaultPageSize){ + try { + // 设置页码参数(传递repage参数,来记住页码) + String no = request.getParameter("pageNo"); + if (StringUtils.isNotBlank(no)) { + if (StringUtils.isNumeric(no)){ + CookieUtil.addCookie(response, "pageNo", no); + this.setPageNo(Integer.parseInt(no)); + }else if (request.getParameter("repage")!=null){ + no = CookieUtil.getValue(request, "pageNo"); + if (StringUtils.isNumeric(no)){ + this.setPageNo(Integer.parseInt(no)); + } + } + } + + // 设置页面大小参数(传递repage参数,来记住页码大小) + String size = request.getParameter("pageSize"); + if (StringUtils.isNotBlank(size)) { + + if (StringUtils.isNumeric(size) || size.equals("-1")){ + CookieUtil.addCookie(response, "pageSize", size); + this.setPageSize(Integer.parseInt(size)); + } else if (request.getParameter("repage")!=null){ + size = CookieUtil.getValue(request, "pageSize"); + if (StringUtils.isNumeric(size)){ + this.setPageSize(Integer.parseInt(size)); + } + } + } else { + this.pageSize = defaultPageSize; + } + //超出每页最大显示条数,取限制的最大条数 + if(this.pageSize > Constants.MAX_PAGE_SIZE){ + this.pageSize = Constants.MAX_PAGE_SIZE; + } + + String fields = request.getParameter("fields"); + if (StringUtils.isNotBlank(fields)){ + fields=getFiledsSql(className, fields); + this.setFields(fields); + } + + // 设置排序参数 + String orderBy = request.getParameter("orderBy"); + if (StringUtils.isNotBlank(orderBy)){ + orderBy=getOrderBySql(className, orderBy); + this.setOrderBy(orderBy); + } + this.count=Integer.valueOf(Configurations.getIntProperty("page.count", -1)); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * + * @Title: getWhere + * @Description: TODO(抽取where查询条件) + * @param @param request + * @param @return 入参 + * @return String 返回类型 + * @author (darnell) + * @throws + * @date 2016年8月17日 上午9:28:21 + * @version V1.0 + */ + private String getWhere(HttpServletRequest request) { + Map requestMap = request.getParameterMap(); + StringBuilder whereBuilder = new StringBuilder(512); + for(String paramName : request.getParameterMap().keySet()) { + if (paramName.startsWith("search")) { + whereBuilder.append(paramName.substring("search_".length())) + .append("=").append(requestMap.get(paramName)[0]).append(" and "); + } + } + if (whereBuilder.length() > 0) { + whereBuilder.delete(whereBuilder.lastIndexOf(" and "), whereBuilder.length()); + } + return whereBuilder.toString(); + } + + + /** + * 构造方法 + * @param pageNo 当前页码 + * @param pageSize 分页大小 + */ + public Page(int pageNo, int pageSize) { + this(pageNo, pageSize, 0); + } + + /** + * 构造方法 + * @param pageNo 当前页码 + * @param pageSize 分页大小 + * @param count 数据条数 + */ + public Page(int pageNo, int pageSize, long count) { + this(pageNo, pageSize, count, new ArrayList()); + } + + /** + * 构造方法 + * @param pageNo 当前页码 + * @param pageSize 分页大小 + * @param count 数据条数 + * @param list 本页数据对象列表 + */ + public Page(int pageNo, int pageSize, long count, List list) { + this.setCount(count); + this.setPageNo(pageNo); + this.pageSize = pageSize; + this.list = list; + } + + /** + * 初始化参数 + */ + public void initialize(){ + + //1 + this.first = 1; + + this.last = (int)(count / (this.pageSize < 1 ? 20 : this.pageSize) + first - 1); + + if (this.count % this.pageSize != 0 || this.last == 0) { + this.last++; + } + + if (this.last < this.first) { + this.last = this.first; + } + + if (this.pageNo <= 1) { + this.pageNo = this.first; + this.firstPage=true; + } + + if (this.pageNo >= this.last) { + this.pageNo = this.last; + this.lastPage=true; + } + + if (this.pageNo < this.last - 1) { + this.next = this.pageNo + 1; + } else { + this.next = this.last; + } + + if (this.pageNo > 1) { + this.prev = this.pageNo - 1; + } else { + this.prev = this.first; + } + + //2 + if (this.pageNo < this.first) {// 如果当前页小于首页 + this.pageNo = this.first; + } + + if (this.pageNo > this.last) {// 如果当前页大于尾页 + this.pageNo = this.last; + } + + } + + /** + * 默认输出当前分页标签 + *
${page}
+ */ + @Override + public String toString() { + + StringBuilder sb = new StringBuilder(); + + if (pageNo == first) {// 如果是首页 + sb.append("
  • « 上一页
  • \n"); + } else { + sb.append("
  • « 上一页
  • \n"); + } + + int begin = pageNo - (length / 2); + + if (begin < first) { + begin = first; + } + + int end = begin + length - 1; + + if (end >= last) { + end = last; + begin = end - length + 1; + if (begin < first) { + begin = first; + } + } + + if (begin > first) { + int i = 0; + for (i = first; i < first + slider && i < begin; i++) { + sb.append("
  • " + + (i + 1 - first) + "
  • \n"); + } + if (i < begin) { + sb.append("
  • ...
  • \n"); + } + } + + for (int i = begin; i <= end; i++) { + if (i == pageNo) { + sb.append("
  • " + (i + 1 - first) + + "
  • \n"); + } else { + sb.append("
  • " + + (i + 1 - first) + "
  • \n"); + } + } + + if (last - end > slider) { + sb.append("
  • ...
  • \n"); + end = last - slider; + } + + for (int i = end + 1; i <= last; i++) { + sb.append("
  • " + + (i + 1 - first) + "
  • \n"); + } + + if (pageNo == last) { + sb.append("
  • 下一页 »
  • \n"); + } else { + sb.append("
  • " + + "下一页 »
  • \n"); + } + + sb.append("
  • 当前 "); + sb.append(" / "); + sb.append(" 条,"); + sb.append("共 " + count + " 条"+(message!=null?message:"")+"
  • \n"); + + sb.insert(0,"
      \n").append("
    \n"); + + sb.append("
    "); + +// sb.insert(0,"
    \n").append("
    \n"); + + return sb.toString(); + } + + /** + * 获取分页HTML代码 + * @return + */ + @JsonIgnore + public String getHtml(){ + return toString(); + } + +// public static void main(String[] args) { +// Page p = new Page(3, 3); +// System.out.println(p); +// System.out.println("首页:"+p.getFirst()); +// System.out.println("尾页:"+p.getLast()); +// System.out.println("上页:"+p.getPrev()); +// System.out.println("下页:"+p.getNext()); +// } + + /** + * 获取设置总数 + * @return + */ + public long getCount() { + return count; + } + + /** + * 设置数据总数 + * @param count + */ + public void setCount(long count) { + this.count = count; + if (pageSize >= count){ + pageNo = 1; + } + } + + /** + * 获取当前页码 + * @return + */ + public int getPageNo() { + return pageNo; + } + + /** + * 设置当前页码 + * @param pageNo + */ + public void setPageNo(int pageNo) { + this.pageNo = pageNo; + } + + /** + * 获取页面大小 + * @return + */ + public int getPageSize() { + return pageSize; + } + + /** + * 设置页面大小(最大500) + * @param pageSize + */ + public void setPageSize(int pageSize) { + if (pageSize == -1 || pageSize > 0 ) { + this.pageSize = pageSize; + } else { + this.pageSize = Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30)); + } + } + + /** + * 首页索引 + * @return + */ + @JsonIgnore + public int getFirst() { + return first; + } + + /** + * 尾页索引 + * @return + */ + public int getLast() { + return last; + } + + /** + * 获取页面总数 + * @return getLast(); + */ + @JsonIgnore + public int getTotalPage() { + return getLast(); + } + + /** + * 是否为第一页 + * @return + */ + @JsonIgnore + public boolean isFirstPage() { + return firstPage; + } + + /** + * 是否为最后一页 + * @return + */ + @JsonIgnore + public boolean isLastPage() { + return lastPage; + } + + + /** + * @return where + */ + @JsonIgnore + public String getWhere() { + return where; + } + + /** + * @param where 要设置的 where + */ + public void setWhere(String where) { + this.where = where; + } + + /** + * 上一页索引值 + * @return + */ + @JsonIgnore + public int getPrev() { + if (isFirstPage()) { + return pageNo; + } else { + return pageNo - 1; + } + } + + /** + * 下一页索引值 + * @return + */ + @JsonIgnore + public int getNext() { + if (isLastPage()) { + return pageNo; + } else { + return pageNo + 1; + } + } + + /** + * 获取本页数据对象列表 + * @return List + */ + public List getList() { + return list; + } + + /** + * 设置本页数据对象列表 + * @param list + */ + public Page setList(List list) { + this.list = list; + initialize(); + return this; + } + + /** + * 获取查询排序字符串 + * @return + */ + @JsonIgnore + public String getOrderBy() { + // SQL过滤,防止注入 + String reg = "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|" + + "(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b)"; + Pattern sqlPattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE); + if (sqlPattern.matcher(orderBy).find()) { + return ""; + } + return orderBy; + } + + /** + * 设置查询排序,标准查询有效, 实例: updatedate desc, name asc + */ + public void setOrderBy(String orderBy) { + this.orderBy = orderBy; + } + + + + /** + * @return fields 字段属性查询,拼接用,分隔 + */ + @JsonIgnore + public String getFields() { + return fields; + } + + /** + * @param fields 要设置的 fields + */ + public void setFields(String fields) { + this.fields = fields; + } + + /** + * 获取点击页码调用的js函数名称 + * function ${page.funcName}(pageNo){location="${ctx}/list-${category.id}${urlSuffix}?pageNo="+i;} + * @return + */ + @JsonIgnore + public String getFuncName() { + return funcName; + } + + /** + * 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。 + * @param funcName 默认为page + */ + public void setFuncName(String funcName) { + this.funcName = funcName; + } + + /** + * 获取分页函数的附加参数 + * @return + */ + @JsonIgnore + public String getFuncParam() { + return funcParam; + } + + /** + * 设置分页函数的附加参数 + * @return + */ + public void setFuncParam(String funcParam) { + this.funcParam = funcParam; + } + + /** + * 设置提示消息,显示在“共n条”之后 + * @param message + */ + public void setMessage(String message) { + this.message = message; + } + + /** + * 分页是否有效 + * @return this.pageSize==-1 + */ + @JsonIgnore + public boolean isDisabled() { + return this.pageSize==-1; + } + + /** + * 是否进行总数统计 + * @return this.count==-1 + */ + @JsonIgnore + public boolean isNotCount() { + return this.count==-1; + } + + /** + * 获取 Hibernate FirstResult + */ + @JsonIgnore + public int getFirstResult(){ + int firstResult = (getPageNo() - 1) * getPageSize(); + if (firstResult >= getCount()) { + firstResult = 0; + } + return firstResult; + } + /** + * 获取 Hibernate MaxResults + */ + @JsonIgnore + public int getMaxResults(){ + return getPageSize(); + } + /** + * @Title: getFiledsSql + * @Description: 将fields的属性名称替换为字段名称 + * @param @param mapName + * @param @param fileds + * @param @return + * @param @throws Exception + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + @JsonIgnore + public String getFiledsSql(String mapName,String fileds) throws Exception{ + String[] fieldsColoumn=null; + String orderByStr=""; + //所有字段名 + List columnList=new ArrayList(); + //所有属性名 + List propertyList=new ArrayList(); + //属性名称为key,字段名称为value + Map columnMap=new HashMap(); + + if(!StringUtil.isBlank(fileds)){ + //解析Fileds的字段/属性名称 + fieldsColoumn=fileds.split(","); + + //从resultMap中获取字段名称和属性名称 + if(fieldsColoumn != null){ + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + ResultMap map= sqlSessionFactory.getConfiguration().getResultMap(mapName+"Map"); + List mapping= map.getResultMappings(); + for(ResultMapping mapp:mapping){ + columnList.add(mapp.getColumn().toLowerCase()); + propertyList.add(mapp.getProperty()); + columnMap.put(mapp.getProperty(), mapp.getColumn()); + } + } + if(fieldsColoumn != null){ + fileds=""; + for (String column : fieldsColoumn) { + if(!StringUtil.isBlank(column)){ + column=column.trim(); + if(columnList.contains(column.toLowerCase())){ + fileds+=","+column; + }else if(propertyList.contains(column)){ + fileds+=","+columnMap.get(column).toString(); + } + } + } + if(!StringUtil.isBlank(fileds)){ + fileds=fileds.substring(1); + } + + } + + } + return fileds; + } + /** + * @Title: getOrderBySql + * @Description: 将orderBy的属性名称替换为字段名称 + * @param @param mapName + * @param @param orderBy + * @param @return + * @param @throws Exception + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + @JsonIgnore + public static String getOrderBySql(String mapName,String orderBy) throws Exception{ + String[] orderByColoumn=null; + //所有字段名 + List columnList=new ArrayList(); + //所有属性名 + List propertyList=new ArrayList(); + Map columnMap=new HashMap(); + + if(!StringUtil.isBlank(orderBy)){ + //解析orderBy的字段/属性名称 + orderByColoumn=orderBy.split(","); + //从resultMap中获取字段名称和属性名称 + if(orderByColoumn != null){ + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + ResultMap map= sqlSessionFactory.getConfiguration().getResultMap(mapName+"Map"); + List mapping= map.getResultMappings(); + for(ResultMapping mapp:mapping){ + columnList.add(mapp.getColumn().toLowerCase()); + propertyList.add(mapp.getProperty()); + columnMap.put(mapp.getProperty(), mapp.getColumn()); + } + } + if(orderByColoumn != null){ + orderBy=""; + for (String column : orderByColoumn) { + if(!StringUtil.isBlank(column)){ + if(columnList.contains(replaceOrderBy(column))){ + orderBy+=","+column; + }else if(propertyList.contains(replaceOrderBy(column))){ + //如果是实体类名字则获取对应数据库名字+排序方式 + orderBy+=","+columnMap.get(replaceOrderBy(column)).toString() + +column.replace(replaceOrderBy(column), ""); + } + } + } + if(!StringUtil.isBlank(orderBy)){ + orderBy=orderBy.substring(1); + } + } + + } + return orderBy; + } + /** + * @Title: replaceOrderBy + * @Description: 去掉orderBy中的desc和asc + * @param @param str + * @param @return + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public static String replaceOrderBy(String str){ + if(!StringUtil.isBlank(str)){ + str=str.trim(); + str=str.replace(" asc",""); + str=str.replace(" ASC",""); + str=str.replace(" DESC",""); + str=str.replace(" desc",""); + str=str.trim(); + } + return str; + } +// /** +// * 获取 Spring data JPA 分页对象 +// */ +// public Pageable getSpringPage(){ +// List orders = new ArrayList(); +// if (orderBy!=null){ +// for (String order : StringUtils.split(orderBy, ",")){ +// String[] o = StringUtils.split(order, " "); +// if (o.length==1){ +// orders.add(new Order(Direction.ASC, o[0])); +// }else if (o.length==2){ +// if ("DESC".equals(o[1].toUpperCase())){ +// orders.add(new Order(Direction.DESC, o[0])); +// }else{ +// orders.add(new Order(Direction.ASC, o[0])); +// } +// } +// } +// } +// return new PageRequest(this.pageNo - 1, this.pageSize, new Sort(orders)); +// } +// +// /** +// * 设置 Spring data JPA 分页对象,转换为本系统分页对象 +// */ +// public void setSpringPage(org.springframework.data.domain.Page page){ +// this.pageNo = page.getNumber(); +// this.pageSize = page.getSize(); +// this.count = page.getTotalElements(); +// this.list = page.getContent(); +// +public static void main(String[] args) { + Page page=new Page(); +} +} diff --git a/src/main/java/com/nis/domain/ServicesRequestLog.java b/src/main/java/com/nis/domain/ServicesRequestLog.java new file mode 100644 index 0000000..cb08743 --- /dev/null +++ b/src/main/java/com/nis/domain/ServicesRequestLog.java @@ -0,0 +1,220 @@ +/** + *@Title: ServicesRequestLog.java + *@Package com.nis.domain + *@Description TODO + *@author dell + *@date 2016年10月13日 下午3:39:14 + *@version 版本号 + */ +package com.nis.domain; + +import java.io.Serializable; +import java.util.Date; + +import com.nis.util.JsonMapper; + +/** + * @ClassName: ServicesRequestLog.java + * @Description: TODO + * @author (dell) + * @date 2016年10月13日 下午3:39:14 + * @version V1.0 + */ +public class ServicesRequestLog implements Serializable { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 3374409440640840339L; + private Long id; + private String operator; + private String version; + private Integer opAction; + private Date opTime; + private String requestContent; + private Date requestTime; + private Long consumerTime; + private String requestIp; + private Integer businessCode; + private String exceptionInfo; + private String serverIp; + + /** + * serverIp + * @return serverIp + */ + + public String getServerIp() { + return serverIp; + } + /** + * @param serverIp the serverIp to set + */ + public void setServerIp(String serverIp) { + this.serverIp = serverIp; + } + /** + * businessCode + * @return businessCode + */ + + public Integer getBusinessCode() { + return businessCode; + } + /** + * @param businessCode the businessCode to set + */ + public void setBusinessCode(Integer businessCode) { + this.businessCode = businessCode; + } + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * operator + * @return operator + */ + + public String getOperator() { + return operator; + } + /** + * @param operator the operator to set + */ + public void setOperator(String operator) { + this.operator = operator; + } + /** + * version + * @return version + */ + + public String getVersion() { + return version; + } + /** + * @param version the version to set + */ + public void setVersion(String version) { + this.version = version; + } + /** + * opAction + * @return opAction + */ + + public Integer getOpAction() { + return opAction; + } + /** + * @param opAction the opAction to set + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + /** + * opTime + * @return opTime + */ + + public Date getOpTime() { + return opTime; + } + /** + * @param opTime the opTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * requestContent + * @return requestContent + */ + + public String getRequestContent() { + return requestContent; + } + /** + * @param requestContent the requestContent to set + */ + public void setRequestContent(String requestContent) { + this.requestContent = requestContent; + } + /** + * @param requestContent the requestContent to set + */ + public void setRequestContent(Object requestContent) { + this.requestContent = JsonMapper.getInstance().toJsonString(requestContent); + } + /** + * requestTime + * @return requestTime + */ + + public Date getRequestTime() { + return requestTime; + } + /** + * @param requestTime the requestTime to set + */ + public void setRequestTime(Date requestTime) { + this.requestTime = requestTime; + } + /** + * consumerTime + * @return consumerTime + */ + + public Long getConsumerTime() { + return consumerTime; + } + /** + * @param consumerTime the consumerTime to set + */ + public void setConsumerTime(Long consumerTime) { + this.consumerTime = consumerTime; + } + /** + * requestIp + * @return requestIp + */ + + public String getRequestIp() { + return requestIp; + } + /** + * @param requestIp the requestIp to set + */ + public void setRequestIp(String requestIp) { + this.requestIp = requestIp; + } + /** + * exceptionInfo + * @return exceptionInfo + */ + + public String getExceptionInfo() { + return exceptionInfo; + } + /** + * @param exceptionInfo the exceptionInfo to set + */ + public void setExceptionInfo(String exceptionInfo) { + this.exceptionInfo = exceptionInfo; + } + +} diff --git a/src/main/java/com/nis/domain/SrcIp.java b/src/main/java/com/nis/domain/SrcIp.java new file mode 100644 index 0000000..951f6e5 --- /dev/null +++ b/src/main/java/com/nis/domain/SrcIp.java @@ -0,0 +1,145 @@ +package com.nis.domain; + +public class SrcIp { + private Integer seqId; + + private Integer ipStartAddr; + + private Integer ipEndAddr; + + private Integer ipAddrRange; + + private String ipStartString; + + private String ipEndString; + + private Integer port; + + private Long ispId; + + private Long areaId; + + private Integer flag; + + private String description; + + private Integer yl1; + + private String yl2; + + + private String searchIp; + + + public String getSearchIp() { + return searchIp; + } + + public void setSearchIp(String searchIp) { + this.searchIp = searchIp; + } + + public Integer getSeqId() { + return seqId; + } + + public void setSeqId(Integer seqId) { + this.seqId = seqId; + } + + public Integer getIpStartAddr() { + return ipStartAddr; + } + + public void setIpStartAddr(Integer ipStartAddr) { + this.ipStartAddr = ipStartAddr; + } + + public Integer getIpEndAddr() { + return ipEndAddr; + } + + public void setIpEndAddr(Integer ipEndAddr) { + this.ipEndAddr = ipEndAddr; + } + + public Integer getIpAddrRange() { + return ipAddrRange; + } + + public void setIpAddrRange(Integer ipAddrRange) { + this.ipAddrRange = ipAddrRange; + } + + public String getIpStartString() { + return ipStartString; + } + + public void setIpStartString(String ipStartString) { + this.ipStartString = ipStartString == null ? null : ipStartString.trim(); + } + + public String getIpEndString() { + return ipEndString; + } + + public void setIpEndString(String ipEndString) { + this.ipEndString = ipEndString == null ? null : ipEndString.trim(); + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public Long getIspId() { + return ispId; + } + + public void setIspId(Long ispId) { + this.ispId = ispId; + } + + public Long getAreaId() { + return areaId; + } + + public void setAreaId(Long areaId) { + this.areaId = areaId; + } + + public Integer getFlag() { + return flag; + } + + public void setFlag(Integer flag) { + this.flag = flag; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public Integer getYl1() { + return yl1; + } + + public void setYl1(Integer yl1) { + this.yl1 = yl1; + } + + public String getYl2() { + return yl2; + } + + public void setYl2(String yl2) { + this.yl2 = yl2 == null ? null : yl2.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/StatLogEntity.java b/src/main/java/com/nis/domain/StatLogEntity.java new file mode 100644 index 0000000..56da282 --- /dev/null +++ b/src/main/java/com/nis/domain/StatLogEntity.java @@ -0,0 +1,203 @@ +/** +* @Title: StatLogEntity.java +* @Package com.nis.domain +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午10:49:01 +* @version V1.0 +*/ +package com.nis.domain; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.google.common.collect.Maps; +import com.nis.util.Configurations; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: StatLogEntity +* @Description: TODO(日志报表公共实体部分) +* @author (ddm) +* @date 2016年9月1日 上午10:16:54 +* @version V1.0 +*/ +public abstract class StatLogEntity implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -5210683756718456730L; + + @ApiModelProperty(value="私有标签", required=true) + protected Integer service; + @ApiModelProperty(value="生效系统", required=true) + protected Integer activeSys; + @ApiModelProperty(value="A版总计", required=true) + protected Long asum; + @ApiModelProperty(value="B版总计", required=true) + protected Long bsum; + @ApiModelProperty(value="全A+单B数量", required=true) + protected Long absum; + @ApiModelProperty(value="统计时间", required=true) + protected Date statTime; + + protected String searchStatStartTime; + protected String searchStatEndTime; + protected String searchService; + protected String searchStatActiveSys; + + + @JsonSerialize(using=JsonDateSerializer.class) + public Date getStatTime() { + return statTime; + } + public void setStatTime(Date statTime) { + this.statTime = statTime; + } + + public Integer getActiveSys() { + return activeSys; + } + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + public Integer getService() { + return service; + } + + + public void setService(Integer service) { + this.service = service; + } + + + public Long getAbsum() { + return absum; + } + public Long getBsum() { + return bsum; + } + public void setAbsum(Long absum) { + this.absum = absum; + } + public void setBsum(Long bsum) { + this.bsum = bsum; + } + public Long getAsum() { + return asum; + } + public void setAsum(Long asum) { + this.asum = asum; + } + + + @JsonIgnore + public String getSearchStatStartTime() { + return searchStatStartTime; + } + + + public void setSearchStatStartTime(String searchStatStartTime) { + this.searchStatStartTime = searchStatStartTime; + } + + @JsonIgnore + public String getSearchStatEndTime() { + return searchStatEndTime; + } + + + public void setSearchStatEndTime(String searchStatEndTime) { + this.searchStatEndTime = searchStatEndTime; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchStatActiveSys() { + return searchStatActiveSys; + } + public void setSearchStatActiveSys(String searchStatActiveSys) { + this.searchStatActiveSys = searchStatActiveSys; + } + + /** + * 当前实体分页对象 + */ + protected Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + protected Map sqlMap; + + /** + * @Title: + * @Description: TODO + * @param 入参 + */ + public StatLogEntity() { + super(); + } + + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null){ + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null){ + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + + /** + * 获取数据库名称 + */ + @JsonIgnore + public String getDbName(){ + return Configurations.getStringProperty("jdbc.type", "mysql"); + } + + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + +} diff --git a/src/main/java/com/nis/domain/SysArea.java b/src/main/java/com/nis/domain/SysArea.java new file mode 100644 index 0000000..d1d69be --- /dev/null +++ b/src/main/java/com/nis/domain/SysArea.java @@ -0,0 +1,80 @@ +package com.nis.domain; + + +public class SysArea extends TreeEntity{ + + private static final long serialVersionUID = -6425455761476080303L; + + private String code; + + private String type; + + private String remarks; + + private double longitude; + + private double latitude; + + private Integer delFlag; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code == null ? null : code.trim(); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks == null ? null : remarks.trim(); + } + + public Integer getDelFlag() { + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + this.delFlag = delFlag; + } + + + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + public double getLatitude() { + return latitude; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + @Override + public SysArea getParent() { + return parent; + } + + @Override + public void setParent(SysArea parent) { + this.parent = parent; + + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/SysDataDictionaryItem.java b/src/main/java/com/nis/domain/SysDataDictionaryItem.java new file mode 100644 index 0000000..f17ca8a --- /dev/null +++ b/src/main/java/com/nis/domain/SysDataDictionaryItem.java @@ -0,0 +1,76 @@ +package com.nis.domain; + +import java.io.Serializable; + + +public class SysDataDictionaryItem implements Serializable { + private static final long serialVersionUID = 1L; + private Long id; + private String itemCode; + private String itemValue; + private String itemDesc; + private int itemSort; + private SysDataDictionaryName sysDataDictionaryName; + private int dictionaryId; + + public int getItemSort() { + return itemSort; + } + public void setItemSort(int itemSort) { + this.itemSort = itemSort; + } + private int status; + + private int type; + + public Long getId() { + return id; + } + public String getItemCode() { + return itemCode; + } + public String getItemValue() { + return itemValue; + } + public String getItemDesc() { + return itemDesc; + } + public int getStatus() { + return status; + } + public int getType() { + return type; + } + public SysDataDictionaryName getSysDataDictionaryName() { + return sysDataDictionaryName; + } + public void setId(Long id) { + this.id = id; + } + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + public void setItemValue(String itemValue) { + this.itemValue = itemValue; + } + public void setItemDesc(String itemDesc) { + this.itemDesc = itemDesc; + } + public void setStatus(int status) { + this.status = status; + } + public void setType(int type) { + this.type = type; + } + public void setSysDataDictionaryName(SysDataDictionaryName sysDataDictionaryName) { + this.sysDataDictionaryName = sysDataDictionaryName; + } + public int getDictionaryId() { + return dictionaryId; + } + public void setDictionaryId(int dictionaryId) { + this.dictionaryId = dictionaryId; + } + + +} diff --git a/src/main/java/com/nis/domain/SysDataDictionaryName.java b/src/main/java/com/nis/domain/SysDataDictionaryName.java new file mode 100644 index 0000000..658ecb3 --- /dev/null +++ b/src/main/java/com/nis/domain/SysDataDictionaryName.java @@ -0,0 +1,116 @@ +package com.nis.domain; + +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.google.common.collect.Lists; + +public class SysDataDictionaryName extends BaseEntity { + + private static final long serialVersionUID = 8475518325068404528L; + + private String moduleName; + + private String mark; + + private String remark; + + private String revision; + + private Date createTime; + + private Date modifyTime; + + private Integer status; + + private List dictItemList = Lists.newArrayList(); + + private Date beginDate; // 开始日期 + private Date endDate; // 结束日期 + + + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName == null ? null : moduleName.trim(); + } + + public String getMark() { + return mark; + } + + public void setMark(String mark) { + this.mark = mark == null ? null : mark.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getRevision() { + return revision; + } + + public void setRevision(String revision) { + this.revision = revision == null ? null : revision.trim(); + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public List getDictItemList() { + return dictItemList; + } + + public void setDictItemList(List dictItemList) { + this.dictItemList = dictItemList; + } + + public Date getBeginDate() { + return beginDate; + } + + public void setBeginDate(Date beginDate) { + this.beginDate = beginDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/SysLog.java b/src/main/java/com/nis/domain/SysLog.java new file mode 100644 index 0000000..387ebb9 --- /dev/null +++ b/src/main/java/com/nis/domain/SysLog.java @@ -0,0 +1,180 @@ +package com.nis.domain; + +import java.util.Date; +import java.util.Map; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.nis.util.StringUtils; + + +public class SysLog extends BaseEntity{ + private static final long serialVersionUID = -926412650391800311L; + + private Integer type;//日志类型:运行日志(1000-系统登录 1001-系统退出)、操作(2000-添加 2001-删除 2002-修改 2003-查询) \404 未知操作 + + private String title;// 日志标题 + + private Date createDate;//创建日期 + + private String remoteAddr;// 操作用户的IP地址 + + private String userAgent;// 操作用户代理信息 + + private String requestUri;// 操作的URI + + private String method;// 操作的方式 + + private Integer state;//0-失败 1-成功 + + private String params; // 操作提交的数据 + + private String exception; // 异常信息 + + private Long consumerTime;//消费时间 + + public Long getConsumerTime() { + return consumerTime; + } + + public void setConsumerTime(Long consumerTime) { + this.consumerTime = consumerTime; + } + + private Date beginDate; // 开始日期 + private Date endDate; // 结束日期 + + + + public Date getBeginDate() { + return beginDate; + } + + public void setBeginDate(Date beginDate) { + this.beginDate = beginDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title == null ? null : title.trim(); + } + + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public String getRemoteAddr() { + return remoteAddr; + } + + public void setRemoteAddr(String remoteAddr) { + this.remoteAddr = remoteAddr == null ? null : remoteAddr.trim(); + } + + public String getUserAgent() { + return userAgent; + } + + public void setUserAgent(String userAgent) { + this.userAgent = userAgent == null ? null : userAgent.trim(); + } + + public String getRequestUri() { + return requestUri; + } + + public void setRequestUri(String requestUri) { + this.requestUri = requestUri == null ? null : requestUri.trim(); + } + + public String getMethod() { + return method; + } + + public void setMethod(String method) { + this.method = method == null ? null : method.trim(); + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + + public String getParams() { + return params; + } + + public void setParams(String params) { + this.params = params; + } + + public String getException() { + return exception; + } + + public void setException(String exception) { + this.exception = exception; + } + + private String createBy;// 创建者 + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + /** + * 设置请求参数 + * @param paramMap + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void setParams(Map paramMap){ + if (paramMap == null){ + return; + } + StringBuilder params = new StringBuilder(); + for (Map.Entry param : ((Map)paramMap).entrySet()){ + params.append(("".equals(params.toString()) ? "" : "&") + param.getKey() + "="); + String paramValue = (param.getValue() != null && param.getValue().length > 0 ? param.getValue()[0] : ""); + params.append(StringUtils.abbr(StringUtils.endsWithIgnoreCase(param.getKey(), "password") ? "" : paramValue, 100)); + } + this.params = params.toString(); + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/SysMenu.java b/src/main/java/com/nis/domain/SysMenu.java new file mode 100644 index 0000000..3609fcc --- /dev/null +++ b/src/main/java/com/nis/domain/SysMenu.java @@ -0,0 +1,253 @@ +package com.nis.domain; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class SysMenu extends BaseEntity{ + + private static final long serialVersionUID = 8586837252075033023L; + + + private SysMenu parent; // 父级菜单 + + private Long parentId; + + private String parentIds; + + private String name; + + private Integer sort; + + private String href; + + private String target; + + private String icon; + + private Integer isShow; + + private String permission; + + private SysUser createBy; // 创建者 + + private Date createDate; + + private SysUser updateBy; + + private Date updateDate; + + private String remarks; + + private Integer delFlag; + + private Integer quickAction; + + private String menuBg; + + private List children = new ArrayList(); + + public SysMenu(){ + super(); + this.sort = 30; + this.isShow = 1; + } + + public SysMenu(Long id){ + super(id); + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public Long getParentId() { + return (parent != null && parent.getId() != null) ? parent.getId() : 0 ; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public String getParentIds() { + return parentIds; + } + + public void setParentIds(String parentIds) { + this.parentIds = parentIds == null ? null : parentIds.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public String getHref() { + return href; + } + + public void setHref(String href) { + this.href = href == null ? null : href.trim(); + } + + public String getTarget() { + return target; + } + + public void setTarget(String target) { + this.target = target == null ? null : target.trim(); + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon == null ? null : icon.trim(); + } + + public String getMenuBg() { + return menuBg; + } + + public void setMenuBg(String menuBg) { + this.menuBg = menuBg; + } + + + + public Integer getIsShow() { + return isShow; + } + + public void setIsShow(Integer isShow) { + this.isShow = isShow; + } + + public String getPermission() { + return permission; + } + + public void setPermission(String permission) { + this.permission = permission == null ? null : permission.trim(); + } + + + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + + + public SysUser getCreateBy() { + return createBy; + } + + public void setCreateBy(SysUser createBy) { + this.createBy = createBy; + } + + public SysUser getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(SysUser updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks == null ? null : remarks.trim(); + } + + + + public Integer getDelFlag() { + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + this.delFlag = delFlag; + } + + public Integer getQuickAction() { + return quickAction; + } + + public void setQuickAction(Integer quickAction) { + this.quickAction = quickAction; + } + + @JsonIgnore + public static void sortList(List list, List sourcelist, Long parentId, boolean cascade){ + for (int i=0; i implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = 7057026197597361766L; + + private SysArea area; + + private String code; + + private Integer type;// 机构类型(1:公司;2:部门;3:小组) + + private Integer grade;// 机构等级(1:一级;2:二级;3:三级;4:四级) + + private Integer jobType;//部门职责分类 + + private String address; + + private String zipCode; + + private String master; + + private String phone; + + private String fax; + + private String email; + + private Integer useable; + + private SysUser primaryPerson; + + private SysUser deputyPerson; + + private String remarks; + + private Integer delFlag; + + private Date createTime; + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + private List childDeptList;//快速添加子部门 + + public SysOffice(){ + super(); + this.type = 2; + } + + public SysOffice(Long id){ + super(id); + } + + + + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code == null ? null : code.trim(); + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getGrade() { + return grade; + } + + public void setGrade(Integer grade) { + this.grade = grade; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + public String getZipCode() { + return zipCode; + } + + public void setZipCode(String zipCode) { + this.zipCode = zipCode == null ? null : zipCode.trim(); + } + + public String getMaster() { + return master; + } + + public void setMaster(String master) { + this.master = master == null ? null : master.trim(); + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone == null ? null : phone.trim(); + } + + public String getFax() { + return fax; + } + + public void setFax(String fax) { + this.fax = fax == null ? null : fax.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public Integer getUseable() { + return useable; + } + + public void setUseable(Integer useable) { + this.useable = useable; + } + + + + public SysOffice getParent() { + return parent; + } + + public void setParent(SysOffice parent) { + this.parent = parent; + } + + public SysArea getArea() { + return area; + } + + public void setArea(SysArea area) { + this.area = area; + } + + public SysUser getPrimaryPerson() { + return primaryPerson; + } + + public void setPrimaryPerson(SysUser primaryPerson) { + this.primaryPerson = primaryPerson; + } + + public SysUser getDeputyPerson() { + return deputyPerson; + } + + public void setDeputyPerson(SysUser deputyPerson) { + this.deputyPerson = deputyPerson; + } + + public List getChildDeptList() { + return childDeptList; + } + + public void setChildDeptList(List childDeptList) { + this.childDeptList = childDeptList; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks == null ? null : remarks.trim(); + } + + public Integer getDelFlag() { + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + this.delFlag = delFlag; + } + + public Integer getJobType() { + return jobType; + } + + public void setJobType(Integer jobType) { + this.jobType = jobType; + } + + + + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/SysRole.java b/src/main/java/com/nis/domain/SysRole.java new file mode 100644 index 0000000..bc82ba1 --- /dev/null +++ b/src/main/java/com/nis/domain/SysRole.java @@ -0,0 +1,132 @@ +package com.nis.domain; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import com.google.common.collect.Lists; + +public class SysRole extends BaseEntity{ + private static final long serialVersionUID = -5388120268433030734L; + private String name; + public String getOldName() { + return oldName; + } + + public void setOldName(String oldName) { + this.oldName = oldName; + } + + private String oldName; // 原角色名称 + private String roleType; + private Integer dataScope; + private String remark; + private List menuList = Lists.newArrayList(); // 拥有菜单列表 + + + public List getMenuList() { + return menuList; + } + + public void setMenuList(List menuList) { + this.menuList = menuList; + } + + public Integer getDataScope() { + return dataScope; + } + + public void setDataScope(Integer dataScope) { + this.dataScope = dataScope; + } + + private Integer status; + + private Date createTime; + + // 数据范围(1:所有数据;2:所在公司及以下数据;3:所在公司数据;4:所在部门及以下数据;5:所在部门数据;8:所在单位及以下数据;9:所在单位数据) + public static final Integer DATA_SCOPE_ALL = 1; + public static final Integer DATA_SCOPE_COMPANY_AND_CHILD = 2; + public static final Integer DATA_SCOPE_COMPANY = 3; + public static final Integer DATA_SCOPE_OFFICE_AND_CHILD = 4; + public static final Integer DATA_SCOPE_OFFICE = 5; + public static final Integer DATA_SCOPE_ENTITY_AND_CHILD = 6; + public static final Integer DATA_SCOPE_ENTITY = 7; + + + + + public String getRoleType() { + return roleType; + } + + public void setRoleType(String roleType) { + this.roleType = roleType; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public List getMenuIdList() { + List menuIdList = Lists.newArrayList(); + for (SysMenu menu : menuList) { + menuIdList.add(menu.getId()); + } + return menuIdList; + } + + public void setMenuIdList(List menuIdList) { + menuList = Lists.newArrayList(); + for (String menuId : menuIdList) { + SysMenu menu = new SysMenu(); + menu.setId(Long.parseLong(menuId)); + menuList.add(menu); + } + } + + public String getMenuIds() { + return StringUtils.join(getMenuIdList(), ","); + } + + public void setMenuIds(String menuIds) { + menuList = Lists.newArrayList(); + if (menuIds != null){ + String[] ids = StringUtils.split(menuIds, ","); + setMenuIdList(Lists.newArrayList(ids)); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/SysUser.java b/src/main/java/com/nis/domain/SysUser.java new file mode 100644 index 0000000..1ad76b1 --- /dev/null +++ b/src/main/java/com/nis/domain/SysUser.java @@ -0,0 +1,243 @@ +package com.nis.domain; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.collect.Lists; +import com.nis.util.Collections3; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.util.excel.ExcelField; +import com.nis.util.excel.fieldtype.RoleListType; + + + +public class SysUser extends BaseEntity { + private static final long serialVersionUID = -4871709358302801032L; + private String loginId; + private String photo; // 头像 + private String name; + private String email;//电子邮箱 + private String password; + private String newPassword; // 新密码 + private SysRole role; + + + + private String oldLoginId;// 原登录名 + private Date createTime; + private Integer status; + private Integer identity;//用户身份标识 1-信访办 0-办理人员 + private List userRoleList = new ArrayList(); + private SysOffice company;//所属公司 + private SysOffice entity;//归属单位 + private SysOffice office;//用户所在部门 + + + + public SysUser() { + super(); + } + + public SysUser(Long id, String loginId) { + super(); + this.id = id; + this.loginId = loginId; + } + + + + + public SysUser(Long id, String loginId, String name, String email, + String password, String oldLoginId, Date createTime, Integer status) { + super(); + this.id = id; + this.loginId = loginId; + this.name = name; + this.email = email; + this.password = password; + this.oldLoginId = oldLoginId; + this.createTime = createTime; + this.status = status; + } + + public String getPhoto() { + return photo; + } + + public void setPhoto(String photo) { + this.photo = photo; + } + + + + + public SysOffice getEntity() { + return entity; + } + + public void setEntity(SysOffice entity) { + this.entity = entity; + } + + public String getOldLoginId() { + return oldLoginId; + } + public void setOldLoginId(String oldLoginId) { + this.oldLoginId = oldLoginId; + } + + @ExcelField(title="姓名", align=2, sort=40) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public Integer getStatus() { + return status; + } + + public Integer getIdentity() { + return identity; + } + + public void setIdentity(Integer identity) { + this.identity = identity; + } + + public SysOffice getOffice() { + return office; + } + + public void setOffice(SysOffice office) { + this.office = office; + } + + + + public SysOffice getCompany() { + return company; + } + + public void setCompany(SysOffice company) { + this.company = company; + } + + public SysRole getRole() { + return role; + } + + public void setRole(SysRole role) { + this.role = role; + } + + public String getNewPassword() { + return newPassword; + } + + public void setNewPassword(String newPassword) { + this.newPassword = newPassword; + } + + + @ExcelField(title="拥有角色", align=1, sort=800, fieldType=RoleListType.class) + public List getUserRoleList() { + return userRoleList; + } + + public void setUserRoleList(List userRoleList) { + this.userRoleList = userRoleList; + } + + + public void setStatus(Integer status) { + this.status = status; + } + + + public boolean isAdmin(){ + return isAdmin(this.loginId); + } + + public static boolean isAdmin(String loginId){ + return loginId != null && "admin".equals(loginId); + } + + + @JsonIgnore + public List getRoleIdList() { + List roleIdList = Lists.newArrayList(); + for (SysRole role : userRoleList) { + roleIdList.add(role.getId()); + } + return roleIdList; + } + + public void setRoleIdList(List roleIdList) { + userRoleList = Lists.newArrayList(); + for (Long roleId : roleIdList) { + SysRole role = new SysRole(); + role.setId(roleId); + userRoleList.add(role); + } + } + + /** + * 用户拥有的角色名称字符串, 多个角色名称用','分隔. + */ + public String getRoleNames() { + return Collections3.extractToString(userRoleList, "name", ","); + } + + + + + + public String getPassword() { + return this.password; + } + + public void setPassword(String password) { + this.password = password; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelField(title="创建日期", type=1, align=1, sort=110) + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + + @ExcelField(title="登录名", align=1, sort=20) + public String getLoginId() { + return loginId; + } + + public void setLoginId(String loginId) { + this.loginId = loginId; + } + + @ExcelField(title="邮箱", align=1, sort=50) + public String getEmail() { + return email; + } + + + public void setEmail(String email) { + this.email = email; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/TreeEntity.java b/src/main/java/com/nis/domain/TreeEntity.java new file mode 100644 index 0000000..5788dfe --- /dev/null +++ b/src/main/java/com/nis/domain/TreeEntity.java @@ -0,0 +1,79 @@ +package com.nis.domain; + + + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.nis.util.Reflections; +import com.nis.util.StringUtil; + +/** + * 数据Entity类 + * @author ThinkGem + * @version 2014-05-16 + */ +public abstract class TreeEntity extends BaseEntity { + + private static final long serialVersionUID = 1L; + + protected T parent; // 父级编号 + protected String parentIds; // 所有父级编号 + protected String name; // 机构名称 + protected Long sort; // 排序 + + public TreeEntity() { + super(); + this.sort = 30L; + } + + public TreeEntity(Long id) { + super(id); + } + + /** + * 父对象,只能通过子类实现,父类实现mybatis无法读取 + * @return + */ + @JsonBackReference + public abstract T getParent(); + + /** + * 父对象,只能通过子类实现,父类实现mybatis无法读取 + * @return + */ + public abstract void setParent(T parent); + + public String getParentIds() { + return parentIds; + } + + public void setParentIds(String parentIds) { + this.parentIds = parentIds; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + + public Long getSort() { + return sort; + } + + public void setSort(Long sort) { + this.sort = sort; + } + + public Long getParentId() { + Long id = null; + if (parent != null){ + id = (Long)Reflections.getFieldValue(parent, "id"); + } + return StringUtil.isEmpty(id) ? 0 : id; + } + +} diff --git a/src/main/java/com/nis/domain/WebServiceClient.java b/src/main/java/com/nis/domain/WebServiceClient.java new file mode 100644 index 0000000..d0634db --- /dev/null +++ b/src/main/java/com/nis/domain/WebServiceClient.java @@ -0,0 +1,135 @@ +package com.nis.domain; + +import com.nis.util.Configurations; + +public class WebServiceClient { + private final String endPoint = Configurations.getStringProperty("webservice.esb.endpoint", ""); //固定不变ebs服务器名称 + private final int connectionTimeOut = Configurations.getIntProperty("webservice.request.timeout", 60000);//webservice 链接超时时间 毫秒 + private String ns;//webservice 要获取服务空间url + private String methodName;//要调用的方法名称 + private String rid; + private String sid; + private int pageSize = Configurations.getIntProperty("webservice.data.pagesize", 20); //分页获取的数量 + private int currentPage = Configurations.getIntProperty("webservice.data.currentpage", 1);//当前页 + private String updateTime;//增量更新时间 + private String param="";//方法调用最后一个参数,根据实际情况填写 + + + public WebServiceClient(String ns, String methodName, String rid, String sid, String updateTime) { + super(); + this.ns = ns; + this.methodName = methodName; + this.rid = rid; + this.sid = sid; + this.updateTime = updateTime; + } + + + /** + * 获取方法参数值列表 + * @return + */ + public String[] getOpVals() { + String[] vals = null; + if (methodName.equals(Configurations.getStringProperty("webservice.method.name.ql", ""))) { + vals = new String[] {String.valueOf(pageSize), String.valueOf(currentPage), param}; + } else if (methodName.equals(Configurations.getStringProperty("webservice.method.name.zl", ""))) { + vals = new String[] {String.valueOf(pageSize), String.valueOf(currentPage), updateTime, param}; + } + + return vals; + } + + + /** + * 获取方法参数列表 + * @return + */ + public String[] getOpArgs() { + String[] args = null; + if (methodName.equals(Configurations.getStringProperty("webservice.method.name.ql", ""))) { + args = new String[] {"pageSize","currentPage","param"}; + } else if (methodName.equals(Configurations.getStringProperty("webservice.method.name.zl", ""))) { + args = new String[] {"pageSize","currentPage","updateTime","param"}; + } + + return args; + } + + + + public void incrementPage (){ + currentPage = currentPage +1 ; + } + + + + public String getNs() { + return ns; + } + public void setNs(String ns) { + this.ns = ns; + } + public String getMethodName() { + return methodName; + } + public void setMethodName(String methodName) { + this.methodName = methodName; + } + public String getRid() { + return rid; + } + public void setRid(String rid) { + this.rid = rid; + } + public String getSid() { + return sid; + } + public void setSid(String sid) { + this.sid = sid; + } + public int getPageSize() { + return pageSize; + } + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + public String getParam() { + return param; + } + + + public void setParam(String param) { + this.param = param; + } + + + public int getConnectionTimeOut() { + return connectionTimeOut; + } + + + public int getCurrentPage() { + return currentPage; + } + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + public String getEndPoint() { + return endPoint; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + + + + + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigCommonSource.java b/src/main/java/com/nis/domain/restful/ConfigCommonSource.java new file mode 100644 index 0000000..ade8e89 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigCommonSource.java @@ -0,0 +1,88 @@ +/** +* @Title: ConfigResource.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月31日 下午8:32:43 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; + +/** +* @ClassName: ConfigResource +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月31日 下午8:32:43 +* @version V1.0 +*/ +public abstract class ConfigCommonSource implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 152715081015545848L; + protected String version;//默认版本1.0 + protected String operator;//操作人员 + protected Date opTime;//操作时间 + protected Integer opAction;//操作行为 1-插入 2-更新 3-删除 4-查询(暂无) + /** + * @return version + */ + public String getVersion() { + return version; + } + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + /** + * @return operator + */ + public String getOperator() { + return operator; + } + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + /** + * @return opTime + */ + + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + + + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigCompile.java b/src/main/java/com/nis/domain/restful/ConfigCompile.java new file mode 100644 index 0000000..33e0a6a --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigCompile.java @@ -0,0 +1,460 @@ +/** +* @Title: DfConfigCompile.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午9:36:28 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfConfigCompile + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午9:36:28 + * @version V1.0 + */ +public class ConfigCompile implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 546753235262247839L; + @ApiModelProperty(value = "配置ID", required = true) + private Long compileId; + @ApiModelProperty(value = "业务ID", required = true) + private Long service; + @ApiModelProperty(value = "动作", required = true) + private Integer action; + @ApiModelProperty(value = "有害类型", required = false) + private Integer contType; + @ApiModelProperty(value = "有害性质", required = false) + private Integer attrType; + @ApiModelProperty(value = "内容标签", required = false) + private String contLabel; + @ApiModelProperty(value = "任务", required = false) + private Integer taskId; + @ApiModelProperty(value = "保障期", required = false) + private Integer guaranteeId; + @ApiModelProperty(value = "事件", required = false) + private Integer affAirId; + @ApiModelProperty(value = "子话题", required = false) + private Integer topIcId; + @ApiModelProperty(value = "是否黑名单", required = true) + private Long doBlackList; + @ApiModelProperty(value = "是否生成日志", required = true) + private Integer doLog; + @ApiModelProperty(value = "生效范围", required = true) + private Integer activeSys; + @ApiModelProperty(value = "生效系统", required = true) + private String effectiveRange; + @ApiModelProperty(value = "管控比例", required = true) + private Long configPercent; + @ApiModelProperty(value = "管控方式", required = true) + private Integer configOption; + @ApiModelProperty(value = "开始时间", required = true) + private Date startTime; + @ApiModelProperty(value = "结束时间", required = true) + private Date endTime; + @ApiModelProperty(value = "用户自定义域", required = true) + private String userRegion; + @ApiModelProperty(value = "有效标志", required = true) + private Integer isValid; + @ApiModelProperty(value = "包含分组数量", required = true) + private Integer groupNum; + @ApiModelProperty(value = "父配置ID", required = true) + private Long fatherCfgId; + @ApiModelProperty(value = "操作时间", required = true) + private Date opTime; + @ApiModelProperty(value = "本地更新时间 ", required = true) + private Date lastUpdate; + + @ApiModelProperty(value = "编译分组关系列表", required = true) + private List groupRelationList; + + + + @ApiModelProperty(value = "字符串域分组列表", access = "", required = true) + private List strRegionList; + + @ApiModelProperty(value = "IP域分组列表", required = true) + private List ipRegionList; + + @ApiModelProperty(value = "数值域分组列表", required = true) + private List numRegionList; + + @ApiModelProperty(value="版本序列号", required=true) + private Long procSeq; + + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + public Integer getActiveSys() { + return activeSys; + } + + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + public Long getCompileId() { + return compileId; + } + + public void setCompileId(Long compileId) { + this.compileId = compileId; + } + + /** + * @return service + */ + public Long getService() { + return service; + } + + /** + * @param service + * 要设置的 service + */ + public void setService(Long service) { + this.service = service; + } + + /** + * @return action + */ + public Integer getAction() { + return action; + } + + /** + * @param action + * 要设置的 action + */ + public void setAction(Integer action) { + this.action = action; + } + + public Integer getContType() { + return contType; + } + + public void setContType(Integer contType) { + this.contType = contType; + } + + public Integer getAttrType() { + return attrType; + } + + public void setAttrType(Integer attrType) { + this.attrType = attrType; + } + + public String getContLabel() { + return contLabel; + } + + public void setContLabel(String contLabel) { + this.contLabel = contLabel; + } + + /** + * @return doBlackList + */ + public Long getDoBlackList() { + return doBlackList; + } + + /** + * @param doBlackList + * 要设置的 doBlackList + */ + public void setDoBlackList(Long doBlackList) { + this.doBlackList = doBlackList; + } + + /** + * @return doLog + */ + public Integer getDoLog() { + return doLog; + } + + /** + * @param doLog + * 要设置的 doLog + */ + public void setDoLog(Integer doLog) { + this.doLog = doLog; + } + + /** + * @return effectiveRange + */ + public String getEffectiveRange() { + return effectiveRange; + } + + /** + * @param effectiveRange + * 要设置的 effectiveRange + */ + public void setEffectiveRange(String effectiveRange) { + this.effectiveRange = effectiveRange; + } + + /** + * @return configPercent + */ + public Long getConfigPercent() { + return configPercent; + } + + /** + * @param configPercent + * 要设置的 configPercent + */ + public void setConfigPercent(Long configPercent) { + this.configPercent = configPercent; + } + + /** + * @return configOption + */ + public Integer getConfigOption() { + return configOption; + } + + /** + * @param configOption + * 要设置的 configOption + */ + public void setConfigOption(Integer configOption) { + this.configOption = configOption; + } + + /** + * @return startTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getStartTime() { + return startTime; + } + + /** + * @param startTime + * 要设置的 startTime + */ + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + /** + * @return endTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getEndTime() { + return endTime; + } + + /** + * @param endTime + * 要设置的 endTime + */ + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + /** + * @return userRegion + */ + public String getUserRegion() { + return userRegion; + } + + /** + * @param userRegion + * 要设置的 userRegion + */ + public void setUserRegion(String userRegion) { + this.userRegion = userRegion; + } + + /** + * @return isValid + */ + public Integer getIsValid() { + return isValid; + } + + /** + * @param isValid + * 要设置的 isValid + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + /** + * @return groupNum + */ + public Integer getGroupNum() { + return groupNum; + } + + /** + * @param groupNum + * 要设置的 groupNum + */ + public void setGroupNum(Integer groupNum) { + this.groupNum = groupNum; + } + + /** + * @return fatherCfgId + */ + public Long getFatherCfgId() { + return fatherCfgId; + } + + /** + * @param fatherCfgId + * 要设置的 fatherCfgId + */ + public void setFatherCfgId(Long fatherCfgId) { + this.fatherCfgId = fatherCfgId; + } + + /** + * @return opTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime + * 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + /** + * @return groupRelationList + */ + public List getGroupRelationList() { + return groupRelationList; + } + + /** + * @param groupRelationList + * 要设置的 groupRelationList + */ + public void setGroupRelationList(List groupRelationList) { + this.groupRelationList = groupRelationList; + } + + /** + * @return strRegionList + */ + public List getStrRegionList() { + return strRegionList; + } + + /** + * @param strRegionList + * 要设置的 strRegionList + */ + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + /** + * @return ipRegionList + */ + public List getIpRegionList() { + return ipRegionList; + } + + /** + * @param ipRegionList + * 要设置的 ipRegionList + */ + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + /** + * @return numRegionList + */ + @ApiModelProperty(value = "数值域分组列表", required = true) + public List getNumRegionList() { + return numRegionList; + } + + /** + * @param numRegionList + * 要设置的 numRegionList + */ + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public Integer getTaskId() { + return taskId; + } + + public void setTaskId(Integer taskId) { + this.taskId = taskId; + } + + public Integer getGuaranteeId() { + return guaranteeId; + } + + public void setGuaranteeId(Integer guaranteeId) { + this.guaranteeId = guaranteeId; + } + + public Integer getAffAirId() { + return affAirId; + } + + public void setAffAirId(Integer affAirId) { + this.affAirId = affAirId; + } + + public Integer getTopIcId() { + return topIcId; + } + + public void setTopIcId(Integer topIcId) { + this.topIcId = topIcId; + } + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } +} diff --git a/src/main/java/com/nis/domain/restful/ConfigCompileTest.java b/src/main/java/com/nis/domain/restful/ConfigCompileTest.java new file mode 100644 index 0000000..9966bc2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigCompileTest.java @@ -0,0 +1,82 @@ +/** +* @Title: DfConfigCompile.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午9:36:28 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.Page; + +/** + * @ClassName: DfConfigCompile + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午9:36:28 + * @version V1.0 + */ +public class ConfigCompileTest extends ConfigCompile { + + /** + * + */ + private static final long serialVersionUID = 3662236229622771720L; + private Integer pagesNo; // 当前页码 + private Integer pagesSize;// 每页显示条数 + private Long pagesCount;// 总记录数,设置为“-1”表示不查询总数 + private Page page; + private String searchStartTime; + private String searchEndTime; + + public Integer getPagesNo() { + return pagesNo; + } + + public void setPagesNo(Integer pagesNo) { + this.pagesNo = pagesNo; + } + + public Integer getPagesSize() { + return pagesSize; + } + + public void setPagesSize(Integer pagesSize) { + this.pagesSize = pagesSize; + } + + public Long getPagesCount() { + return pagesCount; + } + + public void setPagesCount(Long pagesCount) { + this.pagesCount = pagesCount; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + public String getSearchStartTime() { + return searchStartTime; + } + + public void setSearchStartTime(String searchStartTime) { + this.searchStartTime = searchStartTime; + } + + public String getSearchEndTime() { + return searchEndTime; + } + + public void setSearchEndTime(String searchEndTime) { + this.searchEndTime = searchEndTime; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigFile.java b/src/main/java/com/nis/domain/restful/ConfigFile.java new file mode 100644 index 0000000..97997d0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigFile.java @@ -0,0 +1,37 @@ +/** +* @Title: ConfigFile.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (DDN) +* @date 2016年09月21日 下午5:36:28 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +import org.springframework.web.multipart.MultipartFile; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: ConfigFile + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (DDM) + * @date 2016年09月21日 下午5:36:28 + * @version V1.0 + */ +public class ConfigFile extends ConfigCommonSource { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -863523890174554410L; + @ApiModelProperty(value = "上传文件列表", required = true) + private MultipartFile[] files; + + public MultipartFile[] getFiles() { + return files; + } + public void setFiles(MultipartFile[] files) { + this.files = files; + } +} diff --git a/src/main/java/com/nis/domain/restful/ConfigGroupRelation.java b/src/main/java/com/nis/domain/restful/ConfigGroupRelation.java new file mode 100644 index 0000000..e950272 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigGroupRelation.java @@ -0,0 +1,135 @@ +/** +* @Title: ConfigGroupRelation.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:14:39 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: ConfigGroupRelation + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午10:14:39 + * @version V1.0 + */ +public class ConfigGroupRelation implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -9021829042309605139L; + @ApiModelProperty(value = "id", required = true) + private Long id; + @ApiModelProperty(value = "分组ID", required = true) + private Long groupId; + @ApiModelProperty(value = "编译ID", required = true) + private Long compileId; + @ApiModelProperty(value = "有效标志", required = true) + private Integer isValid; + @ApiModelProperty(value = "操作时间", required = true) + private Date opTime; + @ApiModelProperty(value = "本地更新时间", required = true) + private Date lastUpdate; + @ApiModelProperty(value = "版本序列号", required = true) + private Long procSeq; + + @JsonIgnore + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + /** + * @return groupId + */ + public Long getGroupId() { + return groupId; + } + + /** + * @param groupId + * 要设置的 groupId + */ + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + /** + * @return compileId + */ + public Long getCompileId() { + return compileId; + } + + /** + * @param compileId + * 要设置的 compileId + */ + public void setCompileId(Long compileId) { + this.compileId = compileId; + } + + /** + * @return isValid + */ + public Integer getIsValid() { + return isValid; + } + + /** + * @param isValid + * 要设置的 isValid + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + /** + * @return opTime + */ + @JsonSerialize(using = JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime + * 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigGroupRelationTest.java b/src/main/java/com/nis/domain/restful/ConfigGroupRelationTest.java new file mode 100644 index 0000000..0e3ff8e --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigGroupRelationTest.java @@ -0,0 +1,10 @@ +package com.nis.domain.restful; + +public class ConfigGroupRelationTest extends ConfigGroupRelation{ + + /** + * + */ + private static final long serialVersionUID = -1253613918276476050L; + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigPzIdSource.java b/src/main/java/com/nis/domain/restful/ConfigPzIdSource.java new file mode 100644 index 0000000..b214902 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigPzIdSource.java @@ -0,0 +1,72 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName:ConfigPzIdSource + * @Description:TODO(这里用一句话描述这个类的作用) + * @author (zdx) + * @date 2017年9月13日 上午10:39:01 + * @version V1.0 + */ +public class ConfigPzIdSource implements Serializable{ + + private static final long serialVersionUID = 6435602537565546676L; + @ApiModelProperty(value="表名",required = true) + private String sourceName = "CONFIG_COMPILE"; + @ApiModelProperty(value="配置Id数量",required = true) + private Integer num = 1; + @ApiModelProperty(value="配置Id列表",required = true) + private List pzIdList; + /** + * + */ + public ConfigPzIdSource() { + super(); + // TODO Auto-generated constructor stub + } + + /** + * @param sourceName + * @param num + * @param pzIdList + */ + public ConfigPzIdSource(String sourceName, Integer num, List pzIdList) { + super(); + this.sourceName = sourceName; + this.num = num; + this.pzIdList = pzIdList; + } + + + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public Integer getNum() { + return num; + } + + public void setNum(Integer num) { + this.num = num; + } + + + public List getPzIdList() { + return pzIdList; + } + + public void setPzIdList(List pzIdList) { + this.pzIdList = pzIdList; + } +} diff --git a/src/main/java/com/nis/domain/restful/ConfigSource.java b/src/main/java/com/nis/domain/restful/ConfigSource.java new file mode 100644 index 0000000..a418b89 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigSource.java @@ -0,0 +1,129 @@ +/** +* @Title: ConfigSource.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午9:31:24 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; + +/** +* @ClassName: ConfigSource +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月29日 下午9:31:24 +* @version V1.0 +*/ +public class ConfigSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2567497760237621930L; + private static final String DEFAULT_VERSION = "1.0"; + private List configCompileList; //编译配置列表 + /** + * @Title: + * @Description: TODO + * @param 入参 + */ + public ConfigSource() { + this.version = DEFAULT_VERSION; + } + + public ConfigSource(String Version) { + this.version = Version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * @return configCompileList + */ + public List getConfigCompileList() { + return configCompileList; + } + + /** + * @param configCompileList 要设置的 configCompileList + */ + public void setConfigCompileList(List configCompileList) { + this.configCompileList = configCompileList; + } + + + + + + + + + + + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigSourceTest.java b/src/main/java/com/nis/domain/restful/ConfigSourceTest.java new file mode 100644 index 0000000..5f6ec62 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigSourceTest.java @@ -0,0 +1,25 @@ +/** +* @Title: ConfigSource.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午9:31:24 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** + * @ClassName: ConfigSource + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午9:31:24 + * @version V1.0 + */ +public class ConfigSourceTest extends ConfigSource { + + /** + * + */ + private static final long serialVersionUID = -2641336050368126171L; + +} diff --git a/src/main/java/com/nis/domain/restful/ConfigState.java b/src/main/java/com/nis/domain/restful/ConfigState.java new file mode 100644 index 0000000..b8d96c0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ConfigState.java @@ -0,0 +1,49 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * @ClassName: ConfigState + * @Description: TODO(配置状态更新记录表) + * @author (rkg) + * @date 2016年9月13日下午4:39:06 + * @version V1.0 + */ +public class ConfigState implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -6394128231495072838L; + private String tableName; + private Date opTime; + + public ConfigState() { + super(); + } + + public ConfigState(String tableName, Date opTime) { + super(); + this.tableName = tableName; + this.opTime = opTime; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DataDictionaryName.java b/src/main/java/com/nis/domain/restful/DataDictionaryName.java new file mode 100644 index 0000000..cd2dceb --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DataDictionaryName.java @@ -0,0 +1,69 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.List; + +public class DataDictionaryName implements Serializable { + /** + * + */ + private static final long serialVersionUID = -1639528299931243248L; + private Long dictNameId; + private String dataDictName; + private Long isValid; + private List dictValueList; + + public DataDictionaryName() { + super(); + } + + public DataDictionaryName(Long dictNameId, Long isValid) { + super(); + this.dictNameId = dictNameId; + this.isValid = isValid; + } + + public DataDictionaryName(String dataDictName) { + super(); + this.dataDictName = dataDictName; + } + + public DataDictionaryName(Long dictNameId, String dataDictName, List dictValueList) { + super(); + this.dictNameId = dictNameId; + this.dataDictName = dataDictName; + this.dictValueList = dictValueList; + } + + public Long getDictNameId() { + return dictNameId; + } + + public void setDictNameId(Long dictNameId) { + this.dictNameId = dictNameId; + } + + public String getDataDictName() { + return dataDictName; + } + + public void setDataDictName(String dataDictName) { + this.dataDictName = dataDictName; + } + + public List getDictValueList() { + return dictValueList; + } + + public void setDictValueList(List dictValueList) { + this.dictValueList = dictValueList; + } + + public Long getIsValid() { + return isValid; + } + + public void setIsValid(Long isValid) { + this.isValid = isValid; + } +} diff --git a/src/main/java/com/nis/domain/restful/DataDictionaryValue.java b/src/main/java/com/nis/domain/restful/DataDictionaryValue.java new file mode 100644 index 0000000..6b29f70 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DataDictionaryValue.java @@ -0,0 +1,125 @@ +package com.nis.domain.restful; + +import java.io.Serializable; + +import com.nis.domain.Page; + +public class DataDictionaryValue implements Serializable { + /** + * + */ + private static final long serialVersionUID = -8485746474419535801L; + private Long dictValueId; + private Long dictNameId; + private String dataDictValue; + private Long isValid; + /** + * 界面查询需要的字段,不新建vo了直接放到这个po里 + */ + private String dataDictName; + private Integer pagesNo; // 当前页码 + private Integer pagesSize;// 每页显示条数 + private Long pagesCount;// 总记录数,设置为“-1”表示不查询总数 + private Page page; + + public DataDictionaryValue() { + super(); + } + + public DataDictionaryValue(Long dictValueId) { + super(); + this.dictValueId = dictValueId; + } + + public DataDictionaryValue(Long dictValueId, Long isValid) { + super(); + this.dictValueId = dictValueId; + this.isValid = isValid; + } + + public DataDictionaryValue(Long dictNameId, String dataDictValue) { + super(); + this.dictNameId = dictNameId; + this.dataDictValue = dataDictValue; + } + + public DataDictionaryValue(Long dictValueId, Long dictNameId, String dataDictValue) { + super(); + this.dictValueId = dictValueId; + this.dictNameId = dictNameId; + this.dataDictValue = dataDictValue; + } + + public Long getDictValueId() { + return dictValueId; + } + + public void setDictValueId(Long dictValueId) { + this.dictValueId = dictValueId; + } + + public Long getDictNameId() { + return dictNameId; + } + + public void setDictNameId(Long dictNameId) { + this.dictNameId = dictNameId; + } + + public String getDataDictValue() { + return dataDictValue; + } + + public void setDataDictValue(String dataDictValue) { + this.dataDictValue = dataDictValue; + } + + public String getDataDictName() { + return dataDictName; + } + + public void setDataDictName(String dataDictName) { + this.dataDictName = dataDictName; + } + + public Integer getPagesNo() { + return pagesNo; + } + + public void setPagesNo(Integer pagesNo) { + this.pagesNo = pagesNo; + } + + public Integer getPagesSize() { + return pagesSize; + } + + public void setPagesSize(Integer pagesSize) { + this.pagesSize = pagesSize; + } + + public Long getPagesCount() { + return pagesCount; + } + + public void setPagesCount(Long pagesCount) { + this.pagesCount = pagesCount; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + public Long getIsValid() { + return isValid; + } + + public void setIsValid(Long isValid) { + this.isValid = isValid; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfAttrStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfAttrStatLogDaily.java new file mode 100644 index 0000000..22f70a5 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfAttrStatLogDaily.java @@ -0,0 +1,47 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfAttrStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="性质", required=true) + protected Integer attrType; + + protected String searchAttrType; + + public Integer getAttrType() { + return attrType; + } + public void setAttrType(Integer attrType) { + this.attrType = attrType; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfAttrStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfAttrStatLogMonth.java new file mode 100644 index 0000000..cb92e32 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfAttrStatLogMonth.java @@ -0,0 +1,29 @@ +/** +* @Title: DfTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfAttrStatLogMonth extends DfAttrStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfAttrTypeReport.java b/src/main/java/com/nis/domain/restful/DfAttrTypeReport.java new file mode 100644 index 0000000..f51c003 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfAttrTypeReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfAttrTypeReport + * @Description: 管控性质实时统计 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DfAttrTypeReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -9186632214937498812L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "性质", required = true) + protected Integer attrType; + + protected String searchAttrType; + protected String searchService; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Integer getAttrType() { + return attrType; + } + + public void setAttrType(Integer attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogDaily.java new file mode 100644 index 0000000..985ceff --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogDaily.java @@ -0,0 +1,39 @@ +/** +* @Title: DfDestIpCounrtyStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfDestIpCounrtyStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfDestIpCounrtyStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="国家", required=true) + protected String destCountry; + + public String getDestCountry() { + return destCountry; + } + public void setDestCountry(String destCountry) { + this.destCountry = destCountry; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogMonth.java new file mode 100644 index 0000000..9ac566a --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDestIpCounrtyStatLogMonth.java @@ -0,0 +1,26 @@ +/** +* @Title: DfDestIpCounrtyStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +/** +* @ClassName: DfDestIpCounrtyStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfDestIpCounrtyStatLogMonth extends DfDestIpCounrtyStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfDestIpCountryReport.java b/src/main/java/com/nis/domain/restful/DfDestIpCountryReport.java new file mode 100644 index 0000000..a9277e1 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDestIpCountryReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfDestIpCountryReport + * @Description: 管控境内目的IP(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DfDestIpCountryReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -6490028574641528475L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "目的IP所属国家", required = true) + protected String destCountry; + + protected String searchService; + protected String searchDestCountry; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public String getDestCountry() { + return destCountry; + } + + public void setDestCountry(String destCountry) { + this.destCountry = destCountry; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchDestCountry() { + return searchDestCountry; + } + + public void setSearchDestCountry(String searchDestCountry) { + this.searchDestCountry = searchDestCountry; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfDestIpReport.java b/src/main/java/com/nis/domain/restful/DfDestIpReport.java new file mode 100644 index 0000000..8cc247c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDestIpReport.java @@ -0,0 +1,24 @@ +package com.nis.domain.restful; + +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfDestIpReport extends DfReportEntity{ + + /** + * serialVersionUID + */ + private static final long serialVersionUID = -6785031994558744311L; + + + @ApiModelProperty(value = "目的IP所属国家", required = true) + protected String destCountry; + + public String getDestCountry() { + return destCountry; + } + public void setDestCountry(String destCountry) { + this.destCountry = destCountry; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfDjLogStatistics.java b/src/main/java/com/nis/domain/restful/DfDjLogStatistics.java new file mode 100644 index 0000000..1e679db --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDjLogStatistics.java @@ -0,0 +1,35 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; + +/** + * @ClassName: DfDjLogStatistics + * @Description: 封堵日志总量统计 + * @author (zbc) + * @date 2016年11月14日 下午4:00:00 + * @version V1.0 + */ +public class DfDjLogStatistics extends StatLogEntity { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = -2664087481901057237L; + + + @Override + @JsonIgnore + public Integer getService() { + return super.getService(); + } + + @Override + @JsonIgnore + public Date getStatTime() { + return super.getStatTime(); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfDjNestLog.java b/src/main/java/com/nis/domain/restful/DfDjNestLog.java new file mode 100644 index 0000000..d011e65 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDjNestLog.java @@ -0,0 +1,173 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.Page; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfDjNestLog + * @Description: 嵌套信息日志 + * @author (ZBC) + * @date 2016年11月09日 下午02:25:00 + * @version V1.0 + */ +public class DfDjNestLog implements Serializable { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 4112513339553998553L; + + + @ApiModelProperty(value = "本层嵌套ID", required = true) + protected String layerId; + @ApiModelProperty(value = "发现时间", required = true) + protected Date foundTime; + @ApiModelProperty(value = "接收时间", required = true) + protected Date recvTime; + @ApiModelProperty(value = "本层嵌套层数", required = true) + protected Integer layerCnt; + @ApiModelProperty(value = "嵌套协议类型", required = true) + protected String nestProtocol; + @ApiModelProperty(value = "嵌套服务端ip地址", required = true) + protected String nestServerIp; + @ApiModelProperty(value = "嵌套客户端ip地址", required = true) + protected String nestClientIp; + @ApiModelProperty(value = "嵌套服务端端口", required = true) + protected Integer nestServerPort; + @ApiModelProperty(value = "嵌套客户端端口", required = true) + protected Integer nestClientPort; + @ApiModelProperty(value = "外层嵌套关联ID", required = true) + protected String overId; + + + + protected String searchLayerId; + protected String searchActiveSys; + + + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getFoundTime() { + return foundTime; + } + public void setFoundTime(Date foundTime) { + this.foundTime = foundTime; + } + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getRecvTime() { + return recvTime; + } + public void setRecvTime(Date recvTime) { + this.recvTime = recvTime; + } + + public Integer getLayerCnt() { + return layerCnt; + } + public void setLayerCnt(Integer layerCnt) { + this.layerCnt = layerCnt; + } + + public String getNestProtocol() { + return nestProtocol; + } + public void setNestProtocol(String nestProtocol) { + this.nestProtocol = nestProtocol; + } + + public String getNestServerIp() { + return nestServerIp; + } + public void setNestServerIp(String nestServerIp) { + this.nestServerIp = nestServerIp; + } + + public String getNestClientIp() { + return nestClientIp; + } + public void setNestClientIp(String nestClientIp) { + this.nestClientIp = nestClientIp; + } + + public Integer getNestServerPort() { + return nestServerPort; + } + public void setNestServerPort(Integer nestServerPort) { + this.nestServerPort = nestServerPort; + } + + public Integer getNestClientPort() { + return nestClientPort; + } + public void setNestClientPort(Integer nestClientPort) { + this.nestClientPort = nestClientPort; + } + + public String getOverId() { + return overId; + } + public void setOverId(String overId) { + this.overId = overId; + } + + public String getLayerId() { + return layerId; + } + public void setLayerId(String layerId) { + this.layerId = layerId; + } + + @JsonIgnore + public String getSearchLayerId() { + return searchLayerId; + } + public void setSearchLayerId(String searchLayerId) { + this.searchLayerId = searchLayerId; + } + + @JsonIgnore + public String getSearchActiveSys() { + return searchActiveSys; + } + public void setSearchActiveSys(String searchActiveSys) { + this.searchActiveSys = searchActiveSys; + } + + + + /** + * 当前实体分页对象 + */ + protected Page page; + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null) { + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } +} diff --git a/src/main/java/com/nis/domain/restful/DfDjPzLogStatistics.java b/src/main/java/com/nis/domain/restful/DfDjPzLogStatistics.java new file mode 100644 index 0000000..452583f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDjPzLogStatistics.java @@ -0,0 +1,21 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; + +/** + * @ClassName: DfDjLogStatistics + * @Description: 封堵配置日志总量统计 + * @author (zbc) + * @date 2016年11月14日 下午4:00:00 + * @version V1.0 + */ +public class DfDjPzLogStatistics extends StatLogEntity { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 8210969217513777081L; + + +} diff --git a/src/main/java/com/nis/domain/restful/DfDnsLog.java b/src/main/java/com/nis/domain/restful/DfDnsLog.java new file mode 100644 index 0000000..9dfd3fe --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfDnsLog.java @@ -0,0 +1,104 @@ +/** +* @Title: DfDnsLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfDnsLog +* @Description: DNSXX日志 +* @author (ddm) +* @date 2016年9月7日 上午11:41:50 +* @version V1.0 +*/ +public class DfDnsLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 4159362642752335782L; + + + @ApiModelProperty(value="递归请求", required=true) + protected Long rd; + @ApiModelProperty(value="查询类型", required=true) + protected Long qtype; + @ApiModelProperty(value="查询类", required=true) + protected Long qclass; + @ApiModelProperty(value="OPCODE", required=true) + protected Long opcode; + @ApiModelProperty(value="查询内容", required=true) + protected String qname; + @ApiModelProperty(value="欺骗包的应答类型", required=true) + protected String cheatType; + @ApiModelProperty(value="欺骗包RCODE", required=true) + protected Long cheatRcode; + @ApiModelProperty(value="欺骗策略", required=true) + protected String cheatStrategy; + @ApiModelProperty(value="欺骗记录", required=true) + protected String cheatRr; + public Long getRd() { + return rd; + } + public void setRd(Long rd) { + this.rd = rd; + } + public Long getQtype() { + return qtype; + } + public void setQtype(Long qtype) { + this.qtype = qtype; + } + public Long getQclass() { + return qclass; + } + public void setQclass(Long qclass) { + this.qclass = qclass; + } + public Long getOpcode() { + return opcode; + } + public void setOpcode(Long opcode) { + this.opcode = opcode; + } + public String getQname() { + return qname; + } + public void setQname(String qname) { + this.qname = qname; + } + public void setCheatRcode(Long cheatRcode) { + this.cheatRcode = cheatRcode; + } + public void setCheatType(String cheatType) { + this.cheatType = cheatType; + } + public Long getCheatRcode() { + return cheatRcode; + } + public String getCheatType() { + return cheatType; + } + public String getCheatStrategy() { + return cheatStrategy; + } + public void setCheatStrategy(String cheatStrategy) { + this.cheatStrategy = cheatStrategy; + } + public String getCheatRr() { + return cheatRr; + } + public void setCheatRr(String cheatRr) { + this.cheatRr = cheatRr; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfEntrStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfEntrStatLogDaily.java new file mode 100644 index 0000000..fc47eed --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfEntrStatLogDaily.java @@ -0,0 +1,48 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfEntrStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="局点", required=true) + protected Long entranceId; + + protected String searchEntranceId; + + public Long getEntranceId() { + return entranceId; + } + public void setEntranceId(Long entranceId) { + this.entranceId = entranceId; + } + @JsonIgnore + public String getSearchEntranceId() { + return searchEntranceId; + } + public void setSearchEntranceId(String searchEntranceId) { + this.searchEntranceId = searchEntranceId; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfEntrStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfEntrStatLogMonth.java new file mode 100644 index 0000000..02ff382 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfEntrStatLogMonth.java @@ -0,0 +1,29 @@ +/** +* @Title: DfTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfEntrStatLogMonth extends DfEntrStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfEntranceReport.java b/src/main/java/com/nis/domain/restful/DfEntranceReport.java new file mode 100644 index 0000000..5e8f358 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfEntranceReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfEntranceReport + * @Description: 管控局点(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DfEntranceReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = 6093854240033900622L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "局点信息", required = true) + protected Long entraceId; + + protected String searchService; + protected String searchEntraceId; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getEntraceId() { + return entraceId; + } + + public void setEntraceId(Long entraceId) { + this.entraceId = entraceId; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchEntraceId() { + return searchEntraceId; + } + + public void setSearchEntraceId(String searchEntraceId) { + this.searchEntraceId = searchEntraceId; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfFtpLog.java b/src/main/java/com/nis/domain/restful/DfFtpLog.java new file mode 100644 index 0000000..977b55d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfFtpLog.java @@ -0,0 +1,40 @@ +/** +* @Title: DfFtpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfFtpLog +* @Description: FTPXX日志 +* @author (ddm) +* @date 2016年9月7日 上午12:13:24 +* @version V1.0 +*/ +public class DfFtpLog extends LogEntity{ + + /** + * + */ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -3468485265584781756L; + + @ApiModelProperty(value="FTP链接", required=true) + protected String ftpUrl; + + public String getFtpUrl() { + return ftpUrl; + } + public void setFtpUrl(String ftpUrl) { + this.ftpUrl = ftpUrl; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfHttpKeywordLog.java b/src/main/java/com/nis/domain/restful/DfHttpKeywordLog.java new file mode 100644 index 0000000..06f9cd0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfHttpKeywordLog.java @@ -0,0 +1,121 @@ +/** +* @Title: DfHttpKeywordLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfHttpKeywordLog +* @Description: HTTP关键字XX日志 +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +public class DfHttpKeywordLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -44600714074823563L; + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + @ApiModelProperty(value="应答行", required=true) + protected String resLine; + @ApiModelProperty(value="应答头转储文件", required=true) + protected String resHdrFile; + @ApiModelProperty(value="应答体体转储文件", required=true) + protected String resBodyFile; + + + protected String searchUrl; + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + public String getResLine() { + return resLine; + } + public void setResLine(String resLine) { + this.resLine = resLine; + } + public String getResHdrFile() { + return resHdrFile; + } + public void setResHdrFile(String resHdrFile) { + this.resHdrFile = resHdrFile; + } + public String getResBodyFile() { + return resBodyFile; + } + public void setResBodyFile(String resBodyFile) { + this.resBodyFile = resBodyFile; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfHttpReqLog.java b/src/main/java/com/nis/domain/restful/DfHttpReqLog.java new file mode 100644 index 0000000..5df16c0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfHttpReqLog.java @@ -0,0 +1,146 @@ +/** +* @Title: DfHttpReqLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月5日 下午10:18:32 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfHttpReqLog +* @Description: 协议请求XX日志 +* @author (ddm) +* @date 2016年9月5日 下午1:58:33 +* @version V1.0 +*/ +public class DfHttpReqLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1040386874238362829L; + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + @ApiModelProperty(value="Cookie值", required=true) + protected String cookie; + @ApiModelProperty(value="referer值", required=true) + protected String referer; + @ApiModelProperty(value="UA值", required=true) + protected String ua; + @ApiModelProperty(value="请求头用户自定义域名称", required=true) + protected String reqUserDefineKey; + @ApiModelProperty(value="请求头用户自定义域值", required=true) + protected String reqUserDefineValue; + + protected String searchUrl; + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + + public String getCookie() { + return cookie; + } + + public void setCookie(String cookie) { + this.cookie = cookie; + } + + public String getReferer() { + return referer; + } + + public void setReferer(String referer) { + this.referer = referer; + } + + public String getUa() { + return ua; + } + + public void setUa(String ua) { + this.ua = ua; + } + + public String getReqUserDefineKey() { + return reqUserDefineKey; + } + + public void setReqUserDefineKey(String reqUserDefineKey) { + this.reqUserDefineKey = reqUserDefineKey; + } + + public String getReqUserDefineValue() { + return reqUserDefineValue; + } + + public void setReqUserDefineValue(String reqUserDefineValue) { + this.reqUserDefineValue = reqUserDefineValue; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfHttpResLog.java b/src/main/java/com/nis/domain/restful/DfHttpResLog.java new file mode 100644 index 0000000..ec4c116 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfHttpResLog.java @@ -0,0 +1,172 @@ +/** +* @Title: DfHttpResLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午9:59:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfHttpResLog +* @Description: 协议响应XX日志 +* @author (ddm) +* @date 2016年9月7日 上午9:59:30 +* @version V1.0 +*/ +public class DfHttpResLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -6230615037776378250L; + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + @ApiModelProperty(value="应答行", required=true) + protected String resLine; + @ApiModelProperty(value="应答头转储文件", required=true) + protected String resHdrFile; + @ApiModelProperty(value="应答体体转储文件", required=true) + protected String resBodyFile; + + @ApiModelProperty(value="SET-Cookie", required=true) + protected String setCookie; + @ApiModelProperty(value="CONTENT-LEN值", required=true) + protected String contentLen; + @ApiModelProperty(value="CONTENT-TYPE值", required=true) + protected String contentType; + @ApiModelProperty(value="请求头用户自定义域名称", required=true) + protected String resUserDefineKey; + @ApiModelProperty(value="请求头用户自定义域值", required=true) + protected String resUserDefineValue; + + protected String searchUrl; + + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + public String getResLine() { + return resLine; + } + public void setResLine(String resLine) { + this.resLine = resLine; + } + public String getResHdrFile() { + return resHdrFile; + } + public void setResHdrFile(String resHdrFile) { + this.resHdrFile = resHdrFile; + } + public String getResBodyFile() { + return resBodyFile; + } + public void setResBodyFile(String resBodyFile) { + this.resBodyFile = resBodyFile; + } + + public String getSetCookie() { + return setCookie; + } + + public void setSetCookie(String setCookie) { + this.setCookie = setCookie; + } + + public String getContentLen() { + return contentLen; + } + + public void setContentLen(String contentLen) { + this.contentLen = contentLen; + } + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + + public String getResUserDefineKey() { + return resUserDefineKey; + } + + public void setResUserDefineKey(String resUserDefineKey) { + this.resUserDefineKey = resUserDefineKey; + } + + public String getResUserDefineValue() { + return resUserDefineValue; + } + + public void setResUserDefineValue(String resUserDefineValue) { + this.resUserDefineValue = resUserDefineValue; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfIpPortLog.java b/src/main/java/com/nis/domain/restful/DfIpPortLog.java new file mode 100644 index 0000000..f863835 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfIpPortLog.java @@ -0,0 +1,27 @@ +/** +* @Title: DfIpPortLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月31日 下午9:58:33 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; + +/** +* @ClassName: DfIpPortLog +* @Description: 端口XX日志实体 +* @author (darnell) +* @date 2016年8月31日 下午9:58:33 +* @version V1.0 +*/ +public class DfIpPortLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 340154456985429911L; + + +} diff --git a/src/main/java/com/nis/domain/restful/DfIpPortUdp.java b/src/main/java/com/nis/domain/restful/DfIpPortUdp.java new file mode 100644 index 0000000..11c99b1 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfIpPortUdp.java @@ -0,0 +1,268 @@ +/** + *@Title: DfIpPortUdp.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016�?9�?13�? 上午9:11:55 + *@version 版本�? + */ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @ClassName: DfIpPortUdp.java + * @Description: TODO + * @author (wx) + * @date 2016�?9�?13�? 上午9:11:55 + * @version V1.0 + */ +public class DfIpPortUdp extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用�?句话描述这个变量表示�?么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -6162892672391456265L; + @ApiModelProperty(value="序号", required=true) + private Long cfgId; + @ApiModelProperty(value="地址类型", required=true) + private Integer addrType; + @ApiModelProperty(value="源IP", required=true) + private String srcIp; + @ApiModelProperty(value="源IP掩码", required=true) + private String maskSrcIp; + @ApiModelProperty(value="源端口", required=true) + private String srcPort; + @ApiModelProperty(value="源端口掩码", required=true) + private String maskSrcPort; + @ApiModelProperty(value="目的IP", required=true) + private String dstIp; + @ApiModelProperty(value="目的IP掩码", required=true) + private String maskDstIp; + @ApiModelProperty(value="目的端口", required=true) + private String dstPort; + @ApiModelProperty(value="目的端口掩码", required=true) + private String maskDstPort; + @ApiModelProperty(value="协议udp,固定为0", required=true) + private Integer protocol; + @ApiModelProperty(value="方向,0双向,1单向", required=true) + private Integer direction; + @ApiModelProperty(value="有效标志, 0无效,1有效", required=true) + private Integer isValid; + @ApiModelProperty(value="序号", required=true) + private Date opTime; + @ApiModelProperty(value="生效范围", required=true) + private String effectiveRange; + @ApiModelProperty(value="生效系统", required=true) + private Integer activeSys; + private Date lastUpdate; + private Long procSeq; + + /** + * effectiveRange + * @return effectiveRange + */ + + public String getEffectiveRange() { + return effectiveRange; + } + + /** + * @param effectiveRange the effectiveRange to set + */ + public void setEffectiveRange(String effectiveRange) { + this.effectiveRange = effectiveRange; + } + + /** + * activeSys + * @return activeSys + */ + + public Integer getActiveSys() { + return activeSys; + } + + /** + * @param activeSys the activeSys to set + */ + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#getId() + */ + @Override + @JsonIgnore + public Long getId() { + // TODO Auto-generated method stub + return super.getId(); + } + + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#setId(java.lang.Long) + */ + @Override + @JsonIgnore + public void setId(Long id) { + // TODO Auto-generated method stub + super.setId(id); + } + + public Long getCfgId() { + return cfgId; + } + + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + + public Integer getAddrType() { + return addrType; + } + + public void setAddrType(Integer addrType) { + this.addrType = addrType; + } + + public String getSrcIp() { + return srcIp; + } + + public void setSrcIp(String srcIp) { + this.srcIp = srcIp == null ? null : srcIp.trim(); + } + + public String getMaskSrcIp() { + return maskSrcIp; + } + + public void setMaskSrcIp(String maskSrcIp) { + this.maskSrcIp = maskSrcIp == null ? null : maskSrcIp.trim(); + } + + public String getSrcPort() { + return srcPort; + } + + public void setSrcPort(String srcPort) { + this.srcPort = srcPort == null ? null : srcPort.trim(); + } + + public String getMaskSrcPort() { + return maskSrcPort; + } + + public void setMaskSrcPort(String maskSrcPort) { + this.maskSrcPort = maskSrcPort == null ? null : maskSrcPort.trim(); + } + + public String getDstIp() { + return dstIp; + } + + public void setDstIp(String dstIp) { + this.dstIp = dstIp == null ? null : dstIp.trim(); + } + + public String getMaskDstIp() { + return maskDstIp; + } + + public void setMaskDstIp(String maskDstIp) { + this.maskDstIp = maskDstIp == null ? null : maskDstIp.trim(); + } + + public String getDstPort() { + return dstPort; + } + + public void setDstPort(String dstPort) { + this.dstPort = dstPort == null ? null : dstPort.trim(); + } + + public String getMaskDstPort() { + return maskDstPort; + } + + public void setMaskDstPort(String maskDstPort) { + this.maskDstPort = maskDstPort == null ? null : maskDstPort.trim(); + } + + public Integer getProtocol() { + return protocol; + } + + public void setProtocol(Integer protocol) { + this.protocol = protocol; + } + + public Integer getDirection() { + return direction; + } + + public void setDirection(Integer direction) { + this.direction = direction; + } + + public Integer getIsValid() { + return isValid; + } + + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfIpPortUdpSource.java b/src/main/java/com/nis/domain/restful/DfIpPortUdpSource.java new file mode 100644 index 0000000..09842dd --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfIpPortUdpSource.java @@ -0,0 +1,128 @@ +/** + *@Title: DfIpPortUdpSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月13日 上午9:12:48 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DfIpPortUdpSource.java + * @Description: TODO + * @author (dell) + * @date 2016年9月13日 上午9:12:48 + * @version V1.0 + */ +public class DfIpPortUdpSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 5423347084696349283L; + private static final String DEFAULT_VERSION = "1.0"; + private List dfIpPortUdpList; + + /** + * 创建一个新的实例 DfIpPortUdpSource. + * + */ + public DfIpPortUdpSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + + + /** + * 创建一个新的实例 DfIpPortUdpSource. + * + */ + public DfIpPortUdpSource(String version) { + this.version=version; + } + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + + /** + * dfIpPortUdpList + * @return dfIpPortUdpList + */ + + public List getDfIpPortUdpList() { + return dfIpPortUdpList; + } + + + /** + * @param dfIpPortUdpList the dfIpPortUdpList to set + */ + public void setDfIpPortUdpList(List dfIpPortUdpList) { + this.dfIpPortUdpList = dfIpPortUdpList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfIpsecLog.java b/src/main/java/com/nis/domain/restful/DfIpsecLog.java new file mode 100644 index 0000000..5aa93ab --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfIpsecLog.java @@ -0,0 +1,56 @@ +/** +* @Title: DfIpsecLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午1:57:20 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfIpsecLog +* @Description: FTPXX日志 +* @author (ddm) +* @date 2016年9月7日 下午1:57:20 +* @version V1.0 +*/ +public class DfIpsecLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1960565928453529561L; + + @ApiModelProperty(value="交换协议", required=true) + protected Integer exProtocol; + @ApiModelProperty(value="ISAKMP模式", required=true) + protected Long isakmpMode; + + protected String searchExProtocol; + + @JsonIgnore + public String getSearchExProtocol() { + return searchExProtocol; + } + public void setSearchExProtocol(String searchExProtocol) { + this.searchExProtocol = searchExProtocol; + } + + public Integer getExProtocol() { + return exProtocol; + } + public void setExProtocol(Integer exProtocol) { + this.exProtocol = exProtocol; + } + + public Long getIsakmpMode() { + return isakmpMode; + } + public void setIsakmpMode(Long isakmpMode) { + this.isakmpMode = isakmpMode; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfJitAffairDestReport.java b/src/main/java/com/nis/domain/restful/DfJitAffairDestReport.java new file mode 100644 index 0000000..05071ca --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitAffairDestReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitAffairDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 6367339032317209141L; + @ApiModelProperty(value = "子话题", required = true) + private Integer affair; + @ApiModelProperty(value = "事件", required = true) + private Integer topic; + + /** + * 查询部分 + */ + private String searchAffair; + private String searchTopic; + + public DfJitAffairDestReport() { + super(); + } + + public Integer getAffair() { + return affair; + } + + public void setAffair(Integer affair) { + this.affair = affair; + } + + public Integer getTopic() { + return topic; + } + + public void setTopic(Integer topic) { + this.topic = topic; + } + + @JsonIgnore + public String getSearchAffair() { + return searchAffair; + } + + public void setSearchAffair(String searchAffair) { + this.searchAffair = searchAffair; + } + + @JsonIgnore + public String getSearchTopic() { + return searchTopic; + } + + public void setSearchTopic(String searchTopic) { + this.searchTopic = searchTopic; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitAffairSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitAffairSrcReport.java new file mode 100644 index 0000000..9d7c530 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitAffairSrcReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitAffairSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -9081795070814096710L; + @ApiModelProperty(value = "子话题", required = true) + private Integer affair; + @ApiModelProperty(value = "事件", required = true) + private Integer topic; + + /** + * 查询部分 + */ + private String searchAffair; + private String searchTopic; + + public DfJitAffairSrcReport() { + super(); + } + + public Integer getAffair() { + return affair; + } + + public void setAffair(Integer affair) { + this.affair = affair; + } + + public Integer getTopic() { + return topic; + } + + public void setTopic(Integer topic) { + this.topic = topic; + } + + @JsonIgnore + public String getSearchAffair() { + return searchAffair; + } + + public void setSearchAffair(String searchAffair) { + this.searchAffair = searchAffair; + } + + @JsonIgnore + public String getSearchTopic() { + return searchTopic; + } + + public void setSearchTopic(String searchTopic) { + this.searchTopic = searchTopic; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitFlDestReport.java b/src/main/java/com/nis/domain/restful/DfJitFlDestReport.java new file mode 100644 index 0000000..02ebf24 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitFlDestReport.java @@ -0,0 +1,63 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitFlDestReport extends DfJitLogEntity { + + + /** + * + */ + private static final long serialVersionUID = -8661475281697413205L; + @ApiModelProperty(value = "分类", required = true) + private Integer fl; + @ApiModelProperty(value = "性质", required = true) + private Integer xz; + + /** + * 查询部分 + */ + private String searchFl; + private String searchXz; + + public DfJitFlDestReport() { + super(); + } + + public Integer getFl() { + return fl; + } + + public void setFl(Integer fl) { + this.fl = fl; + } + + public Integer getXz() { + return xz; + } + + public void setXz(Integer xz) { + this.xz = xz; + } + + @JsonIgnore + public String getSearchFl() { + return searchFl; + } + + public void setSearchFl(String searchFl) { + this.searchFl = searchFl; + } + + @JsonIgnore + public String getSearchXz() { + return searchXz; + } + + public void setSearchXz(String searchXz) { + this.searchXz = searchXz; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitFlSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitFlSrcReport.java new file mode 100644 index 0000000..b3da017 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitFlSrcReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitFlSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 1866611122134109630L; + @ApiModelProperty(value = "分类", required = true) + private Integer fl; + @ApiModelProperty(value = "性质", required = true) + private Integer xz; + + /** + * 查询部分 + */ + private String searchFl; + private String searchXz; + + public DfJitFlSrcReport() { + super(); + } + + public Integer getFl() { + return fl; + } + + public void setFl(Integer fl) { + this.fl = fl; + } + + public Integer getXz() { + return xz; + } + + public void setXz(Integer xz) { + this.xz = xz; + } + + @JsonIgnore + public String getSearchFl() { + return searchFl; + } + + public void setSearchFl(String searchFl) { + this.searchFl = searchFl; + } + + @JsonIgnore + public String getSearchXz() { + return searchXz; + } + + public void setSearchXz(String searchXz) { + this.searchXz = searchXz; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitGuaranteeDestReport.java b/src/main/java/com/nis/domain/restful/DfJitGuaranteeDestReport.java new file mode 100644 index 0000000..370d66e --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitGuaranteeDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitGuaranteeDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 4886806743747030623L; + + @ApiModelProperty(value = "保障期", required = true) + private Integer guarantee; + + /** + * 查询部分 + */ + private String searchGuarantee; + + public DfJitGuaranteeDestReport() { + super(); + } + + public Integer getGuarantee() { + return guarantee; + } + + public void setGuarantee(Integer guarantee) { + this.guarantee = guarantee; + } + + @JsonIgnore + public String getSearchGuarantee() { + return searchGuarantee; + } + + public void setSearchGuarantee(String searchGuarantee) { + this.searchGuarantee = searchGuarantee; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitGuaranteeSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitGuaranteeSrcReport.java new file mode 100644 index 0000000..3ddb95d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitGuaranteeSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitGuaranteeSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 558117618430759769L; + + @ApiModelProperty(value = "保障期", required = true) + private Integer guarantee; + + /** + * 查询部分 + */ + private String searchGuarantee; + + public DfJitGuaranteeSrcReport() { + super(); + } + + public Integer getGuarantee() { + return guarantee; + } + + public void setGuarantee(Integer guarantee) { + this.guarantee = guarantee; + } + + @JsonIgnore + public String getSearchGuarantee() { + return searchGuarantee; + } + + public void setSearchGuarantee(String searchGuarantee) { + this.searchGuarantee = searchGuarantee; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitIdDestReport.java b/src/main/java/com/nis/domain/restful/DfJitIdDestReport.java new file mode 100644 index 0000000..6e21a9b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitIdDestReport.java @@ -0,0 +1,45 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitIdDestReport extends DfJitLogEntity { + + + /** + * + */ + private static final long serialVersionUID = -3056813909262889527L; + + @ApiModelProperty(value = "配置id", required = true) + private Long id; + + /** + * 查询部分 + */ + private String searchId; + + public DfJitIdDestReport() { + super(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + @JsonIgnore + public String getSearchId() { + return searchId; + } + + public void setSearchId(String searchId) { + this.searchId = searchId; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitIdSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitIdSrcReport.java new file mode 100644 index 0000000..2366466 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitIdSrcReport.java @@ -0,0 +1,46 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitIdSrcReport extends DfJitLogEntity { + + + + /** + * + */ + private static final long serialVersionUID = 1789859856962153038L; + + @ApiModelProperty(value = "配置id", required = true) + private Long id; + + /** + * 查询部分 + */ + private String searchId; + + public DfJitIdSrcReport() { + super(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + @JsonIgnore + public String getSearchId() { + return searchId; + } + + public void setSearchId(String searchId) { + this.searchId = searchId; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitMissionDestReport.java b/src/main/java/com/nis/domain/restful/DfJitMissionDestReport.java new file mode 100644 index 0000000..227fe1f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitMissionDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitMissionDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -4200263721978195939L; + + @ApiModelProperty(value = "任务", required = true) + private Integer mission; + + /** + * 查询部分 + */ + private String searchMission; + + public DfJitMissionDestReport() { + super(); + } + + public Integer getMission() { + return mission; + } + + public void setMission(Integer mission) { + this.mission = mission; + } + + @JsonIgnore + public String getSearchMission() { + return searchMission; + } + + public void setSearchMission(String searchMission) { + this.searchMission = searchMission; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitMissionSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitMissionSrcReport.java new file mode 100644 index 0000000..f7cf417 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitMissionSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitMissionSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 1244851836673765943L; + + @ApiModelProperty(value = "任务", required = true) + private Integer mission; + + /** + * 查询部分 + */ + private String searchMission; + + public DfJitMissionSrcReport() { + super(); + } + + public Integer getMission() { + return mission; + } + + public void setMission(Integer mission) { + this.mission = mission; + } + + @JsonIgnore + public String getSearchMission() { + return searchMission; + } + + public void setSearchMission(String searchMission) { + this.searchMission = searchMission; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitTagDestReport.java b/src/main/java/com/nis/domain/restful/DfJitTagDestReport.java new file mode 100644 index 0000000..8beebab --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitTagDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitTagDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -8057168628547445607L; + + @ApiModelProperty(value = "标签", required = true) + private Integer tag; + + /** + * 查询部分 + */ + private String searchTag; + + public DfJitTagDestReport() { + super(); + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfJitTagSrcReport.java b/src/main/java/com/nis/domain/restful/DfJitTagSrcReport.java new file mode 100644 index 0000000..1a09646 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfJitTagSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfJitTagSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -1338482031809189715L; + + @ApiModelProperty(value = "标签", required = true) + private Integer tag; + + /** + * 查询部分 + */ + private String searchTag; + + public DfJitTagSrcReport() { + super(); + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DfKeyConvertUrl.java b/src/main/java/com/nis/domain/restful/DfKeyConvertUrl.java new file mode 100644 index 0000000..ca54e8e --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfKeyConvertUrl.java @@ -0,0 +1,132 @@ +/** +* @Title: DfKeyConvertUrl.java +* @Package com.nis.domain.restful +* @Description: 关键字业务转换URL日志 +* @author (DDM) +* @date 2016年9月27日 上午9:27:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.Page; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfKeyConvertUrl +* @Description: 关键字业务转换URL日志 +* @author (DDM) +* @date 2016年9月27日 上午9:27:30 +* @version V1.0 +*/ +public class DfKeyConvertUrl implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 7985571037717090551L; + + @ApiModelProperty(value="序列号", required=true) + protected Integer id; + @ApiModelProperty(value="命中关键字ID", required=true) + protected Integer keyId; + @ApiModelProperty(value="URL地址", required=true) + protected String url; + @ApiModelProperty(value="操作时间", required=true) + protected Date opTime; + + + protected String searchId; + protected String optStartTime; + protected String optEndTime; + + @JsonIgnore + public String getOptStartTime() { + return optStartTime; + } + public void setOptStartTime(String optStartTime) { + this.optStartTime = optStartTime; + } + + @JsonIgnore + public String getOptEndTime() { + return optEndTime; + } + public void setOptEndTime(String optEndTime) { + this.optEndTime = optEndTime; + } + @JsonIgnore + public String getSearchId() { + return searchId; + } + public void setSearchId(String searchId) { + this.searchId = searchId; + } + + + /** + * 当前实体分页对象 + */ + protected Page page; + + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null){ + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public Integer getKeyId() { + return keyId; + } + public void setKeyId(Integer keyId) { + this.keyId = keyId; + } + + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfKeyMailAdd.java b/src/main/java/com/nis/domain/restful/DfKeyMailAdd.java new file mode 100644 index 0000000..799c2f0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfKeyMailAdd.java @@ -0,0 +1,134 @@ +/** + * @Title: DfKeyMailAdd.java + * @Package com.nis.domain.restful + * @Description: 关键字业务转换邮件地址日志 + * @author (ZBC) + * @date 2016年11月09日 下午02:25:00 + * @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.Page; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfKeyMailAdd + * @Description: 关键字业务转换邮件地址日志 + * @author (ZBC) + * @date 2016年11月09日 下午02:25:00 + * @version V1.0 + */ +public class DfKeyMailAdd implements Serializable { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = -2380470456434492094L; + + + @ApiModelProperty(value = "序列号", required = true) + protected Integer id; + @ApiModelProperty(value = "命中关键字ID", required = true) + protected Integer keyId; + @ApiModelProperty(value = "邮件地址", required = true) + protected String mailAddr; + @ApiModelProperty(value = "操作时间", required = true) + protected Date opTime; + + protected String searchId; + protected String optStartTime; + protected String optEndTime; + + @JsonIgnore + public String getSearchId() { + return searchId; + } + public void setSearchId(String searchId) { + this.searchId = searchId; + } + @JsonIgnore + public String getOptStartTime() { + return optStartTime; + } + + public void setOptStartTime(String optStartTime) { + this.optStartTime = optStartTime; + } + + @JsonIgnore + public String getOptEndTime() { + return optEndTime; + } + + public void setOptEndTime(String optEndTime) { + this.optEndTime = optEndTime; + } + + /** + * 当前实体分页对象 + */ + protected Page page; + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null) { + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getKeyId() { + return keyId; + } + + public void setKeyId(Integer keyId) { + this.keyId = keyId; + } + + public String getMailAddr() { + return mailAddr; + } + + public void setMailAddr(String mailAddr) { + this.mailAddr = mailAddr; + } + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfL2tpLog.java b/src/main/java/com/nis/domain/restful/DfL2tpLog.java new file mode 100644 index 0000000..ca567cd --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfL2tpLog.java @@ -0,0 +1,71 @@ +/** +* @Title: DfL2tpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午1:23:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfL2tpLog +* @Description: FTPXX日志 +* @author (ddm) +* @date 2016年9月7日 下午1:23:30 +* @version V1.0 +*/ +public class DfL2tpLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -6210309297068552716L; + + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + @ApiModelProperty(value="加密方式", required=true) + protected Integer encryptMode; + @ApiModelProperty(value="用户名称", required=true) + protected String chapName; + @ApiModelProperty(value="内容类型", required=true) + protected Integer contentType; + + public String getChapName() { + return chapName; + } + public void setChapName(String chapName) { + this.chapName = chapName; + } + protected String searchEncryptMode; + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + public Integer getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(Integer encryptMode) { + this.encryptMode = encryptMode; + } + public Integer getContentType() { + return contentType; + } + public void setContentType(Integer contentType) { + this.contentType = contentType; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhAttrDaily.java b/src/main/java/com/nis/domain/restful/DfLwhhAttrDaily.java new file mode 100644 index 0000000..d7684e3 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhAttrDaily.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrDaily + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhAttrDaily extends StatLogEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhAttrMonth.java b/src/main/java/com/nis/domain/restful/DfLwhhAttrMonth.java new file mode 100644 index 0000000..c399ecc --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhAttrMonth.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrDaily + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhAttrMonth extends StatLogEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhAttrReport.java b/src/main/java/com/nis/domain/restful/DfLwhhAttrReport.java new file mode 100644 index 0000000..a4a7e6c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhAttrReport.java @@ -0,0 +1,76 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrReport + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhAttrReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhReport.java b/src/main/java/com/nis/domain/restful/DfLwhhReport.java new file mode 100644 index 0000000..e499aab --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhReport.java @@ -0,0 +1,61 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfLwhhReport + * @Description: 管控来文函号(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DfLwhhReport extends DfReportEntity { + /** + * + */ + private static final long serialVersionUID = -7545794734532459964L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号ID", required = true) + protected Integer lwhh; + + protected String searchService; + protected String searchLwhh; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Integer getLwhh() { + return lwhh; + } + + public void setLwhh(Integer lwhh) { + this.lwhh = lwhh; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfLwhhStatLogDaily.java new file mode 100644 index 0000000..e5c1009 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhStatLogDaily.java @@ -0,0 +1,48 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfLwhhStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="来文函号", required=true) + protected Integer lwhh; + + protected String searchLwhh; + + public Integer getLwhh() { + return lwhh; + } + public void setLwhh(Integer lwhh) { + this.lwhh = lwhh; + } + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfLwhhStatLogMonth.java new file mode 100644 index 0000000..a9f7ba9 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhStatLogMonth.java @@ -0,0 +1,29 @@ +/** +* @Title: DfTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfLwhhStatLogMonth extends DfLwhhStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhTagDaily.java b/src/main/java/com/nis/domain/restful/DfLwhhTagDaily.java new file mode 100644 index 0000000..964aa1d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhTagDaily.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhTagDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhTagMonth.java b/src/main/java/com/nis/domain/restful/DfLwhhTagMonth.java new file mode 100644 index 0000000..35670f4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhTagMonth.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhTagMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfLwhhTagReport.java b/src/main/java/com/nis/domain/restful/DfLwhhTagReport.java new file mode 100644 index 0000000..75360e1 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfLwhhTagReport.java @@ -0,0 +1,76 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfLwhhTagReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfMailLog.java b/src/main/java/com/nis/domain/restful/DfMailLog.java new file mode 100644 index 0000000..34c8602 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfMailLog.java @@ -0,0 +1,91 @@ +/** +* @Title: DfMailLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfMailLog +* @Description: MAILXX日志 +* @author (ddm) +* @date 2016年9月7日 上午10:59:09 +* @version V1.0 +*/ +public class DfMailLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 4734386604389185710L; + + + @ApiModelProperty(value="邮件协议类型", required=true) + protected String mailProto; + @ApiModelProperty(value="发件人", required=true) + protected String mailFrom; + @ApiModelProperty(value="收件人", required=true) + protected String mailTo; + @ApiModelProperty(value="主题", required=true) + protected String subject; + @ApiModelProperty(value="EML文件转储路径", required=true) + protected String emlFile; + + protected String searchMailFrom; + protected String searchMailTo; + + @JsonIgnore + public String getSearchMailFrom() { + return searchMailFrom; + } + public void setSearchMailFrom(String searchMailFrom) { + this.searchMailFrom = searchMailFrom; + } + public void setSearchMailTo(String searchMailTo) { + this.searchMailTo = searchMailTo; + } + @JsonIgnore + public String getSearchMailTo() { + return searchMailTo; + } + + public String getMailProto() { + return mailProto; + } + public void setMailProto(String mailProto) { + this.mailProto = mailProto; + } + public String getMailFrom() { + return mailFrom; + } + public String getMailTo() { + return mailTo; + } + public void setMailTo(String mailTo) { + this.mailTo = mailTo; + } + public void setMailFrom(String mailFrom) { + this.mailFrom = mailFrom; + } + public String getSubject() { + return subject; + } + public void setSubject(String subject) { + this.subject = subject; + } + public String getEmlFile() { + return emlFile; + } + public void setEmlFile(String emlFile) { + this.emlFile = emlFile; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfOpenvpnLog.java b/src/main/java/com/nis/domain/restful/DfOpenvpnLog.java new file mode 100644 index 0000000..5a751ef --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfOpenvpnLog.java @@ -0,0 +1,72 @@ +/** +* @Title: DfOpenvpnLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午1:57:20 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfOpenvpnLog +* @Description: OPENVPNXX日志 +* @author (ddm) +* @date 2016年9月7日 下午2:06:45 +* @version V1.0 +*/ +public class DfOpenvpnLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -5331151634423058789L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="加密方式", required=true) + protected String encryptMode; + @ApiModelProperty(value="是否有HMAC", required=true) + protected Integer hmac; + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + + protected String searchEncryptMode; + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(String encryptMode) { + this.encryptMode = encryptMode; + } + public Integer getHmac() { + return hmac; + } + public void setHmac(Integer hmac) { + this.hmac = hmac; + } + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfPptpLog.java b/src/main/java/com/nis/domain/restful/DfPptpLog.java new file mode 100644 index 0000000..ae24b7c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfPptpLog.java @@ -0,0 +1,65 @@ +/** +* @Title: DfPptpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午1:23:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfPptpLog +* @Description: FTPXX日志 +* @author (ddm) +* @date 2016年9月7日 下午1:23:30 +* @version V1.0 +*/ +public class DfPptpLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 2472051411161697356L; + + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + @ApiModelProperty(value="加密方式", required=true) + protected Integer encryptMode; + @ApiModelProperty(value="内容类型", required=true) + protected Integer contentType; + + protected String searchEncryptMode; + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + public Integer getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(Integer encryptMode) { + this.encryptMode = encryptMode; + } + public Integer getContentType() { + return contentType; + } + public void setContentType(Integer contentType) { + this.contentType = contentType; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfPzReport.java b/src/main/java/com/nis/domain/restful/DfPzReport.java new file mode 100644 index 0000000..415ef29 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfPzReport.java @@ -0,0 +1,63 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: dfPzReport + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:11:22 + * @version V1.0 + */ +public class DfPzReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -6348665724846062686L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "编译配置ID", required = true) + protected Long cfgId; + + protected String searchCfgId; + protected String searchService; + + @JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getCfgId() { + return cfgId; + } + + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfPzReportStat.java b/src/main/java/com/nis/domain/restful/DfPzReportStat.java new file mode 100644 index 0000000..2d3e531 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfPzReportStat.java @@ -0,0 +1,98 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfPzReportSum + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:11:22 + * @version V1.0 + */ +public class DfPzReportStat extends DfReportEntity { + /** + * + */ + private static final long serialVersionUID = -7960862769580690410L; + @ApiModelProperty(value = "私有标签", required = true) + protected Integer service; + @ApiModelProperty(value = "编译配置ID", required = true) + protected Long configId; + @ApiModelProperty(value = "日志总量", required = true) + protected Long sum; + + + protected String searchService; + protected String searchStatActiveSys; + + @JsonIgnore + public String getSearchStatActiveSys() { + return searchStatActiveSys; + } + public void setSearchStatActiveSys(String searchStatActiveSys) { + this.searchStatActiveSys = searchStatActiveSys; + } + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public Long getConfigId() { + return configId; + } + public void setConfigId(Long configId) { + this.configId = configId; + } + @Override + @JsonIgnore + public Long getAsum() { + return super.getAsum(); + } + @Override + @JsonIgnore + public Long getBsum() { + return super.getBsum(); + } + @Override + @JsonIgnore + public Long getCsum() { + return super.getCsum(); + } + + /* (non-Javadoc) + * @see com.nis.domain.DfReportEntity#getAbsum() + */ + @Override + @JsonIgnore + public Long getAbsum() { + // TODO Auto-generated method stub + return super.getAbsum(); + } + public Long getSum() { + return sum; + } + public void setSum(Long sum) { + this.sum = sum; + } + @Override + @JsonIgnore + public Date getReportTime() { + // TODO Auto-generated method stub + return super.getReportTime(); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfServiceReport.java b/src/main/java/com/nis/domain/restful/DfServiceReport.java new file mode 100644 index 0000000..840aa4c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfServiceReport.java @@ -0,0 +1,47 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.DfReportEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: dfServiceReport + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:22:07 + * @version V1.0 + */ +public class DfServiceReport extends DfReportEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -6219213545074023084L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer serviceType; + + protected String searchService; + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + public Integer getServiceType() { + return serviceType; + } + public void setServiceType(Integer serviceType) { + this.serviceType = serviceType; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpAttrDaily.java b/src/main/java/com/nis/domain/restful/DfSrcIpAttrDaily.java new file mode 100644 index 0000000..09fe087 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpAttrDaily.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpAttrDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpAttrMonth.java b/src/main/java/com/nis/domain/restful/DfSrcIpAttrMonth.java new file mode 100644 index 0000000..58deabc --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpAttrMonth.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpAttrMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpAttrReport.java b/src/main/java/com/nis/domain/restful/DfSrcIpAttrReport.java new file mode 100644 index 0000000..c582d88 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpAttrReport.java @@ -0,0 +1,78 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpAttrReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpDomeSticReport.java b/src/main/java/com/nis/domain/restful/DfSrcIpDomeSticReport.java new file mode 100644 index 0000000..0a02831 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpDomeSticReport.java @@ -0,0 +1,81 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfSrcIpDomeSticReport + * @Description: 管控境内源IP(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DfSrcIpDomeSticReport extends DfReportEntity { + /** + * + */ + private static final long serialVersionUID = -7360674711430956834L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "源IP所在省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "源IP所在市", required = true) + protected String srcCity; + + protected String searchService; + protected String searchSrcProvince; + protected String searchSrcCity; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public String getSrcProvince() { + return srcProvince; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + + public String getSrcCity() { + return srcCity; + } + + public void setSrcCity(String srcCity) { + this.srcCity = srcCity; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + + @JsonIgnore + public String getSearchSrcCity() { + return searchSrcCity; + } + + public void setSearchSrcCity(String searchSrcCity) { + this.searchSrcCity = searchSrcCity; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogDaily.java new file mode 100644 index 0000000..0d72e22 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogDaily.java @@ -0,0 +1,51 @@ +/** +* @Title: DfSrcipDomesticStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfSrcipDomesticStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfSrcIpDomesticStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="省", required=true) + protected String srcProvince; + + @ApiModelProperty(value="市", required=true) + protected String srcCity; + + public String getSrcProvince() { + return srcProvince; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + + public String getSrcCity() { + return srcCity; + } + + public void setSrcCity(String srcCity) { + this.srcCity = srcCity; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogMonth.java new file mode 100644 index 0000000..b88c9a9 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpDomesticStatLogMonth.java @@ -0,0 +1,25 @@ +/** +* @Title: DfSrcipDomesticStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** +* @ClassName: DfSrcipDomesticStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfSrcIpDomesticStatLogMonth extends DfSrcIpDomesticStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpReport.java b/src/main/java/com/nis/domain/restful/DfSrcIpReport.java new file mode 100644 index 0000000..9cb1b7b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpReport.java @@ -0,0 +1,33 @@ +package com.nis.domain.restful; + +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DfSrcIpReport extends DfReportEntity{ + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 4386680443050994654L; + + + @ApiModelProperty(value = "源IP所属省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "源IP所属市") + protected String srcCity; + + public String getSrcProvince() { + return srcProvince; + } + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + + public String getSrcCity() { + return srcCity; + } + public void setSrcCity(String srcCity) { + this.srcCity = srcCity; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpTagDaily.java b/src/main/java/com/nis/domain/restful/DfSrcIpTagDaily.java new file mode 100644 index 0000000..f70f7e2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpTagDaily.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpTagDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpTagMonth.java b/src/main/java/com/nis/domain/restful/DfSrcIpTagMonth.java new file mode 100644 index 0000000..525282f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpTagMonth.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpTagMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSrcIpTagReport.java b/src/main/java/com/nis/domain/restful/DfSrcIpTagReport.java new file mode 100644 index 0000000..4832230 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSrcIpTagReport.java @@ -0,0 +1,78 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DfSrcIpTagReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSshLog.java b/src/main/java/com/nis/domain/restful/DfSshLog.java new file mode 100644 index 0000000..12495d7 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSshLog.java @@ -0,0 +1,90 @@ +/** +* @Title: DfSshLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午2:21:10 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfSshLog +* @Description: SSHXX日志 +* @author (ddm) +* @date 2016年9月7日 下午2:21:10 +* @version V1.0 +*/ +public class DfSshLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -8122097197353956263L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="主机密钥", required=true) + protected String hostKey; + @ApiModelProperty(value="主机cookie", required=true) + protected String hostCookie; + @ApiModelProperty(value="加密方式", required=true) + protected String encryptMode; + @ApiModelProperty(value="消息认证码", required=true) + protected String mac; + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + + protected String searchEncryptMode; + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getHostCookie() { + return hostCookie; + } + public String getHostKey() { + return hostKey; + } + public void setHostCookie(String hostCookie) { + this.hostCookie = hostCookie; + } + public void setHostKey(String hostKey) { + this.hostKey = hostKey; + } + public String getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(String encryptMode) { + this.encryptMode = encryptMode; + } + public String getMac() { + return mac; + } + public void setMac(String mac) { + this.mac = mac; + } + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DfSslLog.java b/src/main/java/com/nis/domain/restful/DfSslLog.java new file mode 100644 index 0000000..f369ad6 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfSslLog.java @@ -0,0 +1,78 @@ +/** +* @Title: DfSslLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午2:34:10 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfSslLog +* @Description: SSLXX日志 +* @author (ddm) +* @date 2016年9月7日 下午2:34:10 +* @version V1.0 +*/ +public class DfSslLog extends LogEntity{ + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -1758562698030781445L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="SNI", required=true) + protected String sni; + @ApiModelProperty(value="个体证书转储路径", required=true) + protected String individualCertFile; + @ApiModelProperty(value="中级证书转储路径", required=true) + protected String middleCertFile; + @ApiModelProperty(value="根证书转储路径", required=true) + protected String rootCertFile; + @ApiModelProperty(value="其他证书链转储路径", required=true) + protected String chainCertFile; + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getSni() { + return sni; + } + public void setSni(String sni) { + this.sni = sni; + } + public String getIndividualCertFile() { + return individualCertFile; + } + public void setIndividualCertFile(String individualCertFile) { + this.individualCertFile = individualCertFile; + } + public String getMiddleCertFile() { + return middleCertFile; + } + public void setMiddleCertFile(String middleCertFile) { + this.middleCertFile = middleCertFile; + } + public String getRootCertFile() { + return rootCertFile; + } + public void setRootCertFile(String rootCertFile) { + this.rootCertFile = rootCertFile; + } + public String getChainCertFile() { + return chainCertFile; + } + public void setChainCertFile(String chainCertFile) { + this.chainCertFile = chainCertFile; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DfStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfStatLogDaily.java new file mode 100644 index 0000000..9e1f5a6 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfStatLogDaily.java @@ -0,0 +1,49 @@ +/** +* @Title: DfStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="配置ID", required=true) + protected Long configId; + + protected String searchConfigId; + + public Long getConfigId() { + return configId; + } + public void setConfigId(Long configId) { + this.configId = configId; + } + @JsonIgnore + public String getSearchConfigId() { + return searchConfigId; + } + + + public void setSearchConfigId(String searchConfigId) { + this.searchConfigId = searchConfigId; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfStatLogMonth.java new file mode 100644 index 0000000..b02e2a4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfStatLogMonth.java @@ -0,0 +1,25 @@ +/** +* @Title: DfStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfStatLogMonth extends DfStatLogDaily { + + +} diff --git a/src/main/java/com/nis/domain/restful/DfTagReport.java b/src/main/java/com/nis/domain/restful/DfTagReport.java new file mode 100644 index 0000000..5f4431d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfTagReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: dfTagReport + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:25:38 + * @version V1.0 + */ +public class DfTagReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = 6425675908119093476L; + @ApiModelProperty(value = "标签", required = true) + protected Integer tag; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + + protected String searchTag; + protected String searchService; + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfTagStatLogDaily.java b/src/main/java/com/nis/domain/restful/DfTagStatLogDaily.java new file mode 100644 index 0000000..b5f5694 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfTagStatLogDaily.java @@ -0,0 +1,47 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DfTagStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="标签", required=true) + protected Integer tag; + + protected String searchTag; + + public Integer getTag() { + return tag; + } + public void setTag(Integer tag) { + this.tag = tag; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } +} diff --git a/src/main/java/com/nis/domain/restful/DfTagStatLogMonth.java b/src/main/java/com/nis/domain/restful/DfTagStatLogMonth.java new file mode 100644 index 0000000..5018fb2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfTagStatLogMonth.java @@ -0,0 +1,29 @@ +/** +* @Title: DfTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DfTagStatLogMonth extends DfTagStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DfTunnelRandomLog.java b/src/main/java/com/nis/domain/restful/DfTunnelRandomLog.java new file mode 100644 index 0000000..5c63795 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DfTunnelRandomLog.java @@ -0,0 +1,29 @@ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTunnelRandomLog +* @Description: 隧道协议随机封堵 +* @author (ddm) +* @date 2016年12月23日 上午11:18:14 +* @version V1.0 +*/ +public class DfTunnelRandomLog extends LogEntity{ + + /** + * + */ + private static final long serialVersionUID = 111411360809146865L; + @ApiModelProperty(value="隧道协议信息", required=true) + protected Long tunnelName; + + public Long getTunnelName() { + return tunnelName; + } + public void setTunnelName(Long tunnelName) { + this.tunnelName = tunnelName; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjAttrStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjAttrStatLogDaily.java new file mode 100644 index 0000000..4adc44d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjAttrStatLogDaily.java @@ -0,0 +1,47 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjAttrStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="性质", required=true) + protected Integer attrType; + + protected String searchAttrType; + + public Integer getAttrType() { + return attrType; + } + public void setAttrType(Integer attrType) { + this.attrType = attrType; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjAttrStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjAttrStatLogMonth.java new file mode 100644 index 0000000..b391cdd --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjAttrStatLogMonth.java @@ -0,0 +1,25 @@ +/** +* @Title: DjTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** +* @ClassName: DjTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjAttrStatLogMonth extends DjAttrStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjAttrTypeReport.java b/src/main/java/com/nis/domain/restful/DjAttrTypeReport.java new file mode 100644 index 0000000..35f06c2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjAttrTypeReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfAttrTypeReport + * @Description: 管控性质实时统计 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DjAttrTypeReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -9186632214937498812L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "性质", required = true) + protected Integer attrType; + + protected String searchAttrType; + protected String searchService; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Integer getAttrType() { + return attrType; + } + + public void setAttrType(Integer attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjCkStatLog.java b/src/main/java/com/nis/domain/restful/DjCkStatLog.java new file mode 100644 index 0000000..5f3048c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjCkStatLog.java @@ -0,0 +1,195 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +import javax.xml.bind.annotation.XmlTransient; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.google.common.collect.Maps; +import com.nis.domain.Page; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjCkStatLog implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -8465748814742964183L; + @ApiModelProperty(value = "ID", required = true) + private Long statId; + @ApiModelProperty(value = "配置ID", required = true) + private Long configId; + @ApiModelProperty(value = "业务类型", required = true) + private Integer service; + @ApiModelProperty(value = "生效系统", required = true) + private Integer activeSys; + @ApiModelProperty(value = "国际出入口", required = true) + private Long gjCkId; + @ApiModelProperty(value = "总计", required = true) + private Long sum; + @ApiModelProperty(value = "统计时间", required = true) + private Date capTime; + + private String searchCapStartTime; + private String searchCapEndTime; + private String searchGjCkId; + private String searchCfgId; + private String searchService; + private String searchActiveSys; + /** + * 当前实体分页对象 + */ + private Page page; + + /** + * 自定义SQL(SQL标识,SQL内容) + */ + private Map sqlMap; + + public DjCkStatLog() { + super(); + } + + @JsonIgnore + public Long getStatId() { + return statId; + } + + public void setStatId(Long statId) { + this.statId = statId; + } + + public Long getConfigId() { + return configId; + } + + public void setConfigId(Long configId) { + this.configId = configId; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getGjCkId() { + return gjCkId; + } + + public void setGjCkId(Long gjCkId) { + this.gjCkId = gjCkId; + } + + public Long getSum() { + return sum; + } + + public void setSum(Long sum) { + this.sum = sum; + } + + @JsonSerialize(using = JsonDateSerializer.class) + public Date getCapTime() { + return capTime; + } + + public void setCapTime(Date capTime) { + this.capTime = capTime; + } + + @JsonIgnore + public String getSearchCapStartTime() { + return searchCapStartTime; + } + + public void setSearchCapStartTime(String searchCapStartTime) { + this.searchCapStartTime = searchCapStartTime; + } + + @JsonIgnore + public String getSearchCapEndTime() { + return searchCapEndTime; + } + + public void setSearchCapEndTime(String searchCapEndTime) { + this.searchCapEndTime = searchCapEndTime; + } + + @JsonIgnore + public String getSearchGjCkId() { + return searchGjCkId; + } + + public void setSearchGjCkId(String searchGjCkId) { + this.searchGjCkId = searchGjCkId; + } + + @JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null) { + page = new Page(); + } + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + @JsonIgnore + @XmlTransient + public Map getSqlMap() { + if (sqlMap == null) { + sqlMap = Maps.newHashMap(); + } + return sqlMap; + } + + public void setSqlMap(Map sqlMap) { + this.sqlMap = sqlMap; + } + + public Integer getActiveSys() { + return activeSys; + } + + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + @JsonIgnore + public String getSearchActiveSys() { + return searchActiveSys; + } + + public void setSearchActiveSys(String searchActiveSys) { + this.searchActiveSys = searchActiveSys; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogDaily.java new file mode 100644 index 0000000..f9cb0a4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogDaily.java @@ -0,0 +1,39 @@ +/** +* @Title: DfDestIpCounrtyStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfDestIpCounrtyStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjDestIpCounrtyStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="国家", required=true) + protected String destCountry; + + public String getDestCountry() { + return destCountry; + } + public void setDestCountry(String destCountry) { + this.destCountry = destCountry; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogMonth.java new file mode 100644 index 0000000..559923f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjDestIpCounrtyStatLogMonth.java @@ -0,0 +1,26 @@ +/** +* @Title: DjDestIpCounrtyStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +/** +* @ClassName: DjDestIpCounrtyStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjDestIpCounrtyStatLogMonth extends DjDestIpCounrtyStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjDestIpCountryReport.java b/src/main/java/com/nis/domain/restful/DjDestIpCountryReport.java new file mode 100644 index 0000000..583c883 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjDestIpCountryReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfDestIpCountryReport + * @Description: 管控境内目的IP(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DjDestIpCountryReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -6490028574641528475L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "目的IP所属国家", required = true) + protected String destCountry; + + protected String searchService; + protected String searchDestCountry; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public String getDestCountry() { + return destCountry; + } + + public void setDestCountry(String destCountry) { + this.destCountry = destCountry; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchDestCountry() { + return searchDestCountry; + } + + public void setSearchDestCountry(String searchDestCountry) { + this.searchDestCountry = searchDestCountry; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjDnsLog.java b/src/main/java/com/nis/domain/restful/DjDnsLog.java new file mode 100644 index 0000000..d563bdc --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjDnsLog.java @@ -0,0 +1,128 @@ +/** +* @Title: DjDnsLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Map; + +import com.nis.domain.LogEntity; +import com.nis.domain.Page; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DjDnsLog + * @Description: DNSXX日志 + * @author (zbc) + * @date 2016年9月7日 上午11:41:50 + * @version V1.0 + */ +public class DjDnsLog extends LogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 3747868295576943355L; + + @ApiModelProperty(value = "请求/应答", required = true) + protected Long qr; + @ApiModelProperty(value = "递归请求", required = true) + protected Long rd; + @ApiModelProperty(value = "递归应答", required = true) + protected Long ra; + @ApiModelProperty(value = "资源记录", required = true) + protected String rr; + @ApiModelProperty(value = "查询类型", required = true) + protected Long qtype; + @ApiModelProperty(value = "查询类", required = true) + protected Long qclass; + @ApiModelProperty(value = "OPCODE", required = true) + protected Long opcode; + @ApiModelProperty(value = "查询内容", required = true) + protected String qname; + @ApiModelProperty(value = "DNS:1,DNSSEC:2", required = true) + protected Long dnsSub; + + public DjDnsLog() { + super(); + } + + + public Long getQr() { + return qr; + } + + public void setQr(Long qr) { + this.qr = qr; + } + + public Long getRd() { + return rd; + } + + public void setRd(Long rd) { + this.rd = rd; + } + + public Long getRa() { + return ra; + } + + public void setRa(Long ra) { + this.ra = ra; + } + + public String getRr() { + return rr; + } + + public void setRr(String rr) { + this.rr = rr; + } + + public Long getQtype() { + return qtype; + } + + public void setQtype(Long qtype) { + this.qtype = qtype; + } + + public Long getQclass() { + return qclass; + } + + public void setQclass(Long qclass) { + this.qclass = qclass; + } + + public Long getOpcode() { + return opcode; + } + + public void setOpcode(Long opcode) { + this.opcode = opcode; + } + + public String getQname() { + return qname; + } + + public void setQname(String qname) { + this.qname = qname; + } + + public Long getDnsSub() { + return dnsSub; + } + + public void setDnsSub(Long dnsSub) { + this.dnsSub = dnsSub; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjEntrStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjEntrStatLogDaily.java new file mode 100644 index 0000000..6e8c664 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjEntrStatLogDaily.java @@ -0,0 +1,48 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjEntrStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="局点", required=true) + protected Long entranceId; + + protected String searchEntranceId; + + public Long getEntranceId() { + return entranceId; + } + public void setEntranceId(Long entranceId) { + this.entranceId = entranceId; + } + @JsonIgnore + public String getSearchEntranceId() { + return searchEntranceId; + } + public void setSearchEntranceId(String searchEntranceId) { + this.searchEntranceId = searchEntranceId; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjEntrStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjEntrStatLogMonth.java new file mode 100644 index 0000000..600fcee --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjEntrStatLogMonth.java @@ -0,0 +1,26 @@ +/** +* @Title: DjTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +/** +* @ClassName: DjTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjEntrStatLogMonth extends DjEntrStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjEntranceReport.java b/src/main/java/com/nis/domain/restful/DjEntranceReport.java new file mode 100644 index 0000000..9d9c6fa --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjEntranceReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfEntranceReport + * @Description: 管控局点(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DjEntranceReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = 6093854240033900622L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "局点信息", required = true) + protected Long entraceId; + + protected String searchService; + protected String searchEntraceId; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getEntraceId() { + return entraceId; + } + + public void setEntraceId(Long entraceId) { + this.entraceId = entraceId; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchEntraceId() { + return searchEntraceId; + } + + public void setSearchEntraceId(String searchEntraceId) { + this.searchEntraceId = searchEntraceId; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjFlowControlStop.java b/src/main/java/com/nis/domain/restful/DjFlowControlStop.java new file mode 100644 index 0000000..ff48675 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjFlowControlStop.java @@ -0,0 +1,135 @@ +/** +* @Title: DjFlowControlStop.java +* @Package com.nis.domain.restful +* @Description: 监测规则流控实体 +* @author (zbc) +* @date 2016年9月8日 下午17:51:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.Page; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjFlowControlStop +* @Description: 监测规则流控实体 +* @author (zbc) +* @date 2016年9月8日 下午17:51:30 +* @version V1.0 +*/ +public class DjFlowControlStop implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 5092754867586897432L; + + + @ApiModelProperty(value="配置ID", required=true) + protected Long cfgId; + @ApiModelProperty(value="业务", required=true) + protected Integer service; + @ApiModelProperty(value="动作", required=true) + protected Integer action; + @ApiModelProperty(value="操作时间", required=true) + protected Date opTime; + + + /*protected String searchCfgId;*/ + protected String optStartTime; + protected String optEndTime; + + /*@JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + }*/ + @JsonIgnore + public String getOptStartTime() { + return optStartTime; + } + public void setOptStartTime(String optStartTime) { + this.optStartTime = optStartTime; + } + + @JsonIgnore + public String getOptEndTime() { + return optEndTime; + } + public void setOptEndTime(String optEndTime) { + this.optEndTime = optEndTime; + } + + + + + /** + * 当前实体分页对象 + */ + protected Page page; + + + @JsonIgnore + @XmlTransient + public Page getPage() { + if (page == null){ + page = new Page(); + } + return page; + } + + public Page setPage(Page page) { + this.page = page; + return page; + } + + public Long getCfgId() { + return cfgId; + } + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Integer getAction() { + return action; + } + public void setAction(Integer action) { + this.action = action; + } + + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjFtpLog.java b/src/main/java/com/nis/domain/restful/DjFtpLog.java new file mode 100644 index 0000000..24a01de --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjFtpLog.java @@ -0,0 +1,37 @@ +/** +* @Title: DjFtpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午17:51:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjFtpLog +* @Description: FTPXX日志 +* @author (zbc) +* @date 2016年9月7日 下午17:51:30 +* @version V1.0 +*/ +public class DjFtpLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 172160853794852639L; + + @ApiModelProperty(value="FTP链接", required=true) + protected String ftpUrl; + + public String getFtpUrl() { + return ftpUrl; + } + public void setFtpUrl(String ftpUrl) { + this.ftpUrl = ftpUrl; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjHttpKeywordLog.java b/src/main/java/com/nis/domain/restful/DjHttpKeywordLog.java new file mode 100644 index 0000000..ffd5323 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjHttpKeywordLog.java @@ -0,0 +1,124 @@ +/** +* @Title: DjHttpKeywordLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午16:04:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjHttpKeywordLog +* @Description: HTTP关键字XX日志 +* @author (zbc) +* @date 2016年9月7日 下午16:04:30 +* @version V1.0 +*/ +public class DjHttpKeywordLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -7872876035772453423L; + + + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + @ApiModelProperty(value="应答行", required=true) + protected String resLine; + @ApiModelProperty(value="应答头转储文件", required=true) + protected String resHdrFile; + @ApiModelProperty(value="应答体体转储文件", required=true) + protected String resBodyFile; + + + + protected String searchUrl; + + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + public String getResLine() { + return resLine; + } + public void setResLine(String resLine) { + this.resLine = resLine; + } + public String getResHdrFile() { + return resHdrFile; + } + public void setResHdrFile(String resHdrFile) { + this.resHdrFile = resHdrFile; + } + public String getResBodyFile() { + return resBodyFile; + } + public void setResBodyFile(String resBodyFile) { + this.resBodyFile = resBodyFile; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjHttpReqLog.java b/src/main/java/com/nis/domain/restful/DjHttpReqLog.java new file mode 100644 index 0000000..9d5b9d7 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjHttpReqLog.java @@ -0,0 +1,150 @@ +/** +* @Title: DjHttpReqLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月5日 下午10:18:32 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjHttpReqLog +* @Description: HTTP协议监测请求日志 +* @author (zbc) +* @date 2016年9月5日 下午1:58:33 +* @version V1.0 +*/ +public class DjHttpReqLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2103649235895046586L; + + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + + @ApiModelProperty(value="Cookie值", required=true) + protected String cookie; + @ApiModelProperty(value="referer值", required=true) + protected String referer; + @ApiModelProperty(value="UA值", required=true) + protected String ua; + @ApiModelProperty(value="请求头用户自定义域名称", required=true) + protected String reqUserDefineKey; + @ApiModelProperty(value="请求头用户自定义域值", required=true) + protected String reqUserDefineValue; + + + protected String searchUrl; + + + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + + public String getCookie() { + return cookie; + } + + public void setCookie(String cookie) { + this.cookie = cookie; + } + + public String getReferer() { + return referer; + } + + public void setReferer(String referer) { + this.referer = referer; + } + + public String getUa() { + return ua; + } + + public void setUa(String ua) { + this.ua = ua; + } + + public String getReqUserDefineKey() { + return reqUserDefineKey; + } + + public void setReqUserDefineKey(String reqUserDefineKey) { + this.reqUserDefineKey = reqUserDefineKey; + } + + public String getReqUserDefineValue() { + return reqUserDefineValue; + } + + public void setReqUserDefineValue(String reqUserDefineValue) { + this.reqUserDefineValue = reqUserDefineValue; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjHttpResLog.java b/src/main/java/com/nis/domain/restful/DjHttpResLog.java new file mode 100644 index 0000000..13b86ac --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjHttpResLog.java @@ -0,0 +1,172 @@ +/** +* @Title: DjHttpResLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 上午10:59:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjHttpResLog +* @Description: HTTP协议监测响应日志对象 +* @author (zbc) +* @date 2016年9月7日 上午10:59:30 +* @version V1.0 +*/ +public class DjHttpResLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 6976709092668535766L; + + @ApiModelProperty(value="TCP初始序列号", required=true) + protected Long c2sIsn; + @ApiModelProperty(value="是否HTTP代理标志", required=true) + protected Long httpProxyFlag; + @ApiModelProperty(value="HTTP会话序列号", required=true) + protected Long httpSeq; + @ApiModelProperty(value="url地址", required=true) + protected String url; + @ApiModelProperty(value="请求行", required=true) + protected String reqLine; + @ApiModelProperty(value="请求头转储文件", required=true) + protected String reqHdrFile; + @ApiModelProperty(value="请求体转储文件", required=true) + protected String reqBodyFile; + @ApiModelProperty(value="应答行", required=true) + protected String resLine; + @ApiModelProperty(value="应答头转储文件", required=true) + protected String resHdrFile; + @ApiModelProperty(value="应答体体转储文件", required=true) + protected String resBodyFile; + @ApiModelProperty(value="SET-Cookie", required=true) + protected String setCookie; + @ApiModelProperty(value="CONTENT-LEN值", required=true) + protected String contentLen; + @ApiModelProperty(value="CONTENT-TYPE值", required=true) + protected String contentType; + @ApiModelProperty(value="请求头用户自定义域名称", required=true) + protected String resUserDefineKey; + @ApiModelProperty(value="请求头用户自定义域值", required=true) + protected String resUserDefineValue; + + protected String searchUrl; + + @JsonIgnore + public String getSearchUrl() { + return searchUrl; + } + + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + + public Long getC2sIsn() { + return c2sIsn; + } + public void setC2sIsn(Long c2sIsn) { + this.c2sIsn = c2sIsn; + } + public Long getHttpProxyFlag() { + return httpProxyFlag; + } + public void setHttpProxyFlag(Long httpProxyFlag) { + this.httpProxyFlag = httpProxyFlag; + } + public Long getHttpSeq() { + return httpSeq; + } + public void setHttpSeq(Long httpSeq) { + this.httpSeq = httpSeq; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getReqLine() { + return reqLine; + } + public void setReqLine(String reqLine) { + this.reqLine = reqLine; + } + public String getReqHdrFile() { + return reqHdrFile; + } + public void setReqHdrFile(String reqHdrFile) { + this.reqHdrFile = reqHdrFile; + } + public String getReqBodyFile() { + return reqBodyFile; + } + public void setReqBodyFile(String reqBodyFile) { + this.reqBodyFile = reqBodyFile; + } + public String getResLine() { + return resLine; + } + public void setResLine(String resLine) { + this.resLine = resLine; + } + public String getResHdrFile() { + return resHdrFile; + } + public void setResHdrFile(String resHdrFile) { + this.resHdrFile = resHdrFile; + } + public String getResBodyFile() { + return resBodyFile; + } + public void setResBodyFile(String resBodyFile) { + this.resBodyFile = resBodyFile; + } + + public String getSetCookie() { + return setCookie; + } + + public void setSetCookie(String setCookie) { + this.setCookie = setCookie; + } + + public String getContentLen() { + return contentLen; + } + + public void setContentLen(String contentLen) { + this.contentLen = contentLen; + } + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + + public String getResUserDefineKey() { + return resUserDefineKey; + } + + public void setResUserDefineKey(String resUserDefineKey) { + this.resUserDefineKey = resUserDefineKey; + } + + public String getResUserDefineValue() { + return resUserDefineValue; + } + + public void setResUserDefineValue(String resUserDefineValue) { + this.resUserDefineValue = resUserDefineValue; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjIpPortLog.java b/src/main/java/com/nis/domain/restful/DjIpPortLog.java new file mode 100644 index 0000000..cd61839 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjIpPortLog.java @@ -0,0 +1,27 @@ +/** +* @Title: DjIpPortLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午1:42:12 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; + +/** +* @ClassName: DjIpPortLog +* @Description: 端口监测日志实体 +* @author (zbc) +* @date 2016年9月7日 下午1:42:12 +* @version V1.0 +*/ +public class DjIpPortLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 2011669272157526917L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjIpsecLog.java b/src/main/java/com/nis/domain/restful/DjIpsecLog.java new file mode 100644 index 0000000..1bc78c6 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjIpsecLog.java @@ -0,0 +1,56 @@ +/** +* @Title: DjIpsecLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午19:16:20 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjIpsecLog +* @Description: IPSEC密钥交换协议监测日志 +* @author (zbc) +* @date 2016年9月7日 下午19:16:20 +* @version V1.0 +*/ +public class DjIpsecLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 607608013629342421L; + + @ApiModelProperty(value="交换协议", required=true) + protected Integer exProtocol; + @ApiModelProperty(value="ISAKMP模式", required=true) + protected Long isakmpMode; + + protected String searchExProtocol; + + + @JsonIgnore + public String getSearchExProtocol() { + return searchExProtocol; + } + public void setSearchExProtocol(String searchExProtocol) { + this.searchExProtocol = searchExProtocol; + } + public Integer getExProtocol() { + return exProtocol; + } + public void setExProtocol(Integer exProtocol) { + this.exProtocol = exProtocol; + } + public Long getIsakmpMode() { + return isakmpMode; + } + public void setIsakmpMode(Long isakmpMode) { + this.isakmpMode = isakmpMode; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjJitAffairDestReport.java b/src/main/java/com/nis/domain/restful/DjJitAffairDestReport.java new file mode 100644 index 0000000..224033f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitAffairDestReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitAffairDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 6367339032317209141L; + @ApiModelProperty(value = "子话题", required = true) + private Integer affair; + @ApiModelProperty(value = "事件", required = true) + private Integer topic; + + /** + * 查询部分 + */ + private String searchAffair; + private String searchTopic; + + public DjJitAffairDestReport() { + super(); + } + + public Integer getAffair() { + return affair; + } + + public void setAffair(Integer affair) { + this.affair = affair; + } + + public Integer getTopic() { + return topic; + } + + public void setTopic(Integer topic) { + this.topic = topic; + } + + @JsonIgnore + public String getSearchAffair() { + return searchAffair; + } + + public void setSearchAffair(String searchAffair) { + this.searchAffair = searchAffair; + } + + @JsonIgnore + public String getSearchTopic() { + return searchTopic; + } + + public void setSearchTopic(String searchTopic) { + this.searchTopic = searchTopic; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitAffairSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitAffairSrcReport.java new file mode 100644 index 0000000..2a8a78d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitAffairSrcReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitAffairSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -9081795070814096710L; + @ApiModelProperty(value = "子话题", required = true) + private Integer affair; + @ApiModelProperty(value = "事件", required = true) + private Integer topic; + + /** + * 查询部分 + */ + private String searchAffair; + private String searchTopic; + + public DjJitAffairSrcReport() { + super(); + } + + public Integer getAffair() { + return affair; + } + + public void setAffair(Integer affair) { + this.affair = affair; + } + + public Integer getTopic() { + return topic; + } + + public void setTopic(Integer topic) { + this.topic = topic; + } + + @JsonIgnore + public String getSearchAffair() { + return searchAffair; + } + + public void setSearchAffair(String searchAffair) { + this.searchAffair = searchAffair; + } + + @JsonIgnore + public String getSearchTopic() { + return searchTopic; + } + + public void setSearchTopic(String searchTopic) { + this.searchTopic = searchTopic; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitFlDestReport.java b/src/main/java/com/nis/domain/restful/DjJitFlDestReport.java new file mode 100644 index 0000000..ad239f4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitFlDestReport.java @@ -0,0 +1,63 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitFlDestReport extends DfJitLogEntity { + + + /** + * + */ + private static final long serialVersionUID = -8661475281697413205L; + @ApiModelProperty(value = "分类", required = true) + private Integer fl; + @ApiModelProperty(value = "性质", required = true) + private Integer xz; + + /** + * 查询部分 + */ + private String searchFl; + private String searchXz; + + public DjJitFlDestReport() { + super(); + } + + public Integer getFl() { + return fl; + } + + public void setFl(Integer fl) { + this.fl = fl; + } + + public Integer getXz() { + return xz; + } + + public void setXz(Integer xz) { + this.xz = xz; + } + + @JsonIgnore + public String getSearchFl() { + return searchFl; + } + + public void setSearchFl(String searchFl) { + this.searchFl = searchFl; + } + + @JsonIgnore + public String getSearchXz() { + return searchXz; + } + + public void setSearchXz(String searchXz) { + this.searchXz = searchXz; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitFlSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitFlSrcReport.java new file mode 100644 index 0000000..b675a3d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitFlSrcReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitFlSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 1866611122134109630L; + @ApiModelProperty(value = "分类", required = true) + private Integer fl; + @ApiModelProperty(value = "性质", required = true) + private Integer xz; + + /** + * 查询部分 + */ + private String searchFl; + private String searchXz; + + public DjJitFlSrcReport() { + super(); + } + + public Integer getFl() { + return fl; + } + + public void setFl(Integer fl) { + this.fl = fl; + } + + public Integer getXz() { + return xz; + } + + public void setXz(Integer xz) { + this.xz = xz; + } + + @JsonIgnore + public String getSearchFl() { + return searchFl; + } + + public void setSearchFl(String searchFl) { + this.searchFl = searchFl; + } + + @JsonIgnore + public String getSearchXz() { + return searchXz; + } + + public void setSearchXz(String searchXz) { + this.searchXz = searchXz; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitGuaranteeDestReport.java b/src/main/java/com/nis/domain/restful/DjJitGuaranteeDestReport.java new file mode 100644 index 0000000..e4be86f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitGuaranteeDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitGuaranteeDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 4886806743747030623L; + + @ApiModelProperty(value = "保障期", required = true) + private Integer guarantee; + + /** + * 查询部分 + */ + private String searchGuarantee; + + public DjJitGuaranteeDestReport() { + super(); + } + + public Integer getGuarantee() { + return guarantee; + } + + public void setGuarantee(Integer guarantee) { + this.guarantee = guarantee; + } + + @JsonIgnore + public String getSearchGuarantee() { + return searchGuarantee; + } + + public void setSearchGuarantee(String searchGuarantee) { + this.searchGuarantee = searchGuarantee; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitGuaranteeSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitGuaranteeSrcReport.java new file mode 100644 index 0000000..ecf45f2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitGuaranteeSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitGuaranteeSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 558117618430759769L; + + @ApiModelProperty(value = "保障期", required = true) + private Integer guarantee; + + /** + * 查询部分 + */ + private String searchGuarantee; + + public DjJitGuaranteeSrcReport() { + super(); + } + + public Integer getGuarantee() { + return guarantee; + } + + public void setGuarantee(Integer guarantee) { + this.guarantee = guarantee; + } + + @JsonIgnore + public String getSearchGuarantee() { + return searchGuarantee; + } + + public void setSearchGuarantee(String searchGuarantee) { + this.searchGuarantee = searchGuarantee; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitIdDestReport.java b/src/main/java/com/nis/domain/restful/DjJitIdDestReport.java new file mode 100644 index 0000000..4105847 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitIdDestReport.java @@ -0,0 +1,44 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitIdDestReport extends DfJitLogEntity { + + + /** + * + */ + private static final long serialVersionUID = -3056813909262889527L; + + @ApiModelProperty(value = "配置id", required = true) + private Long id; + + /** + * 查询部分 + */ + private String searchId; + + public DjJitIdDestReport() { + super(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @JsonIgnore + public String getSearchId() { + return searchId; + } + + public void setSearchId(String searchId) { + this.searchId = searchId; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitIdSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitIdSrcReport.java new file mode 100644 index 0000000..78f3521 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitIdSrcReport.java @@ -0,0 +1,45 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitIdSrcReport extends DfJitLogEntity { + + + + /** + * + */ + private static final long serialVersionUID = 6337204883984675891L; + + @ApiModelProperty(value = "配置id", required = true) + private Long id; + + /** + * 查询部分 + */ + private String searchId; + + public DjJitIdSrcReport() { + super(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @JsonIgnore + public String getSearchId() { + return searchId; + } + + public void setSearchId(String searchId) { + this.searchId = searchId; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitMissionDestReport.java b/src/main/java/com/nis/domain/restful/DjJitMissionDestReport.java new file mode 100644 index 0000000..713ac7b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitMissionDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitMissionDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -4200263721978195939L; + + @ApiModelProperty(value = "任务", required = true) + private Integer mission; + + /** + * 查询部分 + */ + private String searchMission; + + public DjJitMissionDestReport() { + super(); + } + + public Integer getMission() { + return mission; + } + + public void setMission(Integer mission) { + this.mission = mission; + } + + @JsonIgnore + public String getSearchMission() { + return searchMission; + } + + public void setSearchMission(String searchMission) { + this.searchMission = searchMission; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitMissionSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitMissionSrcReport.java new file mode 100644 index 0000000..7afc785 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitMissionSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitMissionSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = 1244851836673765943L; + + @ApiModelProperty(value = "任务", required = true) + private Integer mission; + + /** + * 查询部分 + */ + private String searchMission; + + public DjJitMissionSrcReport() { + super(); + } + + public Integer getMission() { + return mission; + } + + public void setMission(Integer mission) { + this.mission = mission; + } + + @JsonIgnore + public String getSearchMission() { + return searchMission; + } + + public void setSearchMission(String searchMission) { + this.searchMission = searchMission; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitTagDestReport.java b/src/main/java/com/nis/domain/restful/DjJitTagDestReport.java new file mode 100644 index 0000000..9b6a718 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitTagDestReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitTagDestReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -8057168628547445607L; + + @ApiModelProperty(value = "标签", required = true) + private Integer tag; + + /** + * 查询部分 + */ + private String searchTag; + + public DjJitTagDestReport() { + super(); + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjJitTagSrcReport.java b/src/main/java/com/nis/domain/restful/DjJitTagSrcReport.java new file mode 100644 index 0000000..de7778f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjJitTagSrcReport.java @@ -0,0 +1,43 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfJitLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class DjJitTagSrcReport extends DfJitLogEntity { + + /** + * + */ + private static final long serialVersionUID = -1338482031809189715L; + + @ApiModelProperty(value = "标签", required = true) + private Integer tag; + + /** + * 查询部分 + */ + private String searchTag; + + public DjJitTagSrcReport() { + super(); + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DjL2tpLog.java b/src/main/java/com/nis/domain/restful/DjL2tpLog.java new file mode 100644 index 0000000..1bad9bb --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjL2tpLog.java @@ -0,0 +1,66 @@ +/** +* @Title: DjL2tpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午19:04:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjL2tpLog +* @Description: L2TP协议监测日志 +* @author (zbc) +* @date 2016年9月7日 下午19:04:30 +* @version V1.0 +*/ +public class DjL2tpLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 2028351016711817096L; + + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + @ApiModelProperty(value="加密方式", required=true) + protected Integer encryptMode; + @ApiModelProperty(value="用户名称", required=true) + protected String chapName; + + public String getChapName() { + return chapName; + } + public void setChapName(String chapName) { + this.chapName = chapName; + } + + protected String searchEncryptMode; + + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + public Integer getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(Integer encryptMode) { + this.encryptMode = encryptMode; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhAttrDaily.java b/src/main/java/com/nis/domain/restful/DjLwhhAttrDaily.java new file mode 100644 index 0000000..e5704b1 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhAttrDaily.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrReport + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhAttrDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhAttrMonth.java b/src/main/java/com/nis/domain/restful/DjLwhhAttrMonth.java new file mode 100644 index 0000000..d5e6171 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhAttrMonth.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrReport + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhAttrMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhAttrReport.java b/src/main/java/com/nis/domain/restful/DjLwhhAttrReport.java new file mode 100644 index 0000000..6f77c18 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhAttrReport.java @@ -0,0 +1,76 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhAttrReport + * @Description: TODO(来文函号、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhAttrReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchLwhh; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhReport.java b/src/main/java/com/nis/domain/restful/DjLwhhReport.java new file mode 100644 index 0000000..9624c81 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhReport.java @@ -0,0 +1,61 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfLwhhReport + * @Description: 管控来文函号(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DjLwhhReport extends DfReportEntity { + /** + * + */ + private static final long serialVersionUID = -7545794734532459964L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号ID", required = true) + protected Integer lwhh; + + protected String searchService; + protected String searchLwhh; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Integer getLwhh() { + return lwhh; + } + + public void setLwhh(Integer lwhh) { + this.lwhh = lwhh; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjLwhhStatLogDaily.java new file mode 100644 index 0000000..a426971 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhStatLogDaily.java @@ -0,0 +1,48 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjLwhhStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="来文函号", required=true) + protected Integer lwhh; + + protected String searchLwhh; + + public Integer getLwhh() { + return lwhh; + } + public void setLwhh(Integer lwhh) { + this.lwhh = lwhh; + } + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjLwhhStatLogMonth.java new file mode 100644 index 0000000..1e83a07 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhStatLogMonth.java @@ -0,0 +1,26 @@ +/** +* @Title: DjTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +/** +* @ClassName: DjTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjLwhhStatLogMonth extends DjLwhhStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhTagDaily.java b/src/main/java/com/nis/domain/restful/DjLwhhTagDaily.java new file mode 100644 index 0000000..6aa932f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhTagDaily.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhTagDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhTagMonth.java b/src/main/java/com/nis/domain/restful/DjLwhhTagMonth.java new file mode 100644 index 0000000..45f80f8 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhTagMonth.java @@ -0,0 +1,77 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhTagMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjLwhhTagReport.java b/src/main/java/com/nis/domain/restful/DjLwhhTagReport.java new file mode 100644 index 0000000..48561f3 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjLwhhTagReport.java @@ -0,0 +1,76 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfLwhhTagReport + * @Description: TODO(来文函号、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjLwhhTagReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "来文函号", required = true) + protected Long lwhh; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchLwhh; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + public Long getLwhh() { + return lwhh; + } + public void setLwhh(Long lwhh) { + this.lwhh = lwhh; + } + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchLwhh() { + return searchLwhh; + } + public void setSearchLwhh(String searchLwhh) { + this.searchLwhh = searchLwhh; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjMailLog.java b/src/main/java/com/nis/domain/restful/DjMailLog.java new file mode 100644 index 0000000..a284fbd --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjMailLog.java @@ -0,0 +1,92 @@ +/** +* @Title: DfMailLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 上午10:16:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfMailLog +* @Description: MAILXX日志 +* @author (ddm) +* @date 2016年9月7日 上午10:59:09 +* @version V1.0 +*/ +public class DjMailLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -1302479250066779447L; + + + @ApiModelProperty(value="邮件协议类型", required=true) + protected String mailProto; + @ApiModelProperty(value="发件人", required=true) + protected String mailFrom; + @ApiModelProperty(value="收件人", required=true) + protected String mailTo; + @ApiModelProperty(value="主题", required=true) + protected String subject; + @ApiModelProperty(value="EML文件转储路径", required=true) + protected String emlFile; + + + protected String searchMailFrom; + protected String searchMailTo; + + @JsonIgnore + public String getSearchMailFrom() { + return searchMailFrom; + } + public void setSearchMailFrom(String searchMailFrom) { + this.searchMailFrom = searchMailFrom; + } + public void setSearchMailTo(String searchMailTo) { + this.searchMailTo = searchMailTo; + } + @JsonIgnore + public String getSearchMailTo() { + return searchMailTo; + } + + public String getMailProto() { + return mailProto; + } + public void setMailProto(String mailProto) { + this.mailProto = mailProto; + } + public String getMailFrom() { + return mailFrom; + } + public void setMailFrom(String mailFrom) { + this.mailFrom = mailFrom; + } + public String getMailTo() { + return mailTo; + } + public void setMailTo(String mailTo) { + this.mailTo = mailTo; + } + public String getSubject() { + return subject; + } + public void setSubject(String subject) { + this.subject = subject; + } + public String getEmlFile() { + return emlFile; + } + public void setEmlFile(String emlFile) { + this.emlFile = emlFile; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DjOpenvpnLog.java b/src/main/java/com/nis/domain/restful/DjOpenvpnLog.java new file mode 100644 index 0000000..bbab7c2 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjOpenvpnLog.java @@ -0,0 +1,73 @@ +/** +* @Title: DjOpenvpnLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午19:27:20 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjOpenvpnLog +* @Description: OPENVPNXX日志 +* @author (zbc) +* @date 2016年9月7日 下午19:27:20 +* @version V1.0 +*/ +public class DjOpenvpnLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 8055018411430634752L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="加密方式", required=true) + protected String encryptMode; + @ApiModelProperty(value="是否有HMAC", required=true) + protected Integer hmac; + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + + protected String searchEncryptMode; + + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(String encryptMode) { + this.encryptMode = encryptMode; + } + public Integer getHmac() { + return hmac; + } + public void setHmac(Integer hmac) { + this.hmac = hmac; + } + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjPptpLog.java b/src/main/java/com/nis/domain/restful/DjPptpLog.java new file mode 100644 index 0000000..33fd2e1 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjPptpLog.java @@ -0,0 +1,60 @@ +/** +* @Title: DjPptpLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午18:02:30 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjPptpLog +* @Description: FTPXX日志 +* @author (zbc) +* @date 2016年9月7日 下午18:02:30 +* @version V1.0 +*/ +public class DjPptpLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 4819972774275203145L; + + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + @ApiModelProperty(value="加密方式", required=true) + protected Integer encryptMode; + + protected String searchEncryptMode; + + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + public Integer getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(Integer encryptMode) { + this.encryptMode = encryptMode; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjPzReport.java b/src/main/java/com/nis/domain/restful/DjPzReport.java new file mode 100644 index 0000000..9f472ed --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjPzReport.java @@ -0,0 +1,73 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DjPzReport + * @Description: TODO(一句话描述这个类) + * @author (ZBC) + * @date 2016年11月22日下午06:00:00 + * @version V1.0 + */ +public class DjPzReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = 5378450857152481993L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "编译配置ID", required = true) + protected Long cfgId; + + protected String searchCfgId; + protected String searchId; + protected String searchService; + + @JsonIgnore + public String getSearchId() { + return searchId; + } + + public void setSearchId(String searchId) { + this.searchId = searchId; + } + + @JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getCfgId() { + return cfgId; + } + + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjPzReportStat.java b/src/main/java/com/nis/domain/restful/DjPzReportStat.java new file mode 100644 index 0000000..613c92b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjPzReportStat.java @@ -0,0 +1,108 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DjPzReportStat + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:11:22 + * @version V1.0 + */ +public class DjPzReportStat extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = -4204790492680773920L; + @ApiModelProperty(value = "私有标签", required = true) + protected Integer service; + @ApiModelProperty(value = "编译配置ID", required = true) + protected Long configId; + @ApiModelProperty(value = "日志总量", required = true) + protected Long sum; + + protected String searchService; + protected String searchStatActiveSys; + + @JsonIgnore + public String getSearchStatActiveSys() { + return searchStatActiveSys; + } + + public void setSearchStatActiveSys(String searchStatActiveSys) { + this.searchStatActiveSys = searchStatActiveSys; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Long getConfigId() { + return configId; + } + + public void setConfigId(Long configId) { + this.configId = configId; + } + + @Override + @JsonIgnore + public Long getAsum() { + return super.getAsum(); + } + + @Override + @JsonIgnore + public Long getBsum() { + return super.getBsum(); + } + + public Long getSum() { + return sum; + } + + public void setSum(Long sum) { + this.sum = sum; + } + + @Override + @JsonIgnore + public Date getReportTime() { + // TODO Auto-generated method stub + return super.getReportTime(); + } + @Override + @JsonIgnore + public Long getCsum() { + return super.getCsum(); + } + /* (non-Javadoc) + * @see com.nis.domain.DfReportEntity#getAbsum() + */ + @Override + @JsonIgnore + public Long getAbsum() { + // TODO Auto-generated method stub + return super.getAbsum(); + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpAttrDaily.java b/src/main/java/com/nis/domain/restful/DjSrcIpAttrDaily.java new file mode 100644 index 0000000..f5f9973 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpAttrDaily.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpAttrDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpAttrMonth.java b/src/main/java/com/nis/domain/restful/DjSrcIpAttrMonth.java new file mode 100644 index 0000000..ac58733 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpAttrMonth.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpAttrMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpAttrReport.java b/src/main/java/com/nis/domain/restful/DjSrcIpAttrReport.java new file mode 100644 index 0000000..febb411 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpAttrReport.java @@ -0,0 +1,78 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpAttrReport + * @Description: TODO(境内ip、性质多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpAttrReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "性质", required = true) + protected Long attrType; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchAttrType; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getAttrType() { + return attrType; + } + public void setAttrType(Long attrType) { + this.attrType = attrType; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchAttrType() { + return searchAttrType; + } + public void setSearchAttrType(String searchAttrType) { + this.searchAttrType = searchAttrType; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpDomeSticReport.java b/src/main/java/com/nis/domain/restful/DjSrcIpDomeSticReport.java new file mode 100644 index 0000000..edcd0ab --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpDomeSticReport.java @@ -0,0 +1,81 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DfSrcIpDomeSticReport + * @Description: 管控境内源IP(带私有标签)实时统计模型 + * @author (rkg) + * @date 2017年01月05日 下午3:41:50 + * @version V1.0 + */ +public class DjSrcIpDomeSticReport extends DfReportEntity { + /** + * + */ + private static final long serialVersionUID = -7360674711430956834L; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "源IP所在省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "源IP所在市", required = true) + protected String srcCity; + + protected String searchService; + protected String searchSrcProvince; + protected String searchSrcCity; + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public String getSrcProvince() { + return srcProvince; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + + public String getSrcCity() { + return srcCity; + } + + public void setSrcCity(String srcCity) { + this.srcCity = srcCity; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + + @JsonIgnore + public String getSearchSrcCity() { + return searchSrcCity; + } + + public void setSearchSrcCity(String searchSrcCity) { + this.searchSrcCity = searchSrcCity; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogDaily.java new file mode 100644 index 0000000..49600d0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogDaily.java @@ -0,0 +1,51 @@ +/** +* @Title: DfSrcipDomesticStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfSrcipDomesticStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjSrcIpDomesticStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="省", required=true) + protected String srcProvince; + + @ApiModelProperty(value="市", required=true) + protected String srcCity; + + public String getSrcProvince() { + return srcProvince; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + + public String getSrcCity() { + return srcCity; + } + + public void setSrcCity(String srcCity) { + this.srcCity = srcCity; + } + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogMonth.java new file mode 100644 index 0000000..d9c1453 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpDomesticStatLogMonth.java @@ -0,0 +1,25 @@ +/** +* @Title: DjSrcipDomesticStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** +* @ClassName: DjSrcipDomesticStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjSrcIpDomesticStatLogMonth extends DjSrcIpDomesticStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpTagDaily.java b/src/main/java/com/nis/domain/restful/DjSrcIpTagDaily.java new file mode 100644 index 0000000..2f920f5 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpTagDaily.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpTagDaily extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpTagMonth.java b/src/main/java/com/nis/domain/restful/DjSrcIpTagMonth.java new file mode 100644 index 0000000..a46c6be --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpTagMonth.java @@ -0,0 +1,79 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpTagMonth extends StatLogEntity{ + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSrcIpTagReport.java b/src/main/java/com/nis/domain/restful/DjSrcIpTagReport.java new file mode 100644 index 0000000..ba0c98f --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSrcIpTagReport.java @@ -0,0 +1,78 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: DfSrcIpTagReport + * @Description: TODO(境内ip、标签多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午2:29:28 + * @version V1.0 + */ +public class DjSrcIpTagReport extends DfReportEntity { + + private static final long serialVersionUID = -1183216703585029756L; + + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + @ApiModelProperty(value = "省", required = true) + protected String srcProvince; + @ApiModelProperty(value = "标签", required = true) + protected Long tag; + + + protected String searchService; + protected String searchSrcProvince; + protected String searchTag; + + + public Integer getService() { + return service; + } + public void setService(Integer service) { + this.service = service; + } + + public void setSrcProvince(String srcProvince) { + this.srcProvince = srcProvince; + } + public String getSrcProvince() { + return srcProvince; + } + + public Long getTag() { + return tag; + } + public void setTag(Long tag) { + this.tag = tag; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchSrcProvince() { + return searchSrcProvince; + } + public void setSearchSrcProvince(String searchSrcProvince) { + this.searchSrcProvince = searchSrcProvince; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DjSshLog.java b/src/main/java/com/nis/domain/restful/DjSshLog.java new file mode 100644 index 0000000..dc9c52d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSshLog.java @@ -0,0 +1,90 @@ +/** +* @Title: DjSshLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午19:42:10 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjSshLog +* @Description: SSHXX日志 +* @author (zbc) +* @date 2016年9月7日 下午19:42:10 +* @version V1.0 +*/ +public class DjSshLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 6940016532195865221L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="主机密钥", required=true) + protected String hostKey; + @ApiModelProperty(value="主机Cookie", required=true) + protected String hostCookie; + @ApiModelProperty(value="加密方式", required=true) + protected String encryptMode; + @ApiModelProperty(value="消息认证码", required=true) + protected String mac; + @ApiModelProperty(value="通道类型", required=true) + protected Integer tunnelType; + + + protected String searchEncryptMode; + + @JsonIgnore + public String getSearchEncryptMode() { + return searchEncryptMode; + } + + public void setSearchEncryptMode(String searchEncryptMode) { + this.searchEncryptMode = searchEncryptMode; + } + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getHostKey() { + return hostKey; + } + public void setHostKey(String hostKey) { + this.hostKey = hostKey; + } + public String getHostCookie() { + return hostCookie; + } + public void setHostCookie(String hostCookie) { + this.hostCookie = hostCookie; + } + public String getEncryptMode() { + return encryptMode; + } + public void setEncryptMode(String encryptMode) { + this.encryptMode = encryptMode; + } + public String getMac() { + return mac; + } + public void setMac(String mac) { + this.mac = mac; + } + public Integer getTunnelType() { + return tunnelType; + } + public void setTunnelType(Integer tunnelType) { + this.tunnelType = tunnelType; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjSslLog.java b/src/main/java/com/nis/domain/restful/DjSslLog.java new file mode 100644 index 0000000..dad2489 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjSslLog.java @@ -0,0 +1,81 @@ +/** +* @Title: DfSslLog.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月7日 下午2:34:10 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.nis.domain.LogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfSslLog +* @Description: SSLXX日志 +* @author (ddm) +* @date 2016年9月7日 下午2:34:10 +* @version V1.0 +*/ +public class DjSslLog extends LogEntity{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1191890804422075638L; + + @ApiModelProperty(value="版本信息", required=true) + protected String version; + @ApiModelProperty(value="SNI", required=true) + protected String sni; + + @ApiModelProperty(value="个体证书转储路径", required=true) + protected String individualCertFile; + @ApiModelProperty(value="中级证书转储路径", required=true) + protected String middleCertFile; + @ApiModelProperty(value="根证书转储路径", required=true) + protected String rootCertFile; + @ApiModelProperty(value="其他证书链转储路径", required=true) + protected String chainCertFile; + + + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getSni() { + return sni; + } + public void setSni(String sni) { + this.sni = sni; + } + + public String getIndividualCertFile() { + return individualCertFile; + } + public void setIndividualCertFile(String individualCertFile) { + this.individualCertFile = individualCertFile; + } + public String getMiddleCertFile() { + return middleCertFile; + } + public void setMiddleCertFile(String middleCertFile) { + this.middleCertFile = middleCertFile; + } + public String getRootCertFile() { + return rootCertFile; + } + public void setRootCertFile(String rootCertFile) { + this.rootCertFile = rootCertFile; + } + public String getChainCertFile() { + return chainCertFile; + } + public void setChainCertFile(String chainCertFile) { + this.chainCertFile = chainCertFile; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DjStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjStatLogDaily.java new file mode 100644 index 0000000..835d8df --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjStatLogDaily.java @@ -0,0 +1,49 @@ +/** +* @Title: DjStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DjStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="配置ID", required=true) + protected Long configId; + + protected String searchConfigId; + + public Long getConfigId() { + return configId; + } + public void setConfigId(Long configId) { + this.configId = configId; + } + @JsonIgnore + public String getSearchConfigId() { + return searchConfigId; + } + + + public void setSearchConfigId(String searchConfigId) { + this.searchConfigId = searchConfigId; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjStatLogMonth.java new file mode 100644 index 0000000..fb302e4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjStatLogMonth.java @@ -0,0 +1,21 @@ +/** +* @Title: DjStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** +* @ClassName: DjStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjStatLogMonth extends DjStatLogDaily { + + +} diff --git a/src/main/java/com/nis/domain/restful/DjTagReport.java b/src/main/java/com/nis/domain/restful/DjTagReport.java new file mode 100644 index 0000000..31ad601 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjTagReport.java @@ -0,0 +1,62 @@ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.DfReportEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: dfTagReport + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:25:38 + * @version V1.0 + */ +public class DjTagReport extends DfReportEntity { + + /** + * + */ + private static final long serialVersionUID = 6425675908119093476L; + @ApiModelProperty(value = "标签", required = true) + protected Integer tag; + @ApiModelProperty(value = "业务类型", required = true) + protected Integer service; + + protected String searchTag; + protected String searchService; + + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + public Integer getTag() { + return tag; + } + + public void setTag(Integer tag) { + this.tag = tag; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjTagStatLogDaily.java b/src/main/java/com/nis/domain/restful/DjTagStatLogDaily.java new file mode 100644 index 0000000..3accf68 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjTagStatLogDaily.java @@ -0,0 +1,47 @@ +/** +* @Title: DfTagStatLogDaily.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.StatLogEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: DfTagStatLogDaily +* @Description: 天日志报表 +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +public class DjTagStatLogDaily extends StatLogEntity { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -591616210162791616L; + + @ApiModelProperty(value="标签", required=true) + protected Integer tag; + + protected String searchTag; + + public Integer getTag() { + return tag; + } + public void setTag(Integer tag) { + this.tag = tag; + } + @JsonIgnore + public String getSearchTag() { + return searchTag; + } + public void setSearchTag(String searchTag) { + this.searchTag = searchTag; + } +} diff --git a/src/main/java/com/nis/domain/restful/DjTagStatLogMonth.java b/src/main/java/com/nis/domain/restful/DjTagStatLogMonth.java new file mode 100644 index 0000000..cd92c36 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DjTagStatLogMonth.java @@ -0,0 +1,25 @@ +/** +* @Title: DjTagStatLogMonth.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:08:11 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** +* @ClassName: DjTagStatLogMonth +* @Description: 日志月报表 +* @author (ddm) +* @date 2017年01月05日 下午07:08:11 +* @version V1.0 +*/ +public class DjTagStatLogMonth extends DjTagStatLogDaily { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -2704912464592675932L; + +} diff --git a/src/main/java/com/nis/domain/restful/DmbCk.java b/src/main/java/com/nis/domain/restful/DmbCk.java new file mode 100644 index 0000000..a58ddf4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DmbCk.java @@ -0,0 +1,121 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; +/** + * + * @ClassName: DmbCk.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:22:14 + * @version V1.0 + */ +public class DmbCk extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -2268609209854016029L; + @ApiModelProperty(value="国际出口ID", required=true) + private Long id; + @ApiModelProperty(value="出口名称", required=true) + private String name; + @ApiModelProperty(value="出口位置", required=true) + private String position; + @ApiModelProperty(value="通讯方法", required=true) + private String comOption; + @ApiModelProperty(value="操作员", required=true) + private Long czyid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + private Date lastUpdate; + private Long procSeq; + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position == null ? null : position.trim(); + } + + public String getComOption() { + return comOption; + } + + public void setComOption(String comOption) { + this.comOption = comOption == null ? null : comOption.trim(); + } + + public Long getCzyid() { + return czyid; + } + + public void setCzyid(Long czyid) { + this.czyid = czyid; + } +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DmbCkSource.java b/src/main/java/com/nis/domain/restful/DmbCkSource.java new file mode 100644 index 0000000..a29ddd3 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DmbCkSource.java @@ -0,0 +1,120 @@ +/** + *@Title: DmbCkSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DmbCkSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class DmbCkSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List dmbCkList; + + + /** + * 创建一个新的实例 DmbCkSource. + * + */ + public DmbCkSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DmbCkSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dmbCkList + * @return dmbCkList + */ + + public List getDmbCkList() { + return dmbCkList; + } + /** + * @param dmbCkList the dmbCkList to set + */ + public void setDmbCkList(List dmbCkList) { + this.dmbCkList = dmbCkList; + } +} diff --git a/src/main/java/com/nis/domain/restful/DmbPort.java b/src/main/java/com/nis/domain/restful/DmbPort.java new file mode 100644 index 0000000..5d62777 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DmbPort.java @@ -0,0 +1,168 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; +/** + * + * @ClassName: DmbPort.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:23:08 + * @version V1.0 + */ +public class DmbPort extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -6308234862307401069L; + @ApiModelProperty(value="端口ID", required=true) + private Long id; + @ApiModelProperty(value="国际出口ID", required=true) + private Long entranceId; + @ApiModelProperty(value="端口名称", required=true) + private String portName; + @ApiModelProperty(value="是否使用", required=true) + private Integer isUsed; + @ApiModelProperty(value="管理IP", required=true) + private String ipDz; + @ApiModelProperty(value="分流设备", required=true) + private String portEquipment; + @ApiModelProperty(value="ODF端口", required=true) + private String odfPort; + @ApiModelProperty(value="机房地址", required=true) + private String addr; + @ApiModelProperty(value="骨干设备端口", required=true) + private String ckPort; + @ApiModelProperty(value="操作员", required=true) + private Long czyid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + private Date lastUpdate; + private Long procSeq; + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getEntranceId() { + return entranceId; + } + + public void setEntranceId(Long entranceId) { + this.entranceId = entranceId; + } + + public String getPortName() { + return portName; + } + + public void setPortName(String portName) { + this.portName = portName == null ? null : portName.trim(); + } + + public Integer getIsUsed() { + return isUsed; + } + + public void setIsUsed(Integer isUsed) { + this.isUsed = isUsed; + } + + public String getIpDz() { + return ipDz; + } + + public void setIpDz(String ipDz) { + this.ipDz = ipDz == null ? null : ipDz.trim(); + } + + public String getPortEquipment() { + return portEquipment; + } + + public void setPortEquipment(String portEquipment) { + this.portEquipment = portEquipment == null ? null : portEquipment.trim(); + } + + public String getOdfPort() { + return odfPort; + } + + public void setOdfPort(String odfPort) { + this.odfPort = odfPort == null ? null : odfPort.trim(); + } + + public String getAddr() { + return addr; + } + + public void setAddr(String addr) { + this.addr = addr == null ? null : addr.trim(); + } + + public String getCkPort() { + return ckPort; + } + + public void setCkPort(String ckPort) { + this.ckPort = ckPort == null ? null : ckPort.trim(); + } + public Long getCzyid() { + return czyid; + } + + public void setCzyid(Long czyid) { + this.czyid = czyid; + } + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + public void setOpTime(Date opTime) { + this.opTime = opTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/DmbPortSource.java b/src/main/java/com/nis/domain/restful/DmbPortSource.java new file mode 100644 index 0000000..78f1b08 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DmbPortSource.java @@ -0,0 +1,121 @@ +/** + *@Title: DmbPortSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DmbPortSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class DmbPortSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List dmbPortList; + + + /** + * 创建一个新的实例 DmbPortSource. + * + */ + public DmbPortSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DmbPortSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dmbPortList + * @return dmbPortList + */ + + public List getDmbPortList() { + return dmbPortList; + } + /** + * @param dmbPortList the dmbPortList to set + */ + public void setDmbPortList(List dmbPortList) { + this.dmbPortList = dmbPortList; + } +} diff --git a/src/main/java/com/nis/domain/restful/DnsFakeInfo.java b/src/main/java/com/nis/domain/restful/DnsFakeInfo.java new file mode 100644 index 0000000..97f2490 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsFakeInfo.java @@ -0,0 +1,227 @@ +/** + *@Title: DnsFakeInfo.java + *@Package com.nis.domain.restful + *@Description TODO + *@author wx + *@date 2016年9月5日 上午10:03:16 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DnsFakeInfo.java + * @Description: TODO + * @author (wx) + * @date 2016年9月5日 上午10:03:16 + * @version V1.0 + */ +public class DnsFakeInfo extends BaseEntity { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 2614513161019844185L; + @ApiModelProperty(value="序号", required=true) + private Long id; + @ApiModelProperty(value="组号", required=true) + private Integer groupId; + @ApiModelProperty(value="信息域", required=true) + private String info; + @ApiModelProperty(value="有效标志,0无效,1有效", required=true) + private Integer isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="预留1", required=false) + private Integer yl1; + @ApiModelProperty(value="预留2", required=false) + private Integer yl2; + @ApiModelProperty(value="预留3", required=false) + private String yl3; + @ApiModelProperty(value="预留4", required=false) + private String yl4; + @ApiModelProperty(value="预留5", required=false) + private String yl5; + private Date lastUpdate; + private Long procSeq; + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * groupId + * @return groupId + */ + + public Integer getGroupId() { + return groupId; + } + /** + * @param groupId the groupId to set + */ + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + /** + * info + * @return info + */ + + public String getInfo() { + return info; + } + /** + * @param info the info to set + */ + public void setInfo(String info) { + this.info = info; + } + /** + * isValid + * @return isValid + */ + + public Integer getIsValid() { + return isValid; + } + /** + * @param isValid the isValid to set + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + /** + * opTime + * @return opTime + */ +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param opTime the opTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * yl1 + * @return yl1 + */ + + public Integer getYl1() { + return yl1; + } + /** + * @param yl1 the yl1 to set + */ + public void setYl1(Integer yl1) { + this.yl1 = yl1; + } + /** + * yl2 + * @return yl2 + */ + + public Integer getYl2() { + return yl2; + } + /** + * @param yl2 the yl2 to set + */ + public void setYl2(Integer yl2) { + this.yl2 = yl2; + } + /** + * yl3 + * @return yl3 + */ + + public String getYl3() { + return yl3; + } + /** + * @param yl3 the yl3 to set + */ + public void setYl3(String yl3) { + this.yl3 = yl3; + } + /** + * yl4 + * @return yl4 + */ + + public String getYl4() { + return yl4; + } + /** + * @param yl4 the yl4 to set + */ + public void setYl4(String yl4) { + this.yl4 = yl4; + } + /** + * yl5 + * @return yl5 + */ + + public String getYl5() { + return yl5; + } + /** + * @param yl5 the yl5 to set + */ + public void setYl5(String yl5) { + this.yl5 = yl5; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DnsFakeInfoSource.java b/src/main/java/com/nis/domain/restful/DnsFakeInfoSource.java new file mode 100644 index 0000000..43b6b70 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsFakeInfoSource.java @@ -0,0 +1,125 @@ +/** + *@Title: DnsFakeInfoSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月7日 下午6:26:06 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DnsFakeInfoSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午6:26:06 + * @version V1.0 + */ +public class DnsFakeInfoSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4075912540188044069L; + private static final String DEFAULT_VERSION = "1.0"; + private List dnsFakeInfoList; + + + /** + * 创建一个新的实例 DnsFakeInfoSource. + * + */ + public DnsFakeInfoSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DnsFakeInfoSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * + * getDnsFakeInfoList(这里用一句话描述这个方法的作用) + * (这里描述这个方法适用条件 – 可选) + * @return + *List + * @exception + * @since 1.0.0 + */ + public List getDnsFakeInfoList() { + return dnsFakeInfoList; + } + /** + * @param dnsGroupTypeList the dnsGroupTypeList to set + */ + public void setDnsFakeInfoList(List dnsFakeIpList) { + this.dnsFakeInfoList = dnsFakeIpList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DnsFakeIp.java b/src/main/java/com/nis/domain/restful/DnsFakeIp.java new file mode 100644 index 0000000..97e2702 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsFakeIp.java @@ -0,0 +1,391 @@ +/** + *@Title: DnsFakeIp.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月3日 下午7:59:34 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DnsFakeIp.java + * @Description: TODO + * @author (wx) + * @date 2016年9月3日 下午7:59:34 + * @version V1.0 + */ +public class DnsFakeIp extends BaseEntity { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4761419421560750644L; + @ApiModelProperty(value="序号", required=true) + private Long id; + @ApiModelProperty(value="组号", required=true) + private Integer groupId; + @ApiModelProperty(value="地址类型", required=true) + private Integer addrType; + @ApiModelProperty(value="源IP地址", required=true) + private String srcIp; + @ApiModelProperty(value="源IP掩码", required=true) + private String maskSrcIp; + @ApiModelProperty(value="源端口", required=true) + private String srcPort; + @ApiModelProperty(value="源端口掩码", required=true) + private String maskSrcPort; + @ApiModelProperty(value="目的IP", required=true) + private String dstIp; + @ApiModelProperty(value="目的IP掩码", required=true) + private String maskDstIp; + @ApiModelProperty(value="目的端口", required=true) + private String dstPort; + @ApiModelProperty(value="目的端口掩码", required=true) + private String maskDstPort; + @ApiModelProperty(value="协议(tcp/udp)", required=true) + private Integer protocol; + @ApiModelProperty(value="方向,0双向,1单向", required=true) + private Integer direction; + @ApiModelProperty(value="有效标志, 0无效,1有效", required=true) + private Integer isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="预留1", required=false) + private Integer yl1; + @ApiModelProperty(value="预留2", required=false) + private Integer yl2; + @ApiModelProperty(value="预留3", required=false) + private String yl3; + @ApiModelProperty(value="预留4", required=false) + private String yl4; + @ApiModelProperty(value="预留5", required=false) + private String yl5; + private Date lastUpdate; + private Long procSeq; + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + /** + * maskSrcIp + * @return maskSrcIp + */ + + public String getMaskSrcIp() { + return maskSrcIp; + } + /** + * @param maskSrcIp the maskSrcIp to set + */ + public void setMaskSrcIp(String maskSrcIp) { + this.maskSrcIp = maskSrcIp; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * groupId + * @return groupId + */ + + public Integer getGroupId() { + return groupId; + } + /** + * @param groupId the groupId to set + */ + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + /** + * addrType + * @return addrType + */ + + public Integer getAddrType() { + return addrType; + } + /** + * @param addrType the addrType to set + */ + public void setAddrType(Integer addrType) { + this.addrType = addrType; + } + /** + * srcIp + * @return srcIp + */ + + public String getSrcIp() { + return srcIp; + } + /** + * @param srcIp the srcIp to set + */ + public void setSrcIp(String srcIp) { + this.srcIp = srcIp; + } + /** + * maskSrcPort + * @return maskSrcPort + */ + + public String getMaskSrcPort() { + return maskSrcPort; + } + /** + * @param maskSrcPort the maskSrcPort to set + */ + public void setMaskSrcPort(String maskSrcPort) { + this.maskSrcPort = maskSrcPort; + } + /** + * srcPort + * @return srcPort + */ + + public String getSrcPort() { + return srcPort; + } + /** + * @param srcPort the srcPort to set + */ + public void setSrcPort(String srcPort) { + this.srcPort = srcPort; + } + /** + * dstIp + * @return dstIp + */ + + public String getDstIp() { + return dstIp; + } + /** + * @param dstIp the dstIp to set + */ + public void setDstIp(String dstIp) { + this.dstIp = dstIp; + } + /** + * maskDstIp + * @return maskDstIp + */ + + public String getMaskDstIp() { + return maskDstIp; + } + /** + * @param maskDstIp the maskDstIp to set + */ + public void setMaskDstIp(String maskDstIp) { + this.maskDstIp = maskDstIp; + } + /** + * dstPort + * @return dstPort + */ + + public String getDstPort() { + return dstPort; + } + /** + * @param dstPort the dstPort to set + */ + public void setDstPort(String dstPort) { + this.dstPort = dstPort; + } + /** + * maskDstPort + * @return maskDstPort + */ + + public String getMaskDstPort() { + return maskDstPort; + } + /** + * @param maskDstPort the maskDstPort to set + */ + public void setMaskDstPort(String maskDstPort) { + this.maskDstPort = maskDstPort; + } + /** + * protocol + * @return protocol + */ + + public Integer getProtocol() { + return protocol; + } + /** + * @param protocol the protocol to set + */ + public void setProtocol(Integer protocol) { + this.protocol = protocol; + } + /** + * direction + * @return direction + */ + + public Integer getDirection() { + return direction; + } + /** + * @param direction the direction to set + */ + public void setDirection(Integer direction) { + this.direction = direction; + } + /** + * isValid + * @return isValid + */ + + public Integer getIsValid() { + return isValid; + } + /** + * @param isValid the isValid to set + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + /** + * optTime + * @return optTime + */ +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param optTime the optTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * yl1 + * @return yl1 + */ + + public Integer getYl1() { + return yl1; + } + /** + * @param yl1 the yl1 to set + */ + public void setYl1(Integer yl1) { + this.yl1 = yl1; + } + /** + * yl2 + * @return yl2 + */ + + public Integer getYl2() { + return yl2; + } + /** + * @param yl2 the yl2 to set + */ + public void setYl2(Integer yl2) { + this.yl2 = yl2; + } + /** + * yl3 + * @return yl3 + */ + + public String getYl3() { + return yl3; + } + /** + * @param yl3 the yl3 to set + */ + public void setYl3(String yl3) { + this.yl3 = yl3; + } + /** + * yl4 + * @return yl4 + */ + + public String getYl4() { + return yl4; + } + /** + * @param yl4 the yl4 to set + */ + public void setYl4(String yl4) { + this.yl4 = yl4; + } + /** + * yl5 + * @return yl5 + */ + + public String getYl5() { + return yl5; + } + /** + * @param yl5 the yl5 to set + */ + public void setYl5(String yl5) { + this.yl5 = yl5; + } + + + + +} diff --git a/src/main/java/com/nis/domain/restful/DnsFakeIpSource.java b/src/main/java/com/nis/domain/restful/DnsFakeIpSource.java new file mode 100644 index 0000000..5a78d12 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsFakeIpSource.java @@ -0,0 +1,125 @@ +/** + *@Title: DnsFakeIpSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月7日 下午6:26:06 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DnsFakeIpSource.java + * @Description: TODO + * @author (dell) + * @date 2016年9月7日 下午6:26:06 + * @version V1.0 + */ +public class DnsFakeIpSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -6785885766516678348L; + private static final String DEFAULT_VERSION = "1.0"; + private List dnsFakeIpList; + + + /** + * 创建一个新的实例 DnsGroupTypeSource. + * + */ + public DnsFakeIpSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DnsFakeIpSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dnsResponseStrategyList + * @return dnsResponseStrategyList + */ + /** + * dnsGroupTypeList + * @return dnsGroupTypeList + */ + + public List getDnsFakeIpList() { + return dnsFakeIpList; + } + /** + * @param dnsGroupTypeList the dnsGroupTypeList to set + */ + public void setDnsFakeIpList(List dnsFakeIpList) { + this.dnsFakeIpList = dnsFakeIpList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DnsGroupType.java b/src/main/java/com/nis/domain/restful/DnsGroupType.java new file mode 100644 index 0000000..f660596 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsGroupType.java @@ -0,0 +1,245 @@ +/** + *@Title: DnsGroupType.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月3日 下午7:47:28 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DnsGroupType.java + * @Description: TODO + * @author (wx) + * @date 2016年9月3日 下午7:47:28 + * @version V1.0 + */ +public class DnsGroupType extends BaseEntity { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -7012538382953700633L; + @ApiModelProperty(value="序号", required=true) + private Long id; + @ApiModelProperty(value="组号", required=true) + private Integer groupId; + @ApiModelProperty(value="组名", required=true) + private String groupName; + @ApiModelProperty(value="应答类型号", required=true) + private Integer resTypeId; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="有效标志", required=true) + private Integer isValid; + @ApiModelProperty(value="预留1", required=false) + private Integer yl1; + @ApiModelProperty(value="预留2", required=false) + private Integer yl2; + @ApiModelProperty(value="预留3", required=false) + private String yl3; + @ApiModelProperty(value="预留4", required=false) + private String yl4; + @ApiModelProperty(value="预留5", required=false) + private String yl5; + + private Date lastUpdate; + private Long procSeq; + + /** + * groupName + * @return groupName + */ + + public String getGroupName() { + return groupName; + } + /** + * @param groupName the groupName to set + */ + public void setGroupName(String groupName) { + this.groupName = groupName; + } + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * groupId + * @return groupId + */ + + public Integer getGroupId() { + return groupId; + } + /** + * @param groupId the groupId to set + */ + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + /** + * resTypeId + * @return resTypeId + */ + + public Integer getResTypeId() { + return resTypeId; + } + /** + * @param resTypeId the resTypeId to set + */ + public void setResTypeId(Integer resTypeId) { + this.resTypeId = resTypeId; + } + /** + * opTime + * @return opTime + */ +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param opTime the opTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * isValid + * @return isValid + */ + + public Integer getIsValid() { + return isValid; + } + /** + * @param isValid the isValid to set + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + /** + * yl1 + * @return yl1 + */ + + public Integer getYl1() { + return yl1; + } + /** + * @param yl1 the yl1 to set + */ + public void setYl1(Integer yl1) { + this.yl1 = yl1; + } + /** + * yl2 + * @return yl2 + */ + + public Integer getYl2() { + return yl2; + } + /** + * @param yl2 the yl2 to set + */ + public void setYl2(Integer yl2) { + this.yl2 = yl2; + } + /** + * yl3 + * @return yl3 + */ + + public String getYl3() { + return yl3; + } + /** + * @param yl3 the yl3 to set + */ + public void setYl3(String yl3) { + this.yl3 = yl3; + } + /** + * yl4 + * @return yl4 + */ + + public String getYl4() { + return yl4; + } + /** + * @param yl4 the yl4 to set + */ + public void setYl4(String yl4) { + this.yl4 = yl4; + } + /** + * yl5 + * @return yl5 + */ + + public String getYl5() { + return yl5; + } + /** + * @param yl5 the yl5 to set + */ + public void setYl5(String yl5) { + this.yl5 = yl5; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DnsGroupTypeSource.java b/src/main/java/com/nis/domain/restful/DnsGroupTypeSource.java new file mode 100644 index 0000000..aa43ed6 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsGroupTypeSource.java @@ -0,0 +1,124 @@ +/** + *@Title: DnsGroupTypeSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月7日 下午3:32:18 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DnsGroupTypeSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:32:18 + * @version V1.0 + */ +public class DnsGroupTypeSource extends ConfigCommonSource{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 4829973369982149866L; + private static final String DEFAULT_VERSION = "1.0"; + private List dnsGroupTypeList; + + + /** + * 创建一个新的实例 DnsGroupTypeSource. + * + */ + public DnsGroupTypeSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DnsGroupTypeSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dnsResponseStrategyList + * @return dnsResponseStrategyList + */ + /** + * dnsGroupTypeList + * @return dnsGroupTypeList + */ + + public List getDnsGroupTypeList() { + return dnsGroupTypeList; + } + /** + * @param dnsGroupTypeList the dnsGroupTypeList to set + */ + public void setDnsGroupTypeList(List dnsGroupTypeList) { + this.dnsGroupTypeList = dnsGroupTypeList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/DnsResponseStrategy.java b/src/main/java/com/nis/domain/restful/DnsResponseStrategy.java new file mode 100644 index 0000000..805b63d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsResponseStrategy.java @@ -0,0 +1,457 @@ +/** + *@Title: DnsResponseStrategy.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月3日 下午7:01:02 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModel; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: DnsResponseStrategy.java + * @Description: TODO + * @author (wx) + * @date 2016年9月3日 下午7:01:02 + * @version V1.0 + */ +@ApiModel + +public class DnsResponseStrategy extends BaseEntity { + + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4484073380296557600L; + @ApiModelProperty(value="序号", required=true) + private Long id; + @ApiModelProperty(value="请求策略号", required=true) + private Integer reqStrateId; + @ApiModelProperty(value="策略名称", required=true) + private String strateName; + @ApiModelProperty(value="应答组1的组号", required=false) + private Integer resGroupOneId; + @ApiModelProperty(value="应答组1的应答数", required=false) + private Integer resGroupOneNum; + @ApiModelProperty(value="应答组2的组号", required=false) + private Integer resGroupTwoId; + @ApiModelProperty(value="应答组2的应答数", required=false) + private Integer resGroupTwoNum; + @ApiModelProperty(value="应答组3的组号", required=false) + private Integer resGroupThreeId; + @ApiModelProperty(value="应答组3的应答数", required=false) + private Integer resGroupThreeNum; + @ApiModelProperty(value="应答组4的组号", required=false) + private Integer resGroupFourId; + @ApiModelProperty(value="应答组4的应答数", required=false) + private Integer resGroupFourNum; + @ApiModelProperty(value="应答组5的组号", required=false) + private Integer resGroupFiveId; + @ApiModelProperty(value="应答组5的应答数", required=false) + private Integer resGroupFiveNum; + @ApiModelProperty(value="Auth记录组号", required=false) + private Integer authGroup; + @ApiModelProperty(value="Additional记录组号", required=false) + private Integer addGroup; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="有效标识", required=true) + private Integer isValid; + @ApiModelProperty(value="预留1", required=false) + private Integer yl1; + @ApiModelProperty(value="预留2", required=false) + private Integer yl2; + @ApiModelProperty(value="预留3", required=false) + private String yl3; + @ApiModelProperty(value="预留4", required=false) + private String yl4; + @ApiModelProperty(value="预留5", required=false) + private String yl5; + private Date lastUpdate; + private Long procSeq; + @ApiModelProperty(value="最小生存时间", required=true) + private Integer minTtl; + @ApiModelProperty(value="最大生存时间", required=true) + private Integer maxTtl; + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * reqStrateId + * @return reqStrateId + */ + + public Integer getReqStrateId() { + return reqStrateId; + } + /** + * @param reqStrateId the reqStrateId to set + */ + public void setReqStrateId(Integer reqStrateId) { + this.reqStrateId = reqStrateId; + } + /** + * strateName + * @return strateName + */ + + public String getStrateName() { + return strateName; + } + /** + * @param strateName the strateName to set + */ + public void setStrateName(String strateName) { + this.strateName = strateName; + } + /** + * resGroupOneId + * @return resGroupOneId + */ + + public Integer getResGroupOneId() { + return resGroupOneId; + } + /** + * @param resGroupOneId the resGroupOneId to set + */ + public void setResGroupOneId(Integer resGroupOneId) { + this.resGroupOneId = resGroupOneId; + } + /** + * resGroupOneNum + * @return resGroupOneNum + */ + + public Integer getResGroupOneNum() { + return resGroupOneNum; + } + /** + * @param resGroupOneNum the resGroupOneNum to set + */ + public void setResGroupOneNum(Integer resGroupOneNum) { + this.resGroupOneNum = resGroupOneNum; + } + /** + * resGroupTwoId + * @return resGroupTwoId + */ + + public Integer getResGroupTwoId() { + return resGroupTwoId; + } + /** + * @param resGroupTwoId the resGroupTwoId to set + */ + public void setResGroupTwoId(Integer resGroupTwoId) { + this.resGroupTwoId = resGroupTwoId; + } + /** + * resGroupTwoNum + * @return resGroupTwoNum + */ + + public Integer getResGroupTwoNum() { + return resGroupTwoNum; + } + /** + * @param resGroupTwoNum the resGroupTwoNum to set + */ + public void setResGroupTwoNum(Integer resGroupTwoNum) { + this.resGroupTwoNum = resGroupTwoNum; + } + /** + * authGroup + * @return authGroup + */ + + public Integer getAuthGroup() { + return authGroup; + } + /** + * @param authGroup the authGroup to set + */ + public void setAuthGroup(Integer authGroup) { + this.authGroup = authGroup; + } + /** + * addGroup + * @return addGroup + */ + + public Integer getAddGroup() { + return addGroup; + } + /** + * @param addGroup the addGroup to set + */ + public void setAddGroup(Integer addGroup) { + this.addGroup = addGroup; + } + /** + * opTime + * @return opTime + */ +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param opTime the opTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + /** + * isValid + * @return isValid + */ + + public Integer getIsValid() { + return isValid; + } + /** + * @param isValid the isValid to set + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + /** + * yl1 + * @return yl1 + */ + + public Integer getYl1() { + return yl1; + } + /** + * @param yl1 the yl1 to set + */ + public void setYl1(Integer yl1) { + this.yl1 = yl1; + } + /** + * yl2 + * @return yl2 + */ + + public Integer getYl2() { + return yl2; + } + /** + * @param yl2 the yl2 to set + */ + public void setYl2(Integer yl2) { + this.yl2 = yl2; + } + /** + * yl3 + * @return yl3 + */ + + public String getYl3() { + return yl3; + } + /** + * @param yl3 the yl3 to set + */ + public void setYl3(String yl3) { + this.yl3 = yl3; + } + /** + * yl4 + * @return yl4 + */ + + public String getYl4() { + return yl4; + } + /** + * @param yl4 the yl4 to set + */ + public void setYl4(String yl4) { + this.yl4 = yl4; + } + /** + * yl5 + * @return yl5 + */ + + public String getYl5() { + return yl5; + } + /** + * @param yl5 the yl5 to set + */ + public void setYl5(String yl5) { + this.yl5 = yl5; + } + /** + * minTtl + * @return minTtl + */ + + public Integer getMinTtl() { + return minTtl; + } + /** + * @param minTtl the minTtl to set + */ + public void setMinTtl(Integer minTtl) { + this.minTtl = minTtl; + } + /** + * maxTtl + * @return maxTtl + */ + + public Integer getMaxTtl() { + return maxTtl; + } + /** + * @param maxTtl the maxTtl to set + */ + public void setMaxTtl(Integer maxTtl) { + this.maxTtl = maxTtl; + } + /** + * resGroupThreeId + * @return resGroupThreeId + */ + + public Integer getResGroupThreeId() { + return resGroupThreeId; + } + /** + * @param resGroupThreeId the resGroupThreeId to set + */ + public void setResGroupThreeId(Integer resGroupThreeId) { + this.resGroupThreeId = resGroupThreeId; + } + /** + * resGroupThreeNum + * @return resGroupThreeNum + */ + + public Integer getResGroupThreeNum() { + return resGroupThreeNum; + } + /** + * @param resGroupThreeNum the resGroupThreeNum to set + */ + public void setResGroupThreeNum(Integer resGroupThreeNum) { + this.resGroupThreeNum = resGroupThreeNum; + } + /** + * resGroupFourId + * @return resGroupFourId + */ + + public Integer getResGroupFourId() { + return resGroupFourId; + } + /** + * @param resGroupFourId the resGroupFourId to set + */ + public void setResGroupFourId(Integer resGroupFourId) { + this.resGroupFourId = resGroupFourId; + } + /** + * resGroupFourNum + * @return resGroupFourNum + */ + + public Integer getResGroupFourNum() { + return resGroupFourNum; + } + /** + * @param resGroupFourNum the resGroupFourNum to set + */ + public void setResGroupFourNum(Integer resGroupFourNum) { + this.resGroupFourNum = resGroupFourNum; + } + /** + * resGroupFiveId + * @return resGroupFiveId + */ + + public Integer getResGroupFiveId() { + return resGroupFiveId; + } + /** + * @param resGroupFiveId the resGroupFiveId to set + */ + public void setResGroupFiveId(Integer resGroupFiveId) { + this.resGroupFiveId = resGroupFiveId; + } + /** + * resGroupFiveNum + * @return resGroupFiveNum + */ + + public Integer getResGroupFiveNum() { + return resGroupFiveNum; + } + /** + * @param resGroupFiveNum the resGroupFiveNum to set + */ + public void setResGroupFiveNum(Integer resGroupFiveNum) { + this.resGroupFiveNum = resGroupFiveNum; + } + + + +} diff --git a/src/main/java/com/nis/domain/restful/DnsResponseStrategySource.java b/src/main/java/com/nis/domain/restful/DnsResponseStrategySource.java new file mode 100644 index 0000000..acbd709 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/DnsResponseStrategySource.java @@ -0,0 +1,122 @@ +/** + *@Title: DnsResponseStrategySource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月6日 上午9:00:41 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: DnsResponseStrategySource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月6日 上午9:00:41 + * @version V1.0 + */ +public class DnsResponseStrategySource extends ConfigCommonSource { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 2810461787654112507L; + private static final String DEFAULT_VERSION = "1.0"; + private List dnsResponseStrategyList; + + /** + * 创建一个新的实例 DnsResponseStrategySource. + * + */ + public DnsResponseStrategySource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public DnsResponseStrategySource(String version) { + // TODO Auto-generated constructor stub + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dnsResponseStrategyList + * @return dnsResponseStrategyList + */ + + public List getDnsResponseStrategyList() { + return dnsResponseStrategyList; + } + + /** + * @param dnsResponseStrategyList the dnsResponseStrategyList to set + */ + public void setDnsResponseStrategyList(List dnsResponseStrategyList) { + this.dnsResponseStrategyList = dnsResponseStrategyList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/EncryptProtoRandom.java b/src/main/java/com/nis/domain/restful/EncryptProtoRandom.java new file mode 100644 index 0000000..bd259b8 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/EncryptProtoRandom.java @@ -0,0 +1,97 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class EncryptProtoRandom extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 9207461727413894109L; + @ApiModelProperty(value="序号", required=true) + private Long id; + @ApiModelProperty(value="比例值", required=true) + private Integer randomValue; + @ApiModelProperty(value="协议编号", required=true) + private Integer proto; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="有效标志", required=true) + private Integer isValid; + private Long procSeq; + private Date lastUpdate; + + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#getId() + */ + @Override + public Long getId() { + // TODO Auto-generated method stub + return super.getId(); + } + + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#setId(java.lang.Long) + */ + @Override + public void setId(Long id) { + // TODO Auto-generated method stub + super.setId(id); + } + + public Integer getRandomValue() { + return randomValue; + } + + public void setRandomValue(Integer randomValue) { + this.randomValue = randomValue; + } + + public Integer getProto() { + return proto; + } + + public void setProto(Integer proto) { + this.proto = proto; + } + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public Integer getIsValid() { + return isValid; + } + + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/EncryptProtoRandomSource.java b/src/main/java/com/nis/domain/restful/EncryptProtoRandomSource.java new file mode 100644 index 0000000..3979681 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/EncryptProtoRandomSource.java @@ -0,0 +1,128 @@ +/** + *@Title: EncryptProtoRandomSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月27日 上午8:57:57 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: EncryptProtoRandomSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月27日 上午8:57:57 + * @version V1.0 + */ +public class EncryptProtoRandomSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4303849898919494205L; + private static final String DEFAULT_VERSION = "1.0"; + private List encryptProtoRandomList; + + /** + * 创建一个新的实例 EncryptProtoRandomSource. + * + */ + public EncryptProtoRandomSource() { + super(); + this.version=DEFAULT_VERSION; + } + + + /** + * 创建一个新的实例 EncryptProtoRandomSource. + * + * @param encryptProtoRandomList + */ + public EncryptProtoRandomSource(List encryptProtoRandomList) { + this.encryptProtoRandomList = encryptProtoRandomList; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * encryptProtoRandomList + * @return encryptProtoRandomList + */ + + public List getEncryptProtoRandomList() { + return encryptProtoRandomList; + } + + + /** + * @param encryptProtoRandomList the encryptProtoRandomList to set + */ + public void setEncryptProtoRandomList(List encryptProtoRandomList) { + this.encryptProtoRandomList = encryptProtoRandomList; + } + +} diff --git a/src/main/java/com/nis/domain/restful/FakeIpConfigCompile.java b/src/main/java/com/nis/domain/restful/FakeIpConfigCompile.java new file mode 100644 index 0000000..8c1ab4b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/FakeIpConfigCompile.java @@ -0,0 +1,182 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.nis.domain.BaseEntity; + +public class FakeIpConfigCompile extends BaseEntity{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4840694519393346179L; + + private Long compileId; + + private Integer service; + + private Integer action; + + private Integer doBlacklist; + + private Integer doLog; + + private String effectiveRange; + + private String userRegion; + + private Integer isValid; + + private Date opTime; + + private Integer groupNum; + private Integer activeSys; + private Date lastUpdate; + private Long procSeq; + + /** + * activeSys + * @return activeSys + */ + + public Integer getActiveSys() { + return activeSys; + } + + /** + * @param activeSys the activeSys to set + */ + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + /** + * lastUpdate + * @return lastUpdate + */ + + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + /** + * 创建一个新的实例 FakeIpConfigCompile. + * + */ + public FakeIpConfigCompile() { + this.service=0; + this.doBlacklist=0; + this.doLog=0; + this.effectiveRange="0"; + this.userRegion="0"; + this.isValid=1; + this.opTime=new Date(); + this.groupNum=1; + } + + public Long getCompileId() { + return compileId; + } + + public void setCompileId(Long compileId) { + this.compileId = compileId; + } + + public Integer getService() { + return service; + } + + public void setService(Integer service) { + this.service = service; + } + + public Integer getAction() { + return action; + } + + public void setAction(Integer action) { + this.action = action; + } + + public Integer getDoBlacklist() { + return doBlacklist; + } + + public void setDoBlacklist(Integer doBlacklist) { + this.doBlacklist = doBlacklist; + } + + public Integer getDoLog() { + return doLog; + } + + public void setDoLog(Integer doLog) { + this.doLog = doLog; + } + + public String getEffectiveRange() { + return effectiveRange; + } + + public void setEffectiveRange(String effectiveRange) { + this.effectiveRange = effectiveRange; + } + + public String getUserRegion() { + return userRegion; + } + + public void setUserRegion(String userRegion) { + this.userRegion = userRegion == null ? null : userRegion.trim(); + } + + public Integer getIsValid() { + return isValid; + } + + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public Integer getGroupNum() { + return groupNum; + } + + public void setGroupNum(Integer groupNum) { + this.groupNum = groupNum; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/FakeIpConfigGroup.java b/src/main/java/com/nis/domain/restful/FakeIpConfigGroup.java new file mode 100644 index 0000000..89d9b3b --- /dev/null +++ b/src/main/java/com/nis/domain/restful/FakeIpConfigGroup.java @@ -0,0 +1,114 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.BaseEntity; + +public class FakeIpConfigGroup extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 2903914645692214990L; + + private Integer groupId; + + private Long compileId; + + private Integer isValid; + + private Date opTime; + private Date lastUpdate; + private Long procSeq; + private Long id; + + /** + * id + * @return id + */ + + public Long getId() { + return id; + } + + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + + /** + * lastUpdate + * @return lastUpdate + */ + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + /** + * 创建一个新的实例 FakeIpConfigGroup. + * + */ + public FakeIpConfigGroup() { + this.isValid=1; + this.opTime=new Date(); + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public Long getCompileId() { + return compileId; + } + + public void setCompileId(Long compileId) { + this.compileId = compileId; + } + + public Integer getIsValid() { + return isValid; + } + + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/FwqInfo.java b/src/main/java/com/nis/domain/restful/FwqInfo.java new file mode 100644 index 0000000..37fb07e --- /dev/null +++ b/src/main/java/com/nis/domain/restful/FwqInfo.java @@ -0,0 +1,111 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; +/** + * + * @ClassName: FwqInfo.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:14:52 + * @version V1.0 + */ +public class FwqInfo extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -7679262194839780624L; + @ApiModelProperty(value="配置ID", required=true) + private Long id; + @ApiModelProperty(value="服务器名称", required=true) + private String name; + @ApiModelProperty(value="国际出入口编号", required=true) + private Long entranceId; + @ApiModelProperty(value="操作员", required=true) + private Long czyid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + private Date lastUpdate; + private Long procSeq; + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Long getEntranceId() { + return entranceId; + } + + public void setEntranceId(Long entranceId) { + this.entranceId = entranceId; + } + + public Long getCzyid() { + return czyid; + } + + public void setCzyid(Long czyid) { + this.czyid = czyid; + } +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/FwqInfoSource.java b/src/main/java/com/nis/domain/restful/FwqInfoSource.java new file mode 100644 index 0000000..7dc089e --- /dev/null +++ b/src/main/java/com/nis/domain/restful/FwqInfoSource.java @@ -0,0 +1,120 @@ +/** + *@Title: FwqInfoSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: FwqInfoSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class FwqInfoSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List fwqInfoList; + + + /** + * 创建一个新的实例 FwqInfoSource. + * + */ + public FwqInfoSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public FwqInfoSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * fwqInfoList + * @return fwqInfoList + */ + + public List getFwqInfoList() { + return fwqInfoList; + } + /** + * @param fwqInfoList the fwqInfoList to set + */ + public void setFwqInfoList(List fwqInfoList) { + this.fwqInfoList = fwqInfoList; + } +} diff --git a/src/main/java/com/nis/domain/restful/IpLocationPublic.java b/src/main/java/com/nis/domain/restful/IpLocationPublic.java new file mode 100644 index 0000000..7e9d9ed --- /dev/null +++ b/src/main/java/com/nis/domain/restful/IpLocationPublic.java @@ -0,0 +1,191 @@ +package com.nis.domain.restful; + + +import com.nis.domain.BaseEntity; +/** + * + * @ClassName: IpLocationPublic.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:29:56 + * @version V1.0 + */ +public class IpLocationPublic extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4375875160095552557L; + + private Long id; + + private String ipStart; + + private String ipEnd; + + private Long ipStartNum; + + private Long ipEndNum; + + private String continent; + + private String country; + + private String province; + + private String city; + + private String district; + + private String description; + + private String isp; + + private String areaCode; + + private String countryEnglish; + + private String countryCode; + + private String longitude; + + private String latitude; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getIpStart() { + return ipStart; + } + + public void setIpStart(String ipStart) { + this.ipStart = ipStart == null ? null : ipStart.trim(); + } + + public String getIpEnd() { + return ipEnd; + } + + public void setIpEnd(String ipEnd) { + this.ipEnd = ipEnd == null ? null : ipEnd.trim(); + } + + public Long getIpStartNum() { + return ipStartNum; + } + + public void setIpStartNum(Long ipStartNum) { + this.ipStartNum = ipStartNum; + } + + public Long getIpEndNum() { + return ipEndNum; + } + + public void setIpEndNum(Long ipEndNum) { + this.ipEndNum = ipEndNum; + } + + public String getContinent() { + return continent; + } + + public void setContinent(String continent) { + this.continent = continent == null ? null : continent.trim(); + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country == null ? null : country.trim(); + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province == null ? null : province.trim(); + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city == null ? null : city.trim(); + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district == null ? null : district.trim(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public String getIsp() { + return isp; + } + + public void setIsp(String isp) { + this.isp = isp == null ? null : isp.trim(); + } + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode == null ? null : areaCode.trim(); + } + + public String getCountryEnglish() { + return countryEnglish; + } + + public void setCountryEnglish(String countryEnglish) { + this.countryEnglish = countryEnglish == null ? null : countryEnglish.trim(); + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode == null ? null : countryCode.trim(); + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude == null ? null : longitude.trim(); + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude == null ? null : latitude.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/IpLocationPublicSource.java b/src/main/java/com/nis/domain/restful/IpLocationPublicSource.java new file mode 100644 index 0000000..7631fc0 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/IpLocationPublicSource.java @@ -0,0 +1,120 @@ +/** + *@Title: IpLocationPublicSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: IpLocationPublicSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class IpLocationPublicSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List ipLocationPublicList; + + + /** + * 创建一个新的实例 IpLocationPublicSource. + * + */ + public IpLocationPublicSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public IpLocationPublicSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * ipLocationPublicList + * @return ipLocationPublicList + */ + + public List getIpLocationPublicList() { + return ipLocationPublicList; + } + /** + * @param ipLocationPublicList the ipLocationPublicList to set + */ + public void setIpLocationPublicList(List ipLocationPublicList) { + this.ipLocationPublicList = ipLocationPublicList; + } +} diff --git a/src/main/java/com/nis/domain/restful/IpRegion.java b/src/main/java/com/nis/domain/restful/IpRegion.java new file mode 100644 index 0000000..41de6e9 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/IpRegion.java @@ -0,0 +1,314 @@ +/** +* @Title: StrRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:29:45 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: StrRegion +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月29日 下午10:29:45 +* @version V1.0 +*/ +public class IpRegion implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1L; + @ApiModelProperty(value="域ID", required=true) + private Long regionId; + @ApiModelProperty(value="分组ID", required=true) + private Long groupId; + + @ApiModelProperty(value="业务表名称", required=true) + private String tableName; + + @ApiModelProperty(value="地址类型", required=true) + private Integer addrType; + @ApiModelProperty(value="源IP", required=true) + private String srcIp; + @ApiModelProperty(value="源IP掩码", required=true) + private String maskSrcIp; + @ApiModelProperty(value="源端口", required=true) + private String srcPort; + @ApiModelProperty(value="源端口掩码", required=true) + private String maskSrcPort; + @ApiModelProperty(value="目的IP", required=true) + private String dstIp; + @ApiModelProperty(value="目的IP掩码", required=true) + private String maskDstIp; + @ApiModelProperty(value="目的端口", required=true) + private String dstPort; + @ApiModelProperty(value="目的端口掩码", required=true) + private String maskDstPort; + @ApiModelProperty(value="协议", required=true) + private Integer protocol; + @ApiModelProperty(value="方向", required=true) + private Integer direction; + @ApiModelProperty(value="有效标志", required=true) + private Integer isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="版本序列号", required=true) + private Long procSeq; + + @ApiModelProperty(value = "本地更新时间 ", required = true) + private Date lastUpdate; + + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * @return regionId + */ + public Long getRegionId() { + return regionId; + } + + /** + * @param regionId 要设置的 regionId + */ + public void setRegionId(Long regionId) { + this.regionId = regionId; + } + + /** + * @return groupId + */ + public Long getGroupId() { + return groupId; + } + + /** + * @param groupId 要设置的 groupId + */ + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + /** + * @return addrType + */ + public Integer getAddrType() { + return addrType; + } + + /** + * @param addrType 要设置的 addrType + */ + public void setAddrType(Integer addrType) { + this.addrType = addrType; + } + + /** + * @return srcIp + */ + public String getSrcIp() { + return srcIp; + } + + /** + * @param srcIp 要设置的 srcIp + */ + public void setSrcIp(String srcIp) { + this.srcIp = srcIp; + } + + /** + * @return maskSrcIp + */ + public String getMaskSrcIp() { + return maskSrcIp; + } + + /** + * @param maskSrcIp 要设置的 maskSrcIp + */ + public void setMaskSrcIp(String maskSrcIp) { + this.maskSrcIp = maskSrcIp; + } + + /** + * @return srcPort + */ + public String getSrcPort() { + return srcPort; + } + + /** + * @param srcPort 要设置的 srcPort + */ + public void setSrcPort(String srcPort) { + this.srcPort = srcPort; + } + + /** + * @return maskSrcPort + */ + public String getMaskSrcPort() { + return maskSrcPort; + } + + /** + * @param maskSrcPort 要设置的 maskSrcPort + */ + public void setMaskSrcPort(String maskSrcPort) { + this.maskSrcPort = maskSrcPort; + } + + /** + * @return dstIp + */ + public String getDstIp() { + return dstIp; + } + + /** + * @param dstIp 要设置的 dstIp + */ + public void setDstIp(String dstIp) { + this.dstIp = dstIp; + } + + /** + * @return maskDstIp + */ + public String getMaskDstIp() { + return maskDstIp; + } + + /** + * @param maskDstIp 要设置的 maskDstIp + */ + public void setMaskDstIp(String maskDstIp) { + this.maskDstIp = maskDstIp; + } + + /** + * @return dstPort + */ + public String getDstPort() { + return dstPort; + } + + /** + * @param dstPort 要设置的 dstPort + */ + public void setDstPort(String dstPort) { + this.dstPort = dstPort; + } + + /** + * @return maskDstPort + */ + public String getMaskDstPort() { + return maskDstPort; + } + + /** + * @param maskDstPort 要设置的 maskDstPort + */ + public void setMaskDstPort(String maskDstPort) { + this.maskDstPort = maskDstPort; + } + + /** + * @return protocol + */ + public Integer getProtocol() { + return protocol; + } + + /** + * @param protocol 要设置的 protocol + */ + public void setProtocol(Integer protocol) { + this.protocol = protocol; + } + + /** + * @return direction + */ + public Integer getDirection() { + return direction; + } + + /** + * @param direction 要设置的 direction + */ + public void setDirection(Integer direction) { + this.direction = direction; + } + + /** + * @return isValid + */ + public Integer getIsValid() { + return isValid; + } + + /** + * @param isValid 要设置的 isValid + */ + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + /** + * @return opTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + + + + + +} diff --git a/src/main/java/com/nis/domain/restful/IpRegionTest.java b/src/main/java/com/nis/domain/restful/IpRegionTest.java new file mode 100644 index 0000000..cea7f4d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/IpRegionTest.java @@ -0,0 +1,25 @@ +/** +* @Title: StrRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:29:45 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** + * @ClassName: StrRegion + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午10:29:45 + * @version V1.0 + */ +public class IpRegionTest extends IpRegion { + + /** + * + */ + private static final long serialVersionUID = 5051062513980968866L; + +} diff --git a/src/main/java/com/nis/domain/restful/JdjInfo.java b/src/main/java/com/nis/domain/restful/JdjInfo.java new file mode 100644 index 0000000..71ed44c --- /dev/null +++ b/src/main/java/com/nis/domain/restful/JdjInfo.java @@ -0,0 +1,131 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; +/** + * + * @ClassName: JdjInfo.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:17:52 + * @version V1.0 + */ +public class JdjInfo extends BaseEntity{ + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 1972462456394453087L; + @ApiModelProperty(value="配置ID", required=true) + private Long id; + @ApiModelProperty(value="节点机名称", required=true) + private String name; + @ApiModelProperty(value="服务器ID", required=true) + private Long fwqId; + @ApiModelProperty(value="监测IP", required=true) + private String jcIp; + @ApiModelProperty(value="封堵IP", required=true) + private String fdIp; + @ApiModelProperty(value="操作员", required=true) + private Long czyid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + private Date lastUpdate; + private Long procSeq; + + /** + * lastUpdate + * @return lastUpdate + */ + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + /** + * @param lastUpdate the lastUpdate to set + */ + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + /** + * procSeq + * @return procSeq + */ + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + /** + * @param procSeq the procSeq to set + */ + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Long getFwqId() { + return fwqId; + } + + public void setFwqId(Long fwqId) { + this.fwqId = fwqId; + } + + public String getJcIp() { + return jcIp; + } + + public void setJcIp(String jcIp) { + this.jcIp = jcIp == null ? null : jcIp.trim(); + } + + public String getFdIp() { + return fdIp; + } + + public void setFdIp(String fdIp) { + this.fdIp = fdIp == null ? null : fdIp.trim(); + } + + public Long getCzyid() { + return czyid; + } + + public void setCzyid(Long czyid) { + this.czyid = czyid; + } +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/JdjInfoSource.java b/src/main/java/com/nis/domain/restful/JdjInfoSource.java new file mode 100644 index 0000000..62fe796 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/JdjInfoSource.java @@ -0,0 +1,120 @@ +/** + *@Title: JdjInfoSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName: JdjInfoSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class JdjInfoSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List jdjInfoList; + + + /** + * 创建一个新的实例 JdjInfoSource. + * + */ + public JdjInfoSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public JdjInfoSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * jdjInfoList + * @return jdjInfoList + */ + + public List getJdjInfoList() { + return jdjInfoList; + } + /** + * @param jdjInfoList the jdjInfoList to set + */ + public void setJdjInfoList(List jdjInfoList) { + this.jdjInfoList = jdjInfoList; + } +} diff --git a/src/main/java/com/nis/domain/restful/NumRegion.java b/src/main/java/com/nis/domain/restful/NumRegion.java new file mode 100644 index 0000000..4bacd5d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/NumRegion.java @@ -0,0 +1,172 @@ +/** +* @Title: NumRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:46:00 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: NumRegion +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月29日 下午10:46:00 +* @version V1.0 +*/ +public class NumRegion implements Serializable{ + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = -4566003594954790608L; + + @ApiModelProperty(value="域ID", required=true) + private Long regionId; + @ApiModelProperty(value="分组ID", required=true) + private Long groupId; + + @ApiModelProperty(value="业务表名称", required=true) + private String tableName; + + @ApiModelProperty(value="数值下界", required=true) + private Long lowBoundary; + @ApiModelProperty(value="数值上界", required=true) + private Long upBoundary; + @ApiModelProperty(value="是否有效", required=true) + private int isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="版本序列号", required=true) + private Long procSeq; + + @ApiModelProperty(value = "本地更新时间 ", required = true) + private Date lastUpdate; + + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + + /** + * @return regionId + */ + public Long getRegionId() { + return regionId; + } + + /** + * @param regionId 要设置的 regionId + */ + public void setRegionId(Long regionId) { + this.regionId = regionId; + } + + /** + * @return groupId + */ + public Long getGroupId() { + return groupId; + } + + /** + * @param groupId 要设置的 groupId + */ + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + + /** + * @return lowBoundary + */ + public Long getLowBoundary() { + return lowBoundary; + } + + /** + * @param lowBoundary 要设置的 lowBoundary + */ + public void setLowBoundary(Long lowBoundary) { + this.lowBoundary = lowBoundary; + } + + /** + * @return upBoundary + */ + public Long getUpBoundary() { + return upBoundary; + } + + /** + * @param upBoundary 要设置的 upBoundary + */ + public void setUpBoundary(Long upBoundary) { + this.upBoundary = upBoundary; + } + + /** + * @return isValid + */ + public int getIsValid() { + return isValid; + } + + /** + * @param isValid 要设置的 isValid + */ + public void setIsValid(int isValid) { + this.isValid = isValid; + } + + /** + * @return opTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + + + + +} diff --git a/src/main/java/com/nis/domain/restful/NumRegionTest.java b/src/main/java/com/nis/domain/restful/NumRegionTest.java new file mode 100644 index 0000000..6e8f271 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/NumRegionTest.java @@ -0,0 +1,29 @@ +/** +* @Title: NumRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:46:00 +* @version V1.0 +*/ +package com.nis.domain.restful; + + +/** +* @ClassName: NumRegion +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月29日 下午10:46:00 +* @version V1.0 +*/ +public class NumRegionTest extends NumRegion{ + + /** + * + */ + private static final long serialVersionUID = 8992364895523569799L; + + + + +} diff --git a/src/main/java/com/nis/domain/restful/ServicesRequestLogBean.java b/src/main/java/com/nis/domain/restful/ServicesRequestLogBean.java new file mode 100644 index 0000000..8afd7fc --- /dev/null +++ b/src/main/java/com/nis/domain/restful/ServicesRequestLogBean.java @@ -0,0 +1,58 @@ +package com.nis.domain.restful; + +import java.io.Serializable; +import com.nis.domain.Page; +import com.nis.domain.ServicesRequestLog; + +public class ServicesRequestLogBean extends ServicesRequestLog implements Serializable { + /** + * + */ + private static final long serialVersionUID = -3111023683958691133L; + private String opStartTime; + private String opEndTime; + private String requestStartTime; + private String requestEndTime; + private Page page; + + public String getOpStartTime() { + return opStartTime; + } + + public void setOpStartTime(String opStartTime) { + this.opStartTime = opStartTime; + } + + public String getOpEndTime() { + return opEndTime; + } + + public void setOpEndTime(String opEndTime) { + this.opEndTime = opEndTime; + } + + public String getRequestStartTime() { + return requestStartTime; + } + + public void setRequestStartTime(String requestStartTime) { + this.requestStartTime = requestStartTime; + } + + public String getRequestEndTime() { + return requestEndTime; + } + + public void setRequestEndTime(String requestEndTime) { + this.requestEndTime = requestEndTime; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } + +} diff --git a/src/main/java/com/nis/domain/restful/StrRegion.java b/src/main/java/com/nis/domain/restful/StrRegion.java new file mode 100644 index 0000000..2083c4d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/StrRegion.java @@ -0,0 +1,196 @@ +/** +* @Title: IpRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:36:06 +* @version V1.0 +*/ +package com.nis.domain.restful; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** +* @ClassName: IpRegion +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月29日 下午10:36:06 +* @version V1.0 +*/ +public class StrRegion implements Serializable { + + /** + * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1L; + @ApiModelProperty(value="域ID", required=true) + private Long regionId; + @ApiModelProperty(value="分组ID", required=true) + private Long groupId; + @ApiModelProperty(value="业务表名称", required=true) + private String tableName; + @ApiModelProperty(value="匹配区域", required=true) + private String district; + @ApiModelProperty(value="关键字", required=true) + private String keywords; + @ApiModelProperty(value="表达式类型", required=true) + private Integer exprType; + @ApiModelProperty(value="匹配方式", required=true) + private Integer matchMethod; + @ApiModelProperty(value="是否HEX", required=true) + private Integer isHexbin; + @ApiModelProperty(value="是否有效", required=true) + private int isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + @ApiModelProperty(value="版本序列号", required=true) + private Long procSeq; + + @ApiModelProperty(value = "本地更新时间 ", required = true) + private Date lastUpdate; + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + @JsonIgnore + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + /** + * @return regionId + */ + public Long getRegionId() { + return regionId; + } + /** + * @param regionId 要设置的 regionId + */ + public void setRegionId(Long regionId) { + this.regionId = regionId; + } + /** + * @return groupId + */ + public Long getGroupId() { + return groupId; + } + /** + * @param groupId 要设置的 groupId + */ + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + + /** + * @return district + */ + public String getDistrict() { + return district; + } + /** + * @param district 要设置的 district + */ + public void setDistrict(String district) { + this.district = district; + } + /** + * @return keywords + */ + public String getKeywords() { + return keywords; + } + /** + * @param keywords 要设置的 keywords + */ + public void setKeywords(String keywords) { + this.keywords = keywords; + } + /** + * @return exprType + */ + public Integer getExprType() { + return exprType; + } + /** + * @param exprType 要设置的 exprType + */ + public void setExprType(Integer exprType) { + this.exprType = exprType; + } + /** + * @return matchMethod + */ + public Integer getMatchMethod() { + return matchMethod; + } + /** + * @param matchMethod 要设置的 matchMethod + */ + public void setMatchMethod(Integer matchMethod) { + this.matchMethod = matchMethod; + } + /** + * @return isHexbin + */ + public Integer getIsHexbin() { + return isHexbin; + } + /** + * @param isHexbin 要设置的 isHexbin + */ + public void setIsHexbin(Integer isHexbin) { + this.isHexbin = isHexbin; + } + /** + * @return isValid + */ + public int getIsValid() { + return isValid; + } + /** + * @param isValid 要设置的 isValid + */ + public void setIsValid(int isValid) { + this.isValid = isValid; + } + /** + * @return opTime + */ + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public String getTableName() { + return tableName; + } + public void setTableName(String tableName) { + this.tableName = tableName; + } + + + + +} diff --git a/src/main/java/com/nis/domain/restful/StrRegionTest.java b/src/main/java/com/nis/domain/restful/StrRegionTest.java new file mode 100644 index 0000000..bd17310 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/StrRegionTest.java @@ -0,0 +1,25 @@ +/** +* @Title: IpRegion.java +* @Package com.nis.domain.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月29日 下午10:36:06 +* @version V1.0 +*/ +package com.nis.domain.restful; + +/** + * @ClassName: IpRegion + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (darnell) + * @date 2016年8月29日 下午10:36:06 + * @version V1.0 + */ +public class StrRegionTest extends StrRegion { + + /** + * + */ + private static final long serialVersionUID = -3066709964209755299L; + +} diff --git a/src/main/java/com/nis/domain/restful/SystemFunStatus.java b/src/main/java/com/nis/domain/restful/SystemFunStatus.java new file mode 100644 index 0000000..c7d7c57 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/SystemFunStatus.java @@ -0,0 +1,96 @@ +package com.nis.domain.restful; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class SystemFunStatus extends BaseEntity { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 3916377519679733752L; + + + @ApiModelProperty(value="配置ID", required=true) + private Long id; + @ApiModelProperty(value="系统功能", required=true) + private Long function; + @ApiModelProperty(value="回传数据类型", required=true) + private Long backData; + @ApiModelProperty(value="生效范围", required=true) + private String effectiveRange; + @ApiModelProperty(value="生效系统", required=true) + private Integer activeSys; + @ApiModelProperty(value="有效标志", required=true) + private Integer isValid; + @ApiModelProperty(value="操作时间", required=true) + private Date opTime; + + @ApiModelProperty(value="版本序列号") + private Long procSeq; + + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + @JsonIgnore + public Long getProcSeq() { + return procSeq; + } + public void setProcSeq(Long procSeq) { + this.procSeq = procSeq; + } + + public Long getFunction() { + return function; + } + public void setFunction(Long function) { + this.function = function; + } + + public Long getBackData() { + return backData; + } + public void setBackData(Long backData) { + this.backData = backData; + } + + public String getEffectiveRange() { + return effectiveRange; + } + public void setEffectiveRange(String effectiveRange) { + this.effectiveRange = effectiveRange; + } + + public Integer getActiveSys() { + return activeSys; + } + public void setActiveSys(Integer activeSys) { + this.activeSys = activeSys; + } + + public Integer getIsValid() { + return isValid; + } + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + @JsonSerialize(using=JsonDateSerializer.class) + public Date getOpTime() { + return opTime; + } + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + +} diff --git a/src/main/java/com/nis/domain/restful/SystemFunStatusSource.java b/src/main/java/com/nis/domain/restful/SystemFunStatusSource.java new file mode 100644 index 0000000..dc91d56 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/SystemFunStatusSource.java @@ -0,0 +1,35 @@ +package com.nis.domain.restful; + +import java.util.List; + +/** + * @ClassName: SystemFunStatusSource.java + * @Description: TODO + * @author (zbc) + * @date 2016年11月10日 上午09:47:00 + * @version V1.0 + */ +public class SystemFunStatusSource extends ConfigCommonSource { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = -8598830667489468219L; + private static final String DEFAULT_VERSION = "1.0"; + + private List systemFunStatusList; + + + public SystemFunStatusSource() { + super(); + super.version = DEFAULT_VERSION; + } + + + public List getSystemFunStatusList() { + return systemFunStatusList; + } + public void setSystemFunStatusList(List systemFunStatusList) { + this.systemFunStatusList = systemFunStatusList; + } +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkDmbCk.java b/src/main/java/com/nis/domain/restful/jk/JkDmbCk.java new file mode 100644 index 0000000..8d6e958 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkDmbCk.java @@ -0,0 +1,149 @@ +package com.nis.domain.restful.jk; + +import org.apache.ibatis.type.Alias; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.BaseEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * DmbCk entity. @author MyEclipse Persistence Tools + */ +@Alias("jkDmbck") +public class JkDmbCk extends BaseEntity{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -5491965286339219052L; + // Fields + private Long gId; + @ApiModelProperty(value="国际出口ID", required=true) + private Long gjCkId; + @ApiModelProperty(value="是否生效", required=true) + private Long sfSx; +// @ApiModelProperty(value="生效范围", required=true) + private String sxFw; + @ApiModelProperty(value="出口名称", required=true) + private String ckMc; + @ApiModelProperty(value="出口位置", required=true) + private String ckWz; +// @ApiModelProperty(value="通讯方法", required=false) +// private String ckTxff; +// @ApiModelProperty(value="备注", required=false) +// private String ckBz; +// @ApiModelProperty(value="预留", required=false) +// private String yl; +// @ApiModelProperty(value="预留1", required=false) +// private Long yl1; +// @ApiModelProperty(value="预留2", required=false) +// private Long yl2; +// @ApiModelProperty(value="预留3", required=false) +// private String yl3; +// @ApiModelProperty(value="预留4", required=false) +// private String yl4; +// @ApiModelProperty(value="预留5", required=false) +// private String yl5; +// @ApiModelProperty(value="国际出口编号", required=true) +// private Long ckNo; + @ApiModelProperty(value="国际出口编号扩容", required=false) + private String ckNoRaw; + @ApiModelProperty(value="运营商类型", required=true) + private Long isp; + @ApiModelProperty(value="出口地点", required=true) + private Long dd; + + // Constructors + + /** default constructor */ + public JkDmbCk() { + } + + + + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#getId() + */ + @Override + @JsonIgnore + public Long getId() { + // TODO Auto-generated method stub + return super.getId(); + } + + public Long getGjCkId() { + return this.gjCkId; + } + + public void setGjCkId(Long gjCkId) { + this.gjCkId = gjCkId; + } + @JsonIgnore + public Long getGId() { + return this.gId; + } + + public void setGId(Long gId) { + this.gId = gId; + } + + public Long getSfSx() { + return this.sfSx; + } + + public void setSfSx(Long sfSx) { + this.sfSx = sfSx; + } + @JsonIgnore + public String getSxFw() { + return this.sxFw; + } + + public void setSxFw(String sxFw) { + this.sxFw = sxFw; + } + + public String getCkMc() { + return this.ckMc; + } + + public void setCkMc(String ckMc) { + this.ckMc = ckMc; + } + + public String getCkWz() { + return this.ckWz; + } + + public void setCkWz(String ckWz) { + this.ckWz = ckWz; + } + + public String getCkNoRaw() { + return this.ckNoRaw; + } + + public void setCkNoRaw(String ckNoRaw) { + this.ckNoRaw = ckNoRaw; + } + + public Long getIsp() { + return this.isp; + } + + public void setIsp(Long isp) { + this.isp = isp; + } + + public Long getDd() { + return this.dd; + } + + public void setDd(Long dd) { + this.dd = dd; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/jk/JkDmbCkSource.java b/src/main/java/com/nis/domain/restful/jk/JkDmbCkSource.java new file mode 100644 index 0000000..ff3ec56 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkDmbCkSource.java @@ -0,0 +1,125 @@ +/** + *@Title: DmbCkSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful.jk; + +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.type.Alias; + +import com.nis.domain.restful.ConfigCommonSource; + +/** + * @ClassName: DmbCkSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +@Alias("jkDmbCkSource") +public class JkDmbCkSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List dmbCkList; + + + /** + * 创建一个新的实例 DmbCkSource. + * + */ + public JkDmbCkSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public JkDmbCkSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * dmbCkList + * @return dmbCkList + */ + + public List getDmbCkList() { + return dmbCkList; + } + /** + * @param dmbCkList the dmbCkList to set + */ + public void setDmbCkList(List dmbCkList) { + this.dmbCkList = dmbCkList; + } +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkFdZb.java b/src/main/java/com/nis/domain/restful/jk/JkFdZb.java new file mode 100644 index 0000000..4785160 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFdZb.java @@ -0,0 +1,208 @@ +package com.nis.domain.restful.jk; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * JkFdZb entity. + */ + +public class JkFdZb extends BaseEntity{ + + /** + * + */ + private static final Long serialVersionUID = 6166248976615344964L; + // Fields + @ApiModelProperty(value="全局编号", required=true) + private Long gId; + @ApiModelProperty(value="总表编号", required=true) + private Long zbId; + @ApiModelProperty(value="封堵方式", required=true) + private Long fdFs; + @ApiModelProperty(value="是否封堵", required=true) + private Long sfFd; + @ApiModelProperty(value="IP地址", required=true) + private String jkIp; + @ApiModelProperty(value="掩码", required=true) + private Long jkYm; + @ApiModelProperty(value="生效运营商", required=true) + private String ispRaw; + @ApiModelProperty(value="生效范围", required=true) + private String sxFw; + @ApiModelProperty(value="最后修改时间", required=true) + private Date lastUpdate; + /*@ApiModelProperty(value="IP地址类型", required=true) + private Integer addrType;*/ +// @ApiModelProperty(value="网站名称", required=true) +// private String jkWzMc; +// @ApiModelProperty(value="域名", required=true) +// private String jkDns; +// @ApiModelProperty(value="有害分类", required=true) +// private Long jkFl; +// @ApiModelProperty(value="有害性质", required=true) +// private Long jkXz; +// @ApiModelProperty(value="网站语言", required=true) +// private Long jkYy; +// @ApiModelProperty(value="通知单位", required=true) +// private String jkTzdw; +// @ApiModelProperty(value="来文函号", required=true) +// private String lwhh; +// @ApiModelProperty(value="预审员", required=true) +// private Long czyId; +// @ApiModelProperty(value="预审时间", required=true) +// private Date jkSj1; +// @ApiModelProperty(value="审核员", required=true) +// private Long jkShy; +// @ApiModelProperty(value="审核时间", required=true) +// private Date jkSj2; +// @ApiModelProperty(value="审批单号", required=true) +// private String spd; +// @ApiModelProperty(value="控管操作员", required=true) +// private Long kgczyid; +// @ApiModelProperty(value="控管操作时间", required=true) +// private Date kgczysj; +// @ApiModelProperty(value="用户组ID", required=true) +// private Long groupid; +// @ApiModelProperty(value="任务", required=true) +// private String rw; +// @ApiModelProperty(value="备注信息", required=true) +// private String jkBz; +// @ApiModelProperty(value="首次封堵时间", required=true) +// private String yl; +// @ApiModelProperty(value="有害网址配置ID", required=true) +// private Long yhwzId; +// @ApiModelProperty(value="截止日期", required=true) +// private Date yxrq; +// @ApiModelProperty(value="登记人", required=true) +// private Long djyid; +// @ApiModelProperty(value="登记时间 ", required=true) +// private Date djsj; +// @ApiModelProperty(value="复核人", required=true) +// private Long fhyid; +// @ApiModelProperty(value="复核时间", required=true) +// private Date fhsj; +// @ApiModelProperty(value="有害网址预审员", required=true) +// private Long yhwzysy; +// @ApiModelProperty(value="有害网址预审时间 ", required=true) +// private Date yhwzyssj; +// @ApiModelProperty(value="有害网址审核员", required=true) +// private Long yhwzshy; +// @ApiModelProperty(value="有害网址审核时间 ", required=true) +// private Date yhwzshsj; +// @ApiModelProperty(value="国际出口ID", required=true) +// private Long ipzyYsy; +// @ApiModelProperty(value="预审时间", required=true) +// private Date ipzyYssj; +// @ApiModelProperty(value="审核员", required=true) +// private Long ipzyShy; +// @ApiModelProperty(value="审核时间", required=true) +// private Date ipzyShsj; +// @ApiModelProperty(value="整型IP地址", required=true) +// private Long ipNum; +// @ApiModelProperty(value="生效运营商范围", required=true) +// private Long isp; +// @ApiModelProperty(value="预留1", required=true) +// private Long yl1; +// @ApiModelProperty(value="预留2", required=true) +// private Long yl2; +// @ApiModelProperty(value="预留3", required=true) +// private String yl3; +// @ApiModelProperty(value="预留4", required=true) +// private String yl4; +// @ApiModelProperty(value="预留5", required=true) +// private String yl5; + + public Long getGId() { + return gId; + } + @JsonIgnore + public void setGId(Long gId) { + this.gId = gId; + } + // Property accessors + + public Long getZbId() { + return this.zbId; + } + + public void setZbId(Long zbId) { + this.zbId = zbId; + } + + public Long getFdFs() { + return this.fdFs; + } + + public void setFdFs(Long fdFs) { + this.fdFs = fdFs; + } + + public Long getSfFd() { + return this.sfFd; + } + + public void setSfFd(Long sfFd) { + this.sfFd = sfFd; + } + + /*public Integer getAddrType() { + return addrType; + } + + public void setAddrType(Integer addrType) { + this.addrType = addrType; + } + */ + public String getJkIp() { + return this.jkIp; + } + + public void setJkIp(String jkIp) { + this.jkIp = jkIp; + } + + public Long getJkYm() { + return this.jkYm; + } + + public void setJkYm(Long jkYm) { + this.jkYm = jkYm; + } + + public String getSxFw() { + return this.sxFw; + } + + public void setSxFw(String sxFw) { + this.sxFw = sxFw; + } + + public String getIspRaw() { + return ispRaw; + } + public void setIspRaw(String ispRaw) { + this.ispRaw = ispRaw; + } + @JsonIgnore + /*@JsonSerialize(using=JsonDateSerializer.class)*/ + public Date getLastUpdate() { + return lastUpdate; + } + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } + + @JsonIgnore + @Override + public Long getId() { + // TODO Auto-generated method stub + return super.getId(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/jk/JkFdZbSource.java b/src/main/java/com/nis/domain/restful/jk/JkFdZbSource.java new file mode 100644 index 0000000..803d4ee --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFdZbSource.java @@ -0,0 +1,122 @@ +/** + *@Title: JkFdZbSource.java + *@Package com.nis.domain.restful.gk + *@Description TODO + *@author ddm + *@date 2016年10月20日 上午9:13:04 + *@version V1.0 + */ +package com.nis.domain.restful.jk; + +import java.util.Date; +import java.util.List; + +import com.nis.domain.restful.ConfigCommonSource; + +/** + * @ClassName: JkFdZbSource.java + * @Description: TODO + * @author (wx) +*@date 2016年10月20日 上午9:13:04 + * @version V1.0 + */ +public class JkFdZbSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + private static final long serialVersionUID = 78331728636991746L; + + + private static final String DEFAULT_VERSION = "1.0"; + private List jkFdZbList; + + + /** + * 创建一个新的实例 JkFdZbSource. + * + */ + public JkFdZbSource() { + super(); + this.version=DEFAULT_VERSION; + } + public JkFdZbSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * jkFdZbList + * @return jkFdZbList + */ + + public List getJkFdZbList() { + return jkFdZbList; + } + /** + * @param jkFdZbList the jkFdZbList to set + */ + public void setJkFdZbList(List jkFdZbList) { + this.jkFdZbList = jkFdZbList; + } +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkFfjInfo.java b/src/main/java/com/nis/domain/restful/jk/JkFfjInfo.java new file mode 100644 index 0000000..d7c9562 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFfjInfo.java @@ -0,0 +1,99 @@ +package com.nis.domain.restful.jk; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.BaseEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: JkFfj.java + * @Description: TODO + * @author (zbc) + * @date 2016年10月19日 下午20:04:16 + * @version V1.0 + */ +public class JkFfjInfo extends BaseEntity { + + /** + * @Fields serialVersionUID + */ + private static final long serialVersionUID = -3343607423394648914L; + + @ApiModelProperty(value="全局编号", required=true) + protected Long gId; + @ApiModelProperty(value="分发机编号", required=true) + protected Long ffjId; + @ApiModelProperty(value="分发机名称", required=true) + protected String ffjMc; + @ApiModelProperty(value="分发机IP", required=true) + protected String ffjIp; + @ApiModelProperty(value="分发机角色", required=true) + protected Long ffjJs; + @ApiModelProperty(value="控管范围", required=true) + protected Long kgFw; + @ApiModelProperty(value="是否生效", required=true) + protected Long sfSx; + @ApiModelProperty(value="生效范围", required=true) + protected String sxFw; + + + public Long getgId() { + return gId; + } + @JsonIgnore + public void setgId(Long gId) { + this.gId = gId; + } + public Long getFfjId() { + return ffjId; + } + public void setFfjId(Long ffjId) { + this.ffjId = ffjId; + } + public String getFfjMc() { + return ffjMc; + } + public void setFfjMc(String ffjMc) { + this.ffjMc = ffjMc; + } + public String getFfjIp() { + return ffjIp; + } + public void setFfjIp(String ffjIp) { + this.ffjIp = ffjIp; + } + public Long getFfjJs() { + return ffjJs; + } + public void setFfjJs(Long ffjJs) { + this.ffjJs = ffjJs; + } + public Long getKgFw() { + return kgFw; + } + public void setKgFw(Long kgFw) { + this.kgFw = kgFw; + } + public Long getSfSx() { + return sfSx; + } + public void setSfSx(Long sfSx) { + this.sfSx = sfSx; + } + @JsonIgnore + public String getSxFw() { + return sxFw; + } + public void setSxFw(String sxFw) { + sxFw="0"; + this.sxFw = sxFw; + } + + + @JsonIgnore + @Override + public Long getId() { + return super.getId(); + } + +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkFfjInfoSource.java b/src/main/java/com/nis/domain/restful/jk/JkFfjInfoSource.java new file mode 100644 index 0000000..8c7fb80 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFfjInfoSource.java @@ -0,0 +1,51 @@ +/** + *@Title: JkFfjInfoSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + * @date 2016年10月19日 下午20:04:16 + *@version 版本号 + */ +package com.nis.domain.restful.jk; + +import java.util.List; + +import com.nis.domain.restful.ConfigCommonSource; + +/** + * @ClassName: JkFfjInfoSource.java + * @Description: TODO + * @author (zbc) + * @date 2016年10月19日 下午20:04:16 + * @version V1.0 + */ +public class JkFfjInfoSource extends ConfigCommonSource { + + /** + * @Fields serialVersionUID + */ + private static final long serialVersionUID = 8841765964336072965L; + + + private static final String DEFAULT_VERSION = "1.0"; + private List jkffjList; + + public JkFfjInfoSource() { + super(); + super.version=DEFAULT_VERSION; + } + + public JkFfjInfoSource(String version) { + super(); + super.version = version; + } + + + public List getJkffjList() { + return jkffjList; + } + + public void setJkffjList(List jkffjList) { + this.jkffjList = jkffjList; + } +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkFwqInfo.java b/src/main/java/com/nis/domain/restful/jk/JkFwqInfo.java new file mode 100644 index 0000000..041150d --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFwqInfo.java @@ -0,0 +1,78 @@ +package com.nis.domain.restful.jk; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nis.domain.BaseEntity; +import com.nis.util.JsonDateSerializer; +import com.wordnik.swagger.annotations.ApiModelProperty; + +public class JkFwqInfo extends BaseEntity { + + /** + * @Fields serialVersionUID + */ + private static final long serialVersionUID = 2875730011488077179L; + + @ApiModelProperty(value="全局编号", required=true) + protected Long gId; + @ApiModelProperty(value="服务器编号", required=true) + protected Long fwqId; + @ApiModelProperty(value="服务器名称", required=true) + protected String fwqMc; + @ApiModelProperty(value="服务器IP地址", required=true) + protected String fwqIp; + @ApiModelProperty(value="是否生效", required=true) + protected Long sfSx; + @ApiModelProperty(value="生效范围", required=true) + protected String sxFw; + + + public Long getgId() { + return gId; + } + @JsonIgnore + public void setgId(Long gId) { + this.gId = gId; + } + public Long getFwqId() { + return fwqId; + } + public void setFwqId(Long fwqId) { + this.fwqId = fwqId; + } + public String getFwqMc() { + return fwqMc; + } + public void setFwqMc(String fwqMc) { + this.fwqMc = fwqMc; + } + public String getFwqIp() { + return fwqIp; + } + public void setFwqIp(String fwqIp) { + this.fwqIp = fwqIp; + } + public Long getSfSx() { + return sfSx; + } + public void setSfSx(Long sfSx) { + this.sfSx = sfSx; + } + @JsonIgnore + public String getSxFw() { + return sxFw; + } + public void setSxFw(String sxFw) { + this.sxFw = sxFw; + } + + + @JsonIgnore + @Override + public Long getId() { + return super.getId(); + } + +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkFwqInfoSource.java b/src/main/java/com/nis/domain/restful/jk/JkFwqInfoSource.java new file mode 100644 index 0000000..45aafb4 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkFwqInfoSource.java @@ -0,0 +1,52 @@ +/** + *@Title: JkFwqInfoSource.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + * @date 2016年10月19日 下午20:04:16 + *@version 版本号 + */ +package com.nis.domain.restful.jk; + +import java.util.List; + +import com.nis.domain.restful.ConfigCommonSource; + +/** + * @ClassName: JkFwqInfoSource.java + * @Description: TODO + * @author (zbc) + * @date 2016年10月19日 下午20:04:16 + * @version V1.0 + */ +public class JkFwqInfoSource extends ConfigCommonSource { + + /** + * @Fields serialVersionUID + */ + private static final long serialVersionUID = -2670423354555878411L; + + private static final String DEFAULT_VERSION = "1.0"; + private List jkFwqList; + + + public JkFwqInfoSource() { + super(); + super.version = DEFAULT_VERSION; + } + + public JkFwqInfoSource(String version) { + super(); + super.version = version; + } + + + + public List getJkFwqInfoList() { + return jkFwqList; + } + + public void setJkFwqList(List jkFwqList) { + this.jkFwqList = jkFwqList; + } +} diff --git a/src/main/java/com/nis/domain/restful/jk/JkLyq.java b/src/main/java/com/nis/domain/restful/jk/JkLyq.java new file mode 100644 index 0000000..faa4b52 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkLyq.java @@ -0,0 +1,136 @@ +package com.nis.domain.restful.jk; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nis.domain.BaseEntity; +import com.wordnik.swagger.annotations.ApiModelProperty; + +/** + * JkLyq entity. @author MyEclipse Persistence Tools + */ + +public class JkLyq extends BaseEntity { + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = -4644455398744485045L; + // Fields +// @ApiModelProperty(value="全局编号", required=true) + private Long gId; + @ApiModelProperty(value="路由器编号", required=true) + private Long lyqId; + @ApiModelProperty(value="路由器名称", required=true) + private String lyqMc; + @ApiModelProperty(value="控管服务器编号", required=true) + private Long fwqId; + @ApiModelProperty(value="虚拟主机编号", required=true) + private Long kgfs; + @ApiModelProperty(value="国际出口编号", required=true) + private Long gjCkId; + @ApiModelProperty(value="是否生效", required=true) + private Long sfSx; + @ApiModelProperty(value="生效范围", required=true) + private String sxFw; +// @ApiModelProperty(value="操作员", required=true) +// private Long czyId; +// @ApiModelProperty(value="操作时间", required=true) +// private Date czSj; +// @ApiModelProperty(value="备注", required=false) +// private String bz; +// @ApiModelProperty(value="预留", required=false) +// private String yl; + @ApiModelProperty(value="监听的端口", required=false) + private Long fwqDk; + + // Constructors + + /** default constructor */ + public JkLyq() { + } + + // Property accessors + /* (non-Javadoc) + * @see com.nis.domain.BaseEntity#getId() + */ + @Override + @JsonIgnore + public Long getId() { + // TODO Auto-generated method stub + return super.getId(); + } + public Long getLyqId() { + return this.lyqId; + } + + public void setLyqId(Long lyqId) { + this.lyqId = lyqId; + } + @JsonIgnore + public Long getGId() { + return this.gId; + } + + public void setGId(Long gId) { + this.gId = gId; + } + + public String getLyqMc() { + return this.lyqMc; + } + + public void setLyqMc(String lyqMc) { + this.lyqMc = lyqMc; + } + + public Long getFwqId() { + return this.fwqId; + } + + public void setFwqId(Long fwqId) { + this.fwqId = fwqId; + } + + public Long getKgfs() { + return this.kgfs; + } + + public void setKgfs(Long kgfs) { + this.kgfs = kgfs; + } + + public Long getGjCkId() { + return this.gjCkId; + } + + public void setGjCkId(Long gjCkId) { + this.gjCkId = gjCkId; + } + + public Long getSfSx() { + return this.sfSx; + } + + public void setSfSx(Long sfSx) { + this.sfSx = sfSx; + } + @JsonIgnore + public String getSxFw() { + return this.sxFw; + } + + public void setSxFw(String sxFw) { + this.sxFw = sxFw; + } + + public Long getFwqDk() { + return this.fwqDk; + } + + public void setFwqDk(Long fwqDk) { + this.fwqDk = fwqDk; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nis/domain/restful/jk/JkLyqSource.java b/src/main/java/com/nis/domain/restful/jk/JkLyqSource.java new file mode 100644 index 0000000..6a5e180 --- /dev/null +++ b/src/main/java/com/nis/domain/restful/jk/JkLyqSource.java @@ -0,0 +1,122 @@ +/** + *@Title: JkLyqSource.java + *@Package com.nis.domain.restful.jk + *@Description TODO + *@author dell + *@date 2016年9月9日 上午9:53:04 + *@version 版本号 + */ +package com.nis.domain.restful.jk; + +import java.util.Date; +import java.util.List; + +import com.nis.domain.restful.ConfigCommonSource; + +/** + * @ClassName: JkLyqSource.java + * @Description: TODO + * @author (wx) + * @date 2016年9月9日 上午9:53:04 + * @version V1.0 + */ +public class JkLyqSource extends ConfigCommonSource{ + + /** + * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) + * + * @since 1.0.0 + */ + + private static final long serialVersionUID = 262835095511967504L; + private static final String DEFAULT_VERSION = "1.0"; + private List jkLyqList; + + + /** + * 创建一个新的实例 DmbCkSource. + * + */ + public JkLyqSource() { + super(); + // TODO Auto-generated constructor stub + this.version=DEFAULT_VERSION; + } + public JkLyqSource(String version) { + this.version=version; + } + + /** + * @return version + */ + public String getVersion() { + return version; + } + + /** + * @param version 要设置的 version + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * @return operator + */ + public String getOperator() { + return operator; + } + + /** + * @param operator 要设置的 operator + */ + public void setOperator(String operator) { + this.operator = operator; + } + + + /** + * @return opTime + */ + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime 要设置的 opTime + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + + + /** + * @return opAction + */ + public Integer getOpAction() { + return opAction; + } + + /** + * @param opAction 要设置的 opAction + */ + public void setOpAction(Integer opAction) { + this.opAction = opAction; + } + + /** + * jkLyqList + * @return jkLyqList + */ + + public List getJkLyqList() { + return jkLyqList; + } + /** + * @param jkLyqList the jkLyqList to set + */ + public void setJkLyqList(List jkLyqList) { + this.jkLyqList = jkLyqList; + } +} diff --git a/src/main/java/com/nis/exceptions/ServiceException.java b/src/main/java/com/nis/exceptions/ServiceException.java new file mode 100644 index 0000000..cb55949 --- /dev/null +++ b/src/main/java/com/nis/exceptions/ServiceException.java @@ -0,0 +1,29 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.exceptions; + +/** + * Service层公用的Exception, 从由Spring管理事务的函数中抛出时会触发事务回滚. + * @author ThinkGem + */ +public class ServiceException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public ServiceException() { + super(); + } + + public ServiceException(String message) { + super(message); + } + + public ServiceException(Throwable cause) { + super(cause); + } + + public ServiceException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/nis/filter/CORSFilter.java b/src/main/java/com/nis/filter/CORSFilter.java new file mode 100644 index 0000000..4db00e8 --- /dev/null +++ b/src/main/java/com/nis/filter/CORSFilter.java @@ -0,0 +1,54 @@ +package com.nis.filter; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.nis.filter.wrapper.RestHttpServletRequestWrapper; +import com.nis.util.Constants; + +/** +* @ClassName: CORSFilter +* @Description: TODO(解决跨域问题的过滤器) +* @author (DDM) +* @date 2016年9月20日 上午9:12:50 +* @version V1.0 +*/ +@WebFilter +public class CORSFilter implements Filter { + + @Override + public void destroy() { + // TODO Auto-generated method stub + + } + + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) + throws IOException, ServletException { + //将请求封装起来,使得body中的内容可以多次获取 + req=new RestHttpServletRequestWrapper((HttpServletRequest)req); + HttpServletResponse response=(HttpServletResponse) res; + response.setHeader("Access-Control-Allow-Origin",Constants.TARGET_URL); + response.setHeader("Access-Control-Allow-Methods","POST,GET,PUT,OPT,IONS,DELETE"); + response.setHeader("Access-Control-Max-Age",Constants.ACCESS_CONTROL_MAX_AGE); + response.setHeader("Access-Control-Allow-Headers","*"); + chain.doFilter(req, res); + } + + @Override + public void init(FilterConfig arg0) throws ServletException { + // TODO Auto-generated method stub + + } + + +} diff --git a/src/main/java/com/nis/filter/wrapper/RestHttpServletRequestWrapper.java b/src/main/java/com/nis/filter/wrapper/RestHttpServletRequestWrapper.java new file mode 100644 index 0000000..87d7303 --- /dev/null +++ b/src/main/java/com/nis/filter/wrapper/RestHttpServletRequestWrapper.java @@ -0,0 +1,87 @@ +/** + *@Title: HttpServletRequestWrapper.java + *@Package com.nis.filter.wrapper + *@Description TODO + *@author dell + *@date 2016年11月15日 下午12:36:14 + *@version 版本号 + */ +package com.nis.filter.wrapper; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.util.StreamUtils; + + +/** + * @ClassName: HttpServletRequestWrapper.java + * @Description: 主要目的是将request的body取出来,然后缓存起来。这样可以实现request的body多次取 + * @author (wx) + * @date 2016年11月15日 下午12:36:14 + * @version V1.0 + */ +public class RestHttpServletRequestWrapper extends javax.servlet.http.HttpServletRequestWrapper { + private final byte[] body; + /** + * 创建一个新的实例 RestHttpServletRequestWrapper. + * + * @param request + * @throws IOException + */ + public RestHttpServletRequestWrapper(HttpServletRequest request) throws IOException { + super(request); + // TODO Auto-generated constructor stub + body=StreamUtils.copyToByteArray(request.getInputStream()); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequestWrapper#getInputStream() + */ + @Override + public ServletInputStream getInputStream() throws IOException { + // TODO Auto-generated method stub + final ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(body); + return new ServletInputStream(){ + + @Override + public boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isReady() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setReadListener(ReadListener arg0) { + // TODO Auto-generated method stub + + } + + @Override + public int read() throws IOException { + // TODO Auto-generated method stub + return byteArrayInputStream.read(); + } + + }; + } + /* (non-Javadoc) + * @see javax.servlet.ServletRequestWrapper#getReader() + */ + @Override + public BufferedReader getReader() throws IOException { + // TODO Auto-generated method stub + return new BufferedReader(new InputStreamReader(getInputStream())); + } +} diff --git a/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java new file mode 100644 index 0000000..0bff691 --- /dev/null +++ b/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java @@ -0,0 +1,40 @@ +package com.nis.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.datasource.CustomerContextHolder; + +public class DataSourceBInterceptor implements HandlerInterceptor { + Logger logger = Logger.getLogger(DataSourceBInterceptor.class); + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + logger.info("开启数据源配置操作库---"); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);//开启数据源B + + return true; + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + logger.info("postHandle---"); + } + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + + CustomerContextHolder.clearCustomerType(); + logger.info("释放数据源配置操作库---"); + } + + +} diff --git a/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java new file mode 100644 index 0000000..a05fa13 --- /dev/null +++ b/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java @@ -0,0 +1,60 @@ +package com.nis.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.datasource.CustomerContextHolder; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.Constants; + +public class DataSourceCInterceptor implements HandlerInterceptor { + Logger logger = Logger.getLogger(DataSourceCInterceptor.class); + String searchActiveSys=""; + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + searchActiveSys=request.getParameter("searchActiveSys"); + if(searchActiveSys == null + || !(Constants.ACTIVESYS_A.equals(searchActiveSys) + || Constants.ACTIVESYS_C.equals(searchActiveSys)) + ) searchActiveSys=Constants.ACTIVESYS_B; + if(Constants.ACTIVESYS_A.equals(searchActiveSys)){ + logger.info("开启数据源日志A操作库---"+System.currentTimeMillis()); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_F);//开启数据源F + }else if(Constants.ACTIVESYS_C.equals(searchActiveSys)){ + logger.info("开启数据源日志C操作库---"+System.currentTimeMillis()); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_G);//开启数据源F + }else{ + logger.info("开启数据源日志B操作库---"+System.currentTimeMillis()); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_C);//开启数据源C + } + logger.info("日志数据源开启成功---"+System.currentTimeMillis()); + return true; + } + + @Override + public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) + throws Exception { + logger.info("postHandle---"); + + } + + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + CustomerContextHolder.clearCustomerType(); + logger.info("释放数据源日志操作库---"); + } + + + + +} diff --git a/src/main/java/com/nis/interceptor/DataSourceDInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceDInterceptor.java new file mode 100644 index 0000000..9b5315b --- /dev/null +++ b/src/main/java/com/nis/interceptor/DataSourceDInterceptor.java @@ -0,0 +1,43 @@ +package com.nis.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.datasource.CustomerContextHolder; + +public class DataSourceDInterceptor implements HandlerInterceptor { + Logger logger = Logger.getLogger(DataSourceDInterceptor.class); + + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + logger.info("开启测试配置库---"); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_D);//开启数据源C + return true; + } + + @Override + public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) + throws Exception { + logger.info("postHandle---"); + + } + + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + CustomerContextHolder.clearCustomerType(); + logger.info("释放测试配置库---"); + } + + + + +} diff --git a/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java new file mode 100644 index 0000000..f2db78d --- /dev/null +++ b/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java @@ -0,0 +1,38 @@ +package com.nis.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.datasource.CustomerContextHolder; + +public class DataSourceEInterceptor implements HandlerInterceptor { + Logger logger = Logger.getLogger(DataSourceEInterceptor.class); + + @Override + public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) + throws Exception { + CustomerContextHolder.clearCustomerType(); + logger.info("释放数据静控操作库---"); + + } + + @Override + public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) + throws Exception { + logger.info("postHandle---"); + + } + + @Override + public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { + logger.info("开启数据源静控操作库---"); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_E);//开启数据源C + + return true; + } + +} diff --git a/src/main/java/com/nis/interceptor/LogInterceptor.java b/src/main/java/com/nis/interceptor/LogInterceptor.java new file mode 100644 index 0000000..c490c83 --- /dev/null +++ b/src/main/java/com/nis/interceptor/LogInterceptor.java @@ -0,0 +1,74 @@ +package com.nis.interceptor; + +import java.text.SimpleDateFormat; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.core.NamedThreadLocal; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.util.DateUtils; +import com.nis.util.LogUtils; +import com.nis.web.service.BaseService; + +public class LogInterceptor extends BaseService implements HandlerInterceptor{ + + private static final ThreadLocal timeThreadLocal = + new NamedThreadLocal("ThreadLocal StartTime"); + + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + long beginTime = System.currentTimeMillis();//1、开始时间 + timeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见) + if (logger.isDebugEnabled()){ + logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") + .format(beginTime), request.getRequestURI()); + } + + + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + if (modelAndView != null){ + logger.info("ViewName: " + modelAndView.getViewName()); + } + + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + long beginTime = timeThreadLocal.get();//得到线程绑定的局部变量(开始时间) + long endTime = System.currentTimeMillis(); //2、结束时间 + + long consumerTime = endTime - beginTime; + + // 打印JVM信息。 + if (logger.isDebugEnabled()){ + + Object[] params = new Object[]{ + new SimpleDateFormat("hh:mm:ss.SSS").format(endTime) + , DateUtils.formatDateTime(consumerTime) + ,request.getRequestURI() + ,Runtime.getRuntime().maxMemory()/1024/1024 + ,Runtime.getRuntime().totalMemory()/1024/1024 + ,Runtime.getRuntime().freeMemory()/1024/1024 + ,(Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024}; + logger.debug("计时结束:{} 耗时:{} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m",params); + + } + + // 保存日志 + LogUtils.saveLog(request, handler, ex, null, consumerTime); + + + } + +} diff --git a/src/main/java/com/nis/interceptor/RestfulInterceptor.java b/src/main/java/com/nis/interceptor/RestfulInterceptor.java new file mode 100644 index 0000000..757f705 --- /dev/null +++ b/src/main/java/com/nis/interceptor/RestfulInterceptor.java @@ -0,0 +1,56 @@ +/** +* @Title: RestfulInterceptor.java +* @Package com.nis.interceptor +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月14日 下午1:55:50 +* @version V1.0 +*/ +package com.nis.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.web.service.BaseService; + +/** +* @ClassName: RestfulInterceptor +* @Description: TODO(Restful 服务的拦截器) +* @author (darnell) +* @date 2016年8月14日 下午1:55:50 +* @version V1.0 +*/ +public class RestfulInterceptor extends BaseService implements HandlerInterceptor { + + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + logger.info("---RestFul服务启动"); + return true; + } + + + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) + throws Exception { + logger.info(request.getRequestURI()); + if (modelAndView != null){ + logger.info("ViewName: " + modelAndView.getViewName()); + } + + } + + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + logger.info("---RestFul服务结束"); + + } + + +} diff --git a/src/main/java/com/nis/listener/SystemConfigListener.java b/src/main/java/com/nis/listener/SystemConfigListener.java new file mode 100644 index 0000000..fb93179 --- /dev/null +++ b/src/main/java/com/nis/listener/SystemConfigListener.java @@ -0,0 +1,60 @@ +package com.nis.listener; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletContextEvent; + +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import com.nis.datasource.CustomerContextHolder; +import com.nis.domain.restful.DataDictionaryValue; +import com.nis.web.service.restful.DataDictionaryService; + +/** + * 项目启动时加载数据字典 + * + * @author RenKaiGe-Office + * @Date:2016-11-03 + */ +public class SystemConfigListener extends ContextLoaderListener { + private DataDictionaryService dataDictionaryService; + private static WebApplicationContext webApplicationContext; + private static Map> dictionaryMap = new HashMap>(); + + @Override + public void contextInitialized(ServletContextEvent event) { + try { + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B); + webApplicationContext = WebApplicationContextUtils + .getRequiredWebApplicationContext(event.getServletContext()); + dataDictionaryService = (DataDictionaryService) webApplicationContext.getBean(DataDictionaryService.class); + loadDataDict(); + CustomerContextHolder.clearCustomerType(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void loadDataDict() { + dictionaryMap = dataDictionaryService.getAllDataDict(); + } + + public static List getDictValue(String key) { + return dictionaryMap.get(key); + } + + public static Map> getDictionaryMap() { + return dictionaryMap; + } + + public static void setDictionaryMap(Map> dictionaryMap) { + SystemConfigListener.dictionaryMap = dictionaryMap; + } + + + +} diff --git a/src/main/java/com/nis/persistence/dialect/ClusterDialect.java b/src/main/java/com/nis/persistence/dialect/ClusterDialect.java new file mode 100644 index 0000000..f55f69a --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/ClusterDialect.java @@ -0,0 +1,53 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Cluster方言的实现[神通数据库] + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class ClusterDialect implements Dialect { + + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), + Integer.toString(limit)); + } + + public boolean supportsLimit() { + return true; + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, String limitPlaceholder) { + StringBuilder stringBuilder = new StringBuilder(sql); + if(stringBuilder.indexOf("limit") == -1 && stringBuilder.indexOf("LIMIT") == -1 ){ + stringBuilder.append(" limit "); + stringBuilder.append(limitPlaceholder); + stringBuilder.append(" offset "); + stringBuilder.append(offsetPlaceholder); + } + System.out.println("cluster分页sql:"+stringBuilder.toString()); + return stringBuilder.toString(); + } + +} diff --git a/src/main/java/com/nis/persistence/dialect/DB2Dialect.java b/src/main/java/com/nis/persistence/dialect/DB2Dialect.java new file mode 100644 index 0000000..60b6f8d --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/DB2Dialect.java @@ -0,0 +1,88 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * DB2的分页数据库方言实现 + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class DB2Dialect implements Dialect { + @Override + public boolean supportsLimit() { + return true; + } + + private static String getRowNumber(String sql) { + StringBuilder rownumber = new StringBuilder(50) + .append("rownumber() over("); + + int orderByIndex = sql.toLowerCase().indexOf("order by"); + + if (orderByIndex > 0 && !hasDistinct(sql)) { + rownumber.append(sql.substring(orderByIndex)); + } + + rownumber.append(") as rownumber_,"); + + return rownumber.toString(); + } + + private static boolean hasDistinct(String sql) { + return sql.toLowerCase().contains("select distinct"); + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), Integer.toString(limit)); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, String limitPlaceholder) { + int startOfSelect = sql.toLowerCase().indexOf("select"); + + StringBuilder pagingSelect = new StringBuilder(sql.length() + 100) + .append(sql.substring(0, startOfSelect)) //add the comment + .append("select * from ( select ") //nest the main query in an outer select + .append(getRowNumber(sql)); //add the rownnumber bit into the outer query select list + + if (hasDistinct(sql)) { + pagingSelect.append(" row_.* from ( ") //add another (inner) nested select + .append(sql.substring(startOfSelect)) //add the main query + .append(" ) as row_"); //close off the inner nested select + } else { + pagingSelect.append(sql.substring(startOfSelect + 6)); //add the main query + } + + pagingSelect.append(" ) as temp_ where rownumber_ "); + + //add the restriction to the outer select + if (offset > 0) { +// int end = offset + limit; + String endString = offsetPlaceholder + "+" + limitPlaceholder; + pagingSelect.append("between ").append(offsetPlaceholder) + .append("+1 and ").append(endString); + } else { + pagingSelect.append("<= ").append(limitPlaceholder); + } + + return pagingSelect.toString(); + } +} diff --git a/src/main/java/com/nis/persistence/dialect/DerbyDialect.java b/src/main/java/com/nis/persistence/dialect/DerbyDialect.java new file mode 100644 index 0000000..d68c782 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/DerbyDialect.java @@ -0,0 +1,43 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class DerbyDialect implements Dialect { + @Override + public boolean supportsLimit() { + return false; + } + + @Override + public String getLimitString(String sql, int offset, int limit) { +// return getLimitString(sql,offset,Integer.toString(offset),limit,Integer.toString(limit)); + throw new UnsupportedOperationException("paged queries not supported"); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limit 分页每页显示纪录条数 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset,String offsetPlaceholder, int limit, String limitPlaceholder) { + throw new UnsupportedOperationException( "paged queries not supported" ); + } + +} diff --git a/src/main/java/com/nis/persistence/dialect/Dialect.java b/src/main/java/com/nis/persistence/dialect/Dialect.java new file mode 100644 index 0000000..8e04b03 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/Dialect.java @@ -0,0 +1,33 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + +/** + * 类似hibernate的Dialect,但只精简出分页部分 + * + * @author poplar.yfyang + * @version 1.0 2011-11-18 下午12:31 + * @since JDK 1.5 + */ +public interface Dialect { + + /** + * 数据库本身是否支持分页当前的分页查询方式 + * 如果数据库不支持的话,则不进行数据库分页 + * + * @return true:支持当前的分页查询方式 + */ + public boolean supportsLimit(); + + /** + * 将sql转换为分页SQL,分别调用分页sql + * + * @param sql SQL语句 + * @param offset 开始条数 + * @param limit 每页显示多少纪录条数 + * @return 分页查询的sql + */ + public String getLimitString(String sql, int offset, int limit); + +} diff --git a/src/main/java/com/nis/persistence/dialect/H2Dialect.java b/src/main/java/com/nis/persistence/dialect/H2Dialect.java new file mode 100644 index 0000000..f33585a --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/H2Dialect.java @@ -0,0 +1,44 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * A dialect compatible with the H2 database. + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class H2Dialect implements Dialect { + + public boolean supportsLimit() { + return true; + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limit 分页每页显示纪录条数 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + private String getLimitString(String sql, int offset, String offsetPlaceholder, int limit, String limitPlaceholder) { + return sql + ((offset > 0) ? " limit " + limitPlaceholder + " offset " + + offsetPlaceholder : " limit " + limitPlaceholder); + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), limit, Integer.toString(limit)); + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/persistence/dialect/HSQLDialect.java b/src/main/java/com/nis/persistence/dialect/HSQLDialect.java new file mode 100644 index 0000000..c3ff389 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/HSQLDialect.java @@ -0,0 +1,49 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Dialect for HSQLDB + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class HSQLDialect implements Dialect { + @Override + public boolean supportsLimit() { + return true; + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), + Integer.toString(limit)); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, String limitPlaceholder) { + boolean hasOffset = offset > 0; + return + new StringBuffer(sql.length() + 10) + .append(sql) + .insert(sql.toLowerCase().indexOf("select") + 6, hasOffset ? " limit " + offsetPlaceholder + " " + limitPlaceholder : " top " + limitPlaceholder) + .toString(); + } + +} diff --git a/src/main/java/com/nis/persistence/dialect/MySQLDialect.java b/src/main/java/com/nis/persistence/dialect/MySQLDialect.java new file mode 100644 index 0000000..4b882c6 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/MySQLDialect.java @@ -0,0 +1,52 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Mysql方言的实现 + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class MySQLDialect implements Dialect { + + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), + Integer.toString(limit)); + } + + public boolean supportsLimit() { + return true; + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, String limitPlaceholder) { + StringBuilder stringBuilder = new StringBuilder(sql); + stringBuilder.append(" limit "); + if (offset > 0) { + stringBuilder.append(offsetPlaceholder).append(",").append(limitPlaceholder); + } else { + stringBuilder.append(limitPlaceholder); + } + return stringBuilder.toString(); + } + +} diff --git a/src/main/java/com/nis/persistence/dialect/OracleDialect.java b/src/main/java/com/nis/persistence/dialect/OracleDialect.java new file mode 100644 index 0000000..4b0c490 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/OracleDialect.java @@ -0,0 +1,67 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Oracle的方言实现 + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class OracleDialect implements Dialect { + @Override + public boolean supportsLimit() { + return true; + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), Integer.toString(limit)); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, String limitPlaceholder) { + sql = sql.trim(); + boolean isForUpdate = false; + if (sql.toLowerCase().endsWith(" for update")) { + sql = sql.substring(0, sql.length() - 11); + isForUpdate = true; + } + StringBuilder pagingSelect = new StringBuilder(sql.length() + 100); + + if (offset > 0) { + pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( "); + } else { + pagingSelect.append("select * from ( "); + } + pagingSelect.append(sql); + if (offset > 0) { + String endString = offsetPlaceholder + "+" + limitPlaceholder; + pagingSelect.append(" ) row_ where rownum <= "+endString+") where rownum_ > ").append(offsetPlaceholder); + } else { + pagingSelect.append(" ) where rownum <= "+limitPlaceholder); + } + + if (isForUpdate) { + pagingSelect.append(" for update"); + } + + return pagingSelect.toString(); + } + +} diff --git a/src/main/java/com/nis/persistence/dialect/PostgreSQLDialect.java b/src/main/java/com/nis/persistence/dialect/PostgreSQLDialect.java new file mode 100644 index 0000000..1b9d277 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/PostgreSQLDialect.java @@ -0,0 +1,47 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Postgre Sql的方言实现 + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class PostgreSQLDialect implements Dialect { + + public boolean supportsLimit() { + return true; + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, Integer.toString(offset), + Integer.toString(limit)); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, + String offsetPlaceholder, String limitPlaceholder) { + StringBuilder pageSql = new StringBuilder().append(sql); + pageSql = offset <= 0 + ? pageSql.append(" limit ").append(limitPlaceholder) : + pageSql.append(" limit ").append(limitPlaceholder).append(" offset ").append(offsetPlaceholder); + return pageSql.toString(); + } +} diff --git a/src/main/java/com/nis/persistence/dialect/SQLServer2005Dialect.java b/src/main/java/com/nis/persistence/dialect/SQLServer2005Dialect.java new file mode 100644 index 0000000..7b0fcf5 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/SQLServer2005Dialect.java @@ -0,0 +1,94 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + +import org.apache.commons.lang3.StringUtils; + + +/** + * Sql 2005的方言实现 + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class SQLServer2005Dialect implements Dialect { + + @Override + public boolean supportsLimit() { + return true; + } + + @Override + public String getLimitString(String sql, int offset, int limit) { + return getLimitString(sql, offset, + limit, Integer.toString(limit)); + } + + /** + * Add a LIMIT clause to the given SQL SELECT + *

    + * The LIMIT SQL will look like: + *

    + * WITH query AS + * (SELECT TOP 100 percent ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __row_number__, * from table_name) + * SELECT * + * FROM query + * WHERE __row_number__ BETWEEN :offset and :lastRows + * ORDER BY __row_number__ + * + * @param querySqlString The SQL statement to base the limit query off of. + * @param offset Offset of the first row to be returned by the query (zero-based) + * @param limit Maximum number of rows to be returned by the query + * @param limitPlaceholder limitPlaceholder + * @return A new SQL statement with the LIMIT clause applied. + */ + private String getLimitString(String querySqlString, int offset, int limit, String limitPlaceholder) { + StringBuilder pagingBuilder = new StringBuilder(); + String orderby = getOrderByPart(querySqlString); + String distinctStr = ""; + + String loweredString = querySqlString.toLowerCase(); + String sqlPartString = querySqlString; + if (loweredString.trim().startsWith("select")) { + int index = 6; + if (loweredString.startsWith("select distinct")) { + distinctStr = "DISTINCT "; + index = 15; + } + sqlPartString = sqlPartString.substring(index); + } + pagingBuilder.append(sqlPartString); + + // if no ORDER BY is specified use fake ORDER BY field to avoid errors + if (StringUtils.isEmpty(orderby)) { + orderby = "ORDER BY CURRENT_TIMESTAMP"; + } + + StringBuilder result = new StringBuilder(); + result.append("WITH query AS (SELECT ") + .append(distinctStr) + .append("TOP 100 PERCENT ") + .append(" ROW_NUMBER() OVER (") + .append(orderby) + .append(") as __row_number__, ") + .append(pagingBuilder) + .append(") SELECT * FROM query WHERE __row_number__ BETWEEN ") + .append(offset).append(" AND ").append(offset + limit) + .append(" ORDER BY __row_number__"); + + return result.toString(); + } + + static String getOrderByPart(String sql) { + String loweredString = sql.toLowerCase(); + int orderByIndex = loweredString.indexOf("order by"); + if (orderByIndex != -1) { + // if we find a new "order by" then we need to ignore + // the previous one since it was probably used for a subquery + return sql.substring(orderByIndex); + } else { + return ""; + } + } +} diff --git a/src/main/java/com/nis/persistence/dialect/SQLServerDialect.java b/src/main/java/com/nis/persistence/dialect/SQLServerDialect.java new file mode 100644 index 0000000..d6be9ce --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/SQLServerDialect.java @@ -0,0 +1,54 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * MSSQLServer 数据库实现分页方言 + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class SQLServerDialect implements Dialect { + + public boolean supportsLimit() { + return true; + } + + static int getAfterSelectInsertPoint(String sql) { + int selectIndex = sql.toLowerCase().indexOf("select"); + final int selectDistinctIndex = sql.toLowerCase().indexOf("select distinct"); + return selectIndex + (selectDistinctIndex == selectIndex ? 15 : 6); + } + + public String getLimitString(String sql, int offset, int limit) { + return getLimit(sql, offset, limit); + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *

    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param limit 分页每页显示纪录条数 + * @return 包含占位符的分页sql + */ + public String getLimit(String sql, int offset, int limit) { + if (offset > 0) { + throw new UnsupportedOperationException("sql server has no offset"); + } + return new StringBuffer(sql.length() + 8) + .append(sql) + .insert(getAfterSelectInsertPoint(sql), " top " + limit) + .toString(); + } + + +} diff --git a/src/main/java/com/nis/persistence/dialect/SybaseDialect.java b/src/main/java/com/nis/persistence/dialect/SybaseDialect.java new file mode 100644 index 0000000..c2452f4 --- /dev/null +++ b/src/main/java/com/nis/persistence/dialect/SybaseDialect.java @@ -0,0 +1,46 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.dialect; + + +/** + * Sybase数据库分页方言实现。 + * 还未实现 + * + * @author poplar.yfyang + * @version 1.0 2010-10-10 下午12:31 + * @since JDK 1.5 + */ +public class SybaseDialect implements Dialect { + + public boolean supportsLimit() { + return false; + } + + + @Override + public String getLimitString(String sql, int offset, int limit) { + return null; + } + + /** + * 将sql变成分页sql语句,提供将offset及limit使用占位符号(placeholder)替换. + *
    +     * 如mysql
    +     * dialect.getLimitString("select * from user", 12, ":offset",0,":limit") 将返回
    +     * select * from user limit :offset,:limit
    +     * 
    + * + * @param sql 实际SQL语句 + * @param offset 分页开始纪录条数 + * @param offsetPlaceholder 分页开始纪录条数-占位符号 + * @param limit 分页每页显示纪录条数 + * @param limitPlaceholder 分页纪录条数占位符号 + * @return 包含占位符的分页sql + */ + public String getLimitString(String sql, int offset, String offsetPlaceholder, int limit, String limitPlaceholder) { + throw new UnsupportedOperationException("paged queries not supported"); + } + +} diff --git a/src/main/java/com/nis/persistence/interceptor/BaseInterceptor.java b/src/main/java/com/nis/persistence/interceptor/BaseInterceptor.java new file mode 100644 index 0000000..84948c0 --- /dev/null +++ b/src/main/java/com/nis/persistence/interceptor/BaseInterceptor.java @@ -0,0 +1,59 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.interceptor; + +import java.io.Serializable; + +import org.apache.ibatis.logging.Log; +import org.apache.ibatis.logging.LogFactory; +import org.apache.ibatis.plugin.Interceptor; + +import com.nis.domain.Page; +import com.nis.util.Reflections; + +/** + * Mybatis分页拦截器基类 + * @author poplar.yfyang / thinkgem + * @version 2013-8-28 + */ +public abstract class BaseInterceptor implements Interceptor, Serializable { + + private static final long serialVersionUID = 1L; + + protected static final String PAGE = "page"; + + protected static final String DELEGATE = "delegate"; + + protected static final String MAPPED_STATEMENT = "mappedStatement"; + + protected Log log = LogFactory.getLog(this.getClass()); + + +// /** +// * 拦截的ID,在mapper中的id,可以匹配正则 +// */ +// protected String _SQL_PATTERN = ""; + + /** + * 对参数进行转换和检查 + * @param parameterObject 参数对象 + * @param page 分页对象 + * @return 分页对象 + * @throws NoSuchFieldException 无法找到参数 + */ + @SuppressWarnings("unchecked") + protected static Page convertParameter(Object parameterObject, Page page) { + try{ + if (parameterObject instanceof Page) { + return (Page) parameterObject; + } else { + return (Page)Reflections.getFieldValue(parameterObject, PAGE); + } + }catch (Exception e) { + return null; + } + } + + +} diff --git a/src/main/java/com/nis/persistence/interceptor/PaginationInterceptor.java b/src/main/java/com/nis/persistence/interceptor/PaginationInterceptor.java new file mode 100644 index 0000000..cc2829e --- /dev/null +++ b/src/main/java/com/nis/persistence/interceptor/PaginationInterceptor.java @@ -0,0 +1,130 @@ +package com.nis.persistence.interceptor; + +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Plugin; +import org.apache.ibatis.plugin.Signature; +import org.apache.ibatis.reflection.MetaObject; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; + +import com.nis.domain.Page; +import com.nis.util.Reflections; +import com.nis.util.StringUtils; + +import java.util.Properties; + +/** + * 数据库分页插件,只拦截查询语句. + * @author poplar.yfyang / thinkgem + * @version 2013-8-28 + */ +@Intercepts({@Signature(type = Executor.class, method = "query", + args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})}) +public class PaginationInterceptor extends BaseInterceptor { + + private static final long serialVersionUID = 1L; + + @Override + public Object intercept(Invocation invocation) throws Throwable { + + final MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; + +// //拦截需要分页的SQL +//// if (mappedStatement.getId().matches(_SQL_PATTERN)) { +// if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) { + Object parameter = invocation.getArgs()[1]; + BoundSql boundSql = mappedStatement.getBoundSql(parameter); + Object parameterObject = boundSql.getParameterObject(); + + //获取分页参数对象 + Page page = null; + + if (parameterObject != null) { + page = convertParameter(parameterObject, page); + } + + //如果设置了分页对象,则进行分页 + if (page != null && page.getPageSize() != -1) { + + if (StringUtils.isBlank(boundSql.getSql())){ + return null; + } + String originalSql = boundSql.getSql().trim(); + + //得到总记录数 + if(page.getCount() == -1l){ + page.setCount(0); + }else{ + page.setCount(SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log)); + } + + //分页查询 本地化对象 修改数据库注意修改实现 + String pageSql = SQLHelper.generatePageSql(originalSql, page); +// if (log.isDebugEnabled()) { +// log.debug("PAGE SQL:" + StringUtils.replace(pageSql, "\n", "")); +// } + invocation.getArgs()[2] = new RowBounds(RowBounds.NO_ROW_OFFSET, RowBounds.NO_ROW_LIMIT); + BoundSql newBoundSql = new BoundSql(mappedStatement.getConfiguration(), pageSql, boundSql.getParameterMappings(), boundSql.getParameterObject()); + //解决MyBatis 分页foreach 参数失效 start + if (Reflections.getFieldValue(boundSql, "metaParameters") != null) { + MetaObject mo = (MetaObject) Reflections.getFieldValue(boundSql, "metaParameters"); + Reflections.setFieldValue(newBoundSql, "metaParameters", mo); + } + //解决MyBatis 分页foreach 参数失效 end + MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); + + invocation.getArgs()[0] = newMs; + } +// } + return invocation.proceed(); + } + + + @Override + public Object plugin(Object target) { + return Plugin.wrap(target, this); + } + + + private MappedStatement copyFromMappedStatement(MappedStatement ms, + SqlSource newSqlSource) { + MappedStatement.Builder builder = new MappedStatement.Builder(ms.getConfiguration(), + ms.getId(), newSqlSource, ms.getSqlCommandType()); + builder.resource(ms.getResource()); + builder.fetchSize(ms.getFetchSize()); + builder.statementType(ms.getStatementType()); + builder.keyGenerator(ms.getKeyGenerator()); + if (ms.getKeyProperties() != null) { + for (String keyProperty : ms.getKeyProperties()) { + builder.keyProperty(keyProperty); + } + } + builder.timeout(ms.getTimeout()); + builder.parameterMap(ms.getParameterMap()); + builder.resultMaps(ms.getResultMaps()); + builder.cache(ms.getCache()); + return builder.build(); + } + + public static class BoundSqlSqlSource implements SqlSource { + BoundSql boundSql; + + public BoundSqlSqlSource(BoundSql boundSql) { + this.boundSql = boundSql; + } + + public BoundSql getBoundSql(Object parameterObject) { + return boundSql; + } + } + + @Override + public void setProperties(Properties properties) { + + } +} diff --git a/src/main/java/com/nis/persistence/interceptor/PreparePaginationInterceptor.java b/src/main/java/com/nis/persistence/interceptor/PreparePaginationInterceptor.java new file mode 100644 index 0000000..a855ec8 --- /dev/null +++ b/src/main/java/com/nis/persistence/interceptor/PreparePaginationInterceptor.java @@ -0,0 +1,88 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.persistence.interceptor; + +import org.apache.ibatis.executor.statement.BaseStatementHandler; +import org.apache.ibatis.executor.statement.RoutingStatementHandler; +import org.apache.ibatis.executor.statement.StatementHandler; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Plugin; +import org.apache.ibatis.plugin.Signature; + +import com.nis.domain.Page; +import com.nis.util.Reflections; + +import java.sql.Connection; +import java.util.Properties; + +/** + * Mybatis数据库分页插件,拦截StatementHandler的prepare方法 + * @author poplar.yfyang / thinkgem + * @version 2013-8-28 + */ +@Intercepts({ + @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class}) +}) +public class PreparePaginationInterceptor extends BaseInterceptor { + + private static final long serialVersionUID = 1L; + + public PreparePaginationInterceptor() { + super(); + } + + @Override + public Object intercept(Invocation ivk) throws Throwable { + if (ivk.getTarget().getClass().isAssignableFrom(RoutingStatementHandler.class)) { + final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); + final BaseStatementHandler delegate = (BaseStatementHandler) Reflections.getFieldValue(statementHandler, DELEGATE); + final MappedStatement mappedStatement = (MappedStatement) Reflections.getFieldValue(delegate, MAPPED_STATEMENT); + +// //拦截需要分页的SQL +//// if (mappedStatement.getId().matches(_SQL_PATTERN)) { +// if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) { + BoundSql boundSql = delegate.getBoundSql(); + //分页SQL + select + + from CONFIG_COMPILE where COMPILE_ID = #{compileId ,jdbcType=BIGINT } + + + + + + + + + + + + + + + + + + + insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , + CONT_TYPE, + ATTR_TYPE, + CONT_LABEL, + Task_id, + Guarantee_ID, + AFFAIR_ID, + TOPIC_ID, + DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , + ACTIVE_SYS, + CONFIG_PERCENT + ,CONFIG_OPTION + ,START_TIME ,END_TIME , + USER_REGION, + IS_VALID,GROUP_NUM,FATHER_CFG_ID + ,OP_TIME,LAST_UPDATE + + ) + + + select + #{item.compileId,jdbcType=BIGINT}, + #{item.service,jdbcType=BIGINT}, + #{item.action,jdbcType=INTEGER}, + #{item.contType,jdbcType=INTEGER}, + #{item.attrType,jdbcType=INTEGER}, + #{item.contLabel,jdbcType=INTEGER}, + #{item.taskId,jdbcType=INTEGER}, + #{item.guaranteeId,jdbcType=INTEGER}, + #{item.affAirId,jdbcType=INTEGER}, + #{item.topIcId,jdbcType=INTEGER}, + #{item.doBlackList,jdbcType=BIGINT}, + #{item.doLog,jdbcType=INTEGER}, + #{item.effectiveRange,jdbcType=VARCHAR}, + #{item.activeSys,jdbcType=INTEGER}, + #{item.configPercent,jdbcType=DOUBLE}, + #{item.configOption,jdbcType=DOUBLE}, + #{item.startTime,jdbcType=TIMESTAMP}, + #{item.endTime,jdbcType=TIMESTAMP}, + #{item.userRegion,jdbcType=VARCHAR}, + #{item.isValid,jdbcType=INTEGER}, + #{item.groupNum,jdbcType=INTEGER }, + #{item.fatherCfgId,jdbcType=BIGINT}, + #{item.opTime,jdbcType=TIMESTAMP}, + sysdate + + from dual + + + + + + + + + + + + + + insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , + + CONT_TYPE, + + + ATTR_TYPE, + + + CONT_LABEL, + + + Task_id, + + + Guarantee_ID, + + + AFFAIR_ID, + + + TOPIC_ID, + + + LAST_UPDATE, + + DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE ,ACTIVE_SYS, + CONFIG_PERCENT + ,CONFIG_OPTION + ,START_TIME ,END_TIME , + + USER_REGION, + + IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME) VALUES( + #{compileId,jdbcType=BIGINT}, + #{service, jdbcType=BIGINT}, + #{action,jdbcType=INTEGER}, + + #{contType,jdbcType=INTEGER }, + + + #{attrType,jdbcType=INTEGER }, + + + #{contLabel,jdbcType=INTEGER}, + + + #{taskId,jdbcType=INTEGER}, + + + #{guaranteeId,jdbcType=INTEGER}, + + + #{affAirId,jdbcType=INTEGER}, + + + #{topIcId,jdbcType=INTEGER}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + #{doBlackList,jdbcType=BIGINT}, + #{doLog,jdbcType=INTEGER}, + #{effectiveRange,jdbcType=VARCHAR}, + #{activeSys,jdbcType=INTEGER}, + #{configPercent,jdbcType=DOUBLE}, + #{configOption,jdbcType=DOUBLE}, + #{startTime,jdbcType=TIMESTAMP}, + #{endTime,jdbcType=TIMESTAMP}, + + #{userRegion,jdbcType=VARCHAR}, + + #{isValid,jdbcType=INTEGER}, + #{groupNum,jdbcType=INTEGER }, + #{fatherCfgId,jdbcType=BIGINT}, + #{opTime,jdbcType=TIMESTAMP}) + + + + update CONFIG_COMPILE + + LAST_UPDATE =sysdate, + + CONT_TYPE = #{contType,jdbcType=INTEGER}, + + + ATTR_TYPE = #{attrType,jdbcType=INTEGER}, + + + CONT_LABEL = #{contLabel,jdbcType=VARCHAR}, + + + Task_id = #{taskId,jdbcType=INTEGER}, + + + Guarantee_ID = #{guaranteeId,jdbcType=INTEGER}, + + + AFFAIR_ID = #{affAirId,jdbcType=INTEGER}, + + + TOPIC_ID = #{topIcId,jdbcType=INTEGER}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + + ACTIVE_SYS = #{activeSys,jdbcType=INTEGER}, + + + + + EFFECTIVE_RANGE = #{effectiveRange,jdbcType=VARCHAR}, + + + + where COMPILE_ID = #{compileId ,jdbcType=BIGINT } + + + + + + update CONFIG_COMPILE set is_valid=#{valid,jdbcType=INTEGER } where COMPILE_ID = #{compileId ,jdbcType=BIGINT } + + + + + + + + + + + + TABLE_NAME,OP_TIME + + + + update CONFIG_STATE + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where TABLE_NAME = #{tableName ,jdbcType=VARCHAR } + + + insert into + CONFIG_STATE(TABLE_NAME,OP_TIME) + values(#{tableName,jdbcType=VARCHAR},#{opTime,jdbcType=TIMESTAMP}) + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.java b/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.java new file mode 100644 index 0000000..84a39f4 --- /dev/null +++ b/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.java @@ -0,0 +1,53 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.restful.ConfigGroupRelation; + +/** + * + * @ClassName: ConfigGroupRelationDao + * @Description: TODO(配置分组Dao) + * @author (rkg) + * @date 2016年9月6日下午8:49:21 + * @version V1.0 + */ +@MyBatisDao +public interface ConfigGroupRelationDao { + /** + * 添加配置分组信息,并返回主键 + * + * @param record + * @return 主键 + * @throws Exception + */ + public Long saveConfigGroupRelation(ConfigGroupRelation record) ; + + /** + * 根据主键Id修改配置分组信息 + * + * @param record + * @throws Exception + */ + public void updateConfigGroupRelation(ConfigGroupRelation record) ; + + /** + * 根据compileId查询对应的配置分组信息 + * + * @param compileId + * @return + */ + public List queryCompileGroupByPID(Long compileId); + /** + * 根据groupid查询是否有对应的有效的编译配置 + * @param GROUP_ID + * @return + */ + public List queryCompileGroupByGID(Long GROUP_ID); + + /** + * 批量新增表配置 + * @param configGroupRelationList + */ + public void saveGroupBatch(List configGroupRelationList); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.xml b/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.xml new file mode 100644 index 0000000..87efae8 --- /dev/null +++ b/src/main/java/com/nis/web/dao/ConfigGroupRelationDao.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + ID,GROUP_ID,COMPILE_ID,IS_VALID,OP_TIME,LAST_UPDATE,PROC_SEQ + + + + + + + + + + + + + insert into CONFIG_GROUP + (ID,GROUP_ID, COMPILE_ID, IS_VALID, + OP_TIME,LAST_UPDATE + + ) + + select + + #{item.id,jdbcType=BIGINT}, + #{item.groupId,jdbcType=BIGINT}, + #{item.compileId,jdbcType=BIGINT}, + #{item.isValid,jdbcType=BIGINT}, + #{item.opTime,jdbcType=TIMESTAMP}, + sysdate + + from dual + + + + + + + + + + + + + + insert into CONFIG_GROUP + (ID,GROUP_ID, COMPILE_ID, IS_VALID, + LAST_UPDATE, + OP_TIME ) + values + ( + + + seq_config_group.nextval, + #{groupId,jdbcType=BIGINT}, + #{compileId,jdbcType=BIGINT}, + #{isValid,jdbcType=BIGINT}, + sysdate, + #{opTime,jdbcType=TIMESTAMP} + ) + + + + + UPDATE + CONFIG_GROUP + + + IS_VALID=#{isValid , jdbcType=BIGINT}, + + + OP_TIME=#{opTime , jdbcType=TIMESTAMP}, + + + LAST_UPDATE=#{lastUpdate , jdbcType=TIMESTAMP}, + + + where GROUP_ID=#{groupId} + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ConfigPzIdDao.java b/src/main/java/com/nis/web/dao/ConfigPzIdDao.java new file mode 100644 index 0000000..5fbb8b9 --- /dev/null +++ b/src/main/java/com/nis/web/dao/ConfigPzIdDao.java @@ -0,0 +1,19 @@ +package com.nis.web.dao; + +import java.io.Serializable; + +import com.nis.domain.restful.ConfigPzIdSource; + + +/** + * @ClassName:ConfigPzIdDao + * @Description:TODO(这里用一句话描述这个类的作用) + * @author (zdx) + * @date 2017年9月20日 上午10:35:24 + * @version V1.0 + */ +@MyBatisDao +public interface ConfigPzIdDao extends CrudDao{ + + Long getConfigPzIdList(ConfigPzIdSource entity); +} diff --git a/src/main/java/com/nis/web/dao/ConfigPzIdDao.xml b/src/main/java/com/nis/web/dao/ConfigPzIdDao.xml new file mode 100644 index 0000000..7ee034f --- /dev/null +++ b/src/main/java/com/nis/web/dao/ConfigPzIdDao.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ControlLogDao.java b/src/main/java/com/nis/web/dao/ControlLogDao.java new file mode 100644 index 0000000..9492391 --- /dev/null +++ b/src/main/java/com/nis/web/dao/ControlLogDao.java @@ -0,0 +1,31 @@ +/** +* @Title: ControlLogDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月15日 下午4:13:49 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + + +import com.nis.domain.ControlLog; + +/** +* @ClassName: ControlLogDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月15日 下午4:13:49 +* @version V1.0 +*/ +@MyBatisDao +public interface ControlLogDao extends CrudDao { + + List getLogInfo(ControlLog controlLog); + + void saveControlLog(ControlLog controlLog); + + void removeControlLog(long id); +} diff --git a/src/main/java/com/nis/web/dao/ControlLogDao.xml b/src/main/java/com/nis/web/dao/ControlLogDao.xml new file mode 100644 index 0000000..89ff0ee --- /dev/null +++ b/src/main/java/com/nis/web/dao/ControlLogDao.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + id, + domain, + title, + source_ip, + res_ip, + status, + opt_time + + + + + + + + + + + SELECT SEQ_LOG_INFO.Nextval as ID from DUAL + + insert into LOG_INFO(ID,DOMAIN,TITLE,SOURCE_IP,RES_IP,STATUS,OPT_TIME) + values (#{id},#{domain},#{title},#{srcIp},#{resIp},#{status},#{optTime}) + + + + UPDATE LOG_INFO SET + status = 0 + WHERE id = #{id} + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/CrudDao.java b/src/main/java/com/nis/web/dao/CrudDao.java new file mode 100644 index 0000000..5235048 --- /dev/null +++ b/src/main/java/com/nis/web/dao/CrudDao.java @@ -0,0 +1,65 @@ +package com.nis.web.dao; + +import java.util.List; + +/** + * DAO支持类实现 + * @author + * @version + * @param + */ +public interface CrudDao { + + /** + * 获取单条数据 + * @param id + * @return + */ + public T get(Long id); + + /** + * 获取单条数据 + * @param entity + * @return + */ + public T get(T entity); + + /** + * 查询数据列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page()); + * @param entity + * @return + */ + public List findList(T entity); + + /** + * 查询所有数据列表 + * @param entity + * @return + */ + public List findAllList(T entity); + + + /** + * 插入数据 + * @param entity + * @return + */ + public int insert(T entity); + + /** + * 更新数据 + * @param entity + * @return + */ + public int update(T entity); + public int updateValid(T entity); + + + /** + * 删除数据(一般为逻辑删除,更新del_flag字段为1) + * @param entity + * @return + */ + public int delete(T entity); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DataDictionaryDao.java b/src/main/java/com/nis/web/dao/DataDictionaryDao.java new file mode 100644 index 0000000..5e5a345 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DataDictionaryDao.java @@ -0,0 +1,49 @@ +package com.nis.web.dao; + +import java.util.List; +import com.nis.domain.restful.DataDictionaryName; +import com.nis.domain.restful.DataDictionaryValue; + +@MyBatisDao +public interface DataDictionaryDao { + /** + * 获取所有有效的数据字典 + * + * @return + */ + public List getAllDictName(DataDictionaryValue dataDictionaryValue); + /** + * 获取所有有效的数据字典 + * @return + */ + public List selAllDictName(); + + /** + * 新增数据字典名称并返回数据字典名称 + * + * @param dataDictionaryName + * @return + */ + public Long addDictName(DataDictionaryName dataDictionaryName); + + /** + * 新增数据字典值 + * + * @param dataDictionaryValue + */ + public void addDictValue(DataDictionaryValue dataDictionaryValue); + + /** + * 修改数据字典名称或将该数据字典置为无效 + * + * @param dataDictionaryName + */ + public void updateDictName(DataDictionaryName dataDictionaryName); + + /** + * 修改数据字典值 + * + * @param dataDictionaryValue + */ + public void updateDictValue(DataDictionaryValue dataDictionaryValue); +} diff --git a/src/main/java/com/nis/web/dao/DataDictionaryDao.xml b/src/main/java/com/nis/web/dao/DataDictionaryDao.xml new file mode 100644 index 0000000..9ab1985 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DataDictionaryDao.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + n.id dictnameid, + n.datadictname datadictname, + v.id + dictvalueid, + v.datadictvalue datadictvalue + + + + + + + + + + select seq_datadict.nextval from dual + + insert into datadictionaryname (id ,datadictname,isValid) values( + #{dictNameId,jdbcType=BIGINT}, + #{dataDictName, jdbcType=VARCHAR},1) + + + + + + + + select seq_datadict.nextval from dual + + insert into datadictionaryvalue (id ,datadictid,datadictvalue,isValid) + values( + #{dictValueId,jdbcType=BIGINT},#{dictNameId, jdbcType=BIGINT}, + #{dataDictValue,jdbcType=VARCHAR},1) + + + + update datadictionaryname + + + isValid = #{isValid,jdbcType=BIGINT}, + + + dataDictName = #{dataDictName,jdbcType=VARCHAR}, + + + where id = #{dictNameId ,jdbcType=BIGINT } + + + update datadictionaryvalue + + + dataDictValue = #{dataDictValue,jdbcType=VARCHAR}, + + + isValid = #{isValid,jdbcType=BIGINT}, + + + where id = #{dictValueId ,jdbcType=BIGINT } + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfDjLogStatDao.java b/src/main/java/com/nis/web/dao/DfDjLogStatDao.java new file mode 100644 index 0000000..12574d5 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfDjLogStatDao.java @@ -0,0 +1,25 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.restful.DfDjLogStatistics; +import com.nis.domain.restful.DfDjPzLogStatistics; + +/** + * @ClassName: DfDjLogStatDao + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (zbc) + * @date 2016年11月14日 下午4:00:00 + * @version V1.0 + */ +@MyBatisDao +public interface DfDjLogStatDao { + + List findDfLogStatistics(DfDjLogStatistics entity); + + List findDfPzLogStatistics(DfDjPzLogStatistics entity); + + List findDjLogStatistics(DfDjLogStatistics entity); + + List findDjPzLogStatistics(DfDjPzLogStatistics entity); +} diff --git a/src/main/java/com/nis/web/dao/DfDjLogStatDao.xml b/src/main/java/com/nis/web/dao/DfDjLogStatDao.xml new file mode 100644 index 0000000..c10f533 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfDjLogStatDao.xml @@ -0,0 +1,150 @@ + + + + + + SUM + + + + + + + + + + + + CONFIG_ID, SERVICE, STAT_TIME, SUM + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfDjNestLogDao.java b/src/main/java/com/nis/web/dao/DfDjNestLogDao.java new file mode 100644 index 0000000..4afb18b --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfDjNestLogDao.java @@ -0,0 +1,13 @@ +package com.nis.web.dao; + +import java.io.Serializable; +import java.util.List; + +import com.nis.domain.restful.DfDjNestLog; + +@MyBatisDao +public interface DfDjNestLogDao extends CrudDao { + + List findDfDjNestLogPage(DfDjNestLog entity); + +} diff --git a/src/main/java/com/nis/web/dao/DfDjNestLogDao.xml b/src/main/java/com/nis/web/dao/DfDjNestLogDao.xml new file mode 100644 index 0000000..4414e7b --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfDjNestLogDao.xml @@ -0,0 +1,43 @@ + + + + + + LAYER_ID,FOUND_TIME,RECV_TIME,LAYER_CNT,NEST_PROTOCOL,NEST_SERVER_IP, + NEST_CLIENT_IP,NEST_SERVER_PORT,NEST_CLIENT_PORT,OVER_ID + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfIpPortUdpDao.java b/src/main/java/com/nis/web/dao/DfIpPortUdpDao.java new file mode 100644 index 0000000..fc0e1b3 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfIpPortUdpDao.java @@ -0,0 +1,20 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.DfIpPortUdp; +import com.nis.domain.restful.JdjInfo; +/** + * @ClassName: JdjInfoDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:02:33 + * @version V1.0 + */ +@MyBatisDao +public interface DfIpPortUdpDao extends CrudDao{ + int delete(long id); + + int insert(DfIpPortUdp record); + + int update(DfIpPortUdp record); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfIpPortUdpDao.xml b/src/main/java/com/nis/web/dao/DfIpPortUdpDao.xml new file mode 100644 index 0000000..2db55c7 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfIpPortUdpDao.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + CFG_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, + DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,lastUpdate,effectiveRange,activeSys + + + + delete from DF_IP_PORT_UDP + where CFG_ID = #{cfgId,jdbcType=BIGINT} + + + + + insert into DF_IP_PORT_UDP + + CFG_ID, + + ADDR_TYPE, + + + SRC_IP, + + + MASK_SRC_IP, + + + SRC_PORT, + + + MASK_SRC_PORT, + + + DST_IP, + + + MASK_DST_IP, + + + DST_PORT, + + + MASK_DST_PORT, + + + PROTOCOL, + + + DIRECTION, + + + IS_VALID, + + + OP_TIME, + + + LAST_UPDATE, + + + EFFECTIVE_RANGE, + + + ACTIVE_SYS, + + + + #{cfgId,jdbcType=BIGINT}, + + #{addrType,jdbcType=INTEGER}, + + + #{srcIp,jdbcType=VARCHAR}, + + + #{maskSrcIp,jdbcType=VARCHAR}, + + + #{srcPort,jdbcType=VARCHAR}, + + + #{maskSrcPort,jdbcType=VARCHAR}, + + + #{dstIp,jdbcType=VARCHAR}, + + + #{maskDstIp,jdbcType=VARCHAR}, + + + #{dstPort,jdbcType=VARCHAR}, + + + #{maskDstPort,jdbcType=VARCHAR}, + + + #{protocol,jdbcType=INTEGER}, + + + #{direction,jdbcType=INTEGER}, + + + #{isValid,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + #{effectiveRange,jdbcType=VARCHAR}, + + + #{activeSys,jdbcType=INTEGER}, + + + + + + update DF_IP_PORT_UDP + + + ADDR_TYPE = #{addrType,jdbcType=INTEGER}, + + + SRC_IP = #{srcIp,jdbcType=VARCHAR}, + + + MASK_SRC_IP = #{maskSrcIp,jdbcType=VARCHAR}, + + + SRC_PORT = #{srcPort,jdbcType=VARCHAR}, + + + MASK_SRC_PORT = #{maskSrcPort,jdbcType=VARCHAR}, + + + DST_IP = #{dstIp,jdbcType=VARCHAR}, + + + MASK_DST_IP = #{maskDstIp,jdbcType=VARCHAR}, + + + DST_PORT = #{dstPort,jdbcType=VARCHAR}, + + + MASK_DST_PORT = #{maskDstPort,jdbcType=VARCHAR}, + + + PROTOCOL = #{protocol,jdbcType=INTEGER}, + + + DIRECTION = #{direction,jdbcType=INTEGER}, + + + IS_VALID = #{isValid,jdbcType=INTEGER}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + EFFECTIVE_RANGE=#{effectiveRange,jdbcType=VARCHAR}, + + + ACTIVE_SYS=#{activeSys,jdbcType=INTEGER}, + + + where CFG_ID = #{cfgId,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfJitLogSearchDao.java b/src/main/java/com/nis/web/dao/DfJitLogSearchDao.java new file mode 100644 index 0000000..fef2afb --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfJitLogSearchDao.java @@ -0,0 +1,45 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.restful.DfJitAffairDestReport; +import com.nis.domain.restful.DfJitAffairSrcReport; +import com.nis.domain.restful.DfJitFlDestReport; +import com.nis.domain.restful.DfJitFlSrcReport; +import com.nis.domain.restful.DfJitGuaranteeDestReport; +import com.nis.domain.restful.DfJitGuaranteeSrcReport; +import com.nis.domain.restful.DfJitIdDestReport; +import com.nis.domain.restful.DfJitIdSrcReport; +import com.nis.domain.restful.DfJitMissionDestReport; +import com.nis.domain.restful.DfJitMissionSrcReport; +import com.nis.domain.restful.DfJitTagDestReport; +import com.nis.domain.restful.DfJitTagSrcReport; + +@MyBatisDao +public interface DfJitLogSearchDao { + + List findDfJitFlSrcReport(DfJitFlSrcReport dfJitFlSrcReportSources); + + List findDfJitFlDestReport(DfJitFlDestReport dfJitFlDestReport); + + List findDfJitAffairSrcReport(DfJitAffairSrcReport dfJitAffairSrcReport); + + List findDfJitAffairDestReport(DfJitAffairDestReport dfJitAffairDestReport); + + List findDfJitMissionSrcReport(DfJitMissionSrcReport dfJitMissionSrcReport); + + List findDfJitMissionDestReport(DfJitMissionDestReport dfJitMissionDestReport); + + List findDfJitGuaranteeSrcReport(DfJitGuaranteeSrcReport dfJitGuaranteeSrcReport); + + List findDfJitGuaranteeDestReport(DfJitGuaranteeDestReport dfJitGuaranteeDestReport); + + List findDfJitTagSrcReport(DfJitTagSrcReport dfJitTagSrcReport); + + List findDfJitTagDestReport(DfJitTagDestReport dfJitTagDestReport); + + List findDfJitIdSrcReport(DfJitIdSrcReport dfJitIdSrcReport); + + List findDfJitIdDestReport(DfJitIdDestReport dfJitIdDestReport); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfJitLogSearchDao.xml b/src/main/java/com/nis/web/dao/DfJitLogSearchDao.xml new file mode 100644 index 0000000..1bfd9f9 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfJitLogSearchDao.xml @@ -0,0 +1,692 @@ + + + + + + + + + + + + + + + + STAT_ID, FL, XZ, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, FL, XZ, REPORT_TIME, DEST_COUNTRY, DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + STAT_ID, Affair,topic, REPORT_TIME, SRC_COUNTRY, + SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, Affair,topic, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + STAT_ID, mission, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, mission, REPORT_TIME, DEST_COUNTRY, DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, guarantee, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, guarantee, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + STAT_ID, tag, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, tag, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + STAT_ID, id, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, id, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.java b/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.java new file mode 100644 index 0000000..6f2d54b --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.java @@ -0,0 +1,28 @@ +/** +* @Title: DfKeyConvertUrlDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (DDM) +* @date 2016年9月27日下午9:59:58 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.io.Serializable; +import java.util.List; + +import com.nis.domain.restful.DfKeyConvertUrl; +import com.nis.domain.restful.DjFlowControlStop; + +/** +* @ClassName: DfKeyConvertUrlDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (DDM) +* @date 2016年9月27日下午9:59:58 +* @version V1.0 +*/ +@MyBatisDao +public interface DfKeyConvertUrlDao extends CrudDao{ + + List findDfKeyConvertUrlPage(DfKeyConvertUrl entity); +} diff --git a/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.xml b/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.xml new file mode 100644 index 0000000..5f42fe1 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfKeyConvertUrlDao.xml @@ -0,0 +1,44 @@ + + + + + + + ID,KEY_ID,URL,OP_TIME + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfKeyMailAddDao.java b/src/main/java/com/nis/web/dao/DfKeyMailAddDao.java new file mode 100644 index 0000000..bd2c58e --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfKeyMailAddDao.java @@ -0,0 +1,20 @@ +package com.nis.web.dao; + +import java.io.Serializable; +import java.util.List; + +import com.nis.domain.restful.DfKeyMailAdd; + +/** + * @ClassName: DfKeyMailAddDao + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (ZBC) + * @date 2016年11月09日 下午02:25:00 + * @version V1.0 + */ +@MyBatisDao +public interface DfKeyMailAddDao extends CrudDao { + + List findDfKeyMailAddPage(DfKeyMailAdd entity); + +} diff --git a/src/main/java/com/nis/web/dao/DfKeyMailAddDao.xml b/src/main/java/com/nis/web/dao/DfKeyMailAddDao.xml new file mode 100644 index 0000000..e611270 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfKeyMailAddDao.xml @@ -0,0 +1,45 @@ + + + + + + ID,KEY_ID,MAIL_ADDR,OP_TIME + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDao.java b/src/main/java/com/nis/web/dao/DfLogSearchDao.java new file mode 100644 index 0000000..c3e11c6 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDao.java @@ -0,0 +1,70 @@ +/** +* @Title: DfLogSearchDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月5日 下午44:6:25 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + + +import com.nis.domain.ControlLog; +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DfDnsLog; +import com.nis.domain.restful.DfFtpLog; +import com.nis.domain.restful.DfHttpKeywordLog; +import com.nis.domain.restful.DfHttpReqLog; +import com.nis.domain.restful.DfHttpResLog; +import com.nis.domain.restful.DfIpPortLog; +import com.nis.domain.restful.DfIpsecLog; +import com.nis.domain.restful.DfL2tpLog; +import com.nis.domain.restful.DfMailLog; +import com.nis.domain.restful.DfOpenvpnLog; +import com.nis.domain.restful.DfPptpLog; +import com.nis.domain.restful.DfSshLog; +import com.nis.domain.restful.DfSslLog; +import com.nis.domain.restful.DfTunnelRandomLog; + +/** +* @ClassName: DfLogSearchDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月5日 下午2:6:25 +* @version V1.0 +*/ +@MyBatisDao +public interface DfLogSearchDao extends CrudDao { + + List findIpPortLogs(DfIpPortLog log); + List findHttpReqLogs(DfHttpReqLog log); + List findHttpResLogs(DfHttpResLog log); + List findHttpKeywordLogs(DfHttpKeywordLog log); + List findMailLogs(DfMailLog log); + List findDnsLogs(DfDnsLog log); + List findFtpLogs(DfFtpLog log); + List findPptpLogs(DfPptpLog log); + List findL2tpLogs(DfL2tpLog log); + List findIpsecLogs(DfIpsecLog log); + List findOpenvpnLogs(DfOpenvpnLog log); + List findSshLogs(DfSshLog log); + List findSslLogs(DfSslLog log); + List findTunnelRandomLogs(DfTunnelRandomLog log); + List findIpPortLogsCluster(DfIpPortLog log); + List findHttpReqLogsCluster(DfHttpReqLog log); + List findHttpResLogsCluster(DfHttpResLog log); + List findHttpKeywordLogsCluster(DfHttpKeywordLog log); + List findMailLogsCluster(DfMailLog log); + List findDnsLogsCluster(DfDnsLog log); + List findFtpLogsCluster(DfFtpLog log); + List findPptpLogsCluster(DfPptpLog log); + List findL2tpLogsCluster(DfL2tpLog log); + List findIpsecLogsCluster(DfIpsecLog log); + List findOpenvpnLogsCluster(DfOpenvpnLog log); + List findSshLogsCluster(DfSshLog log); + List findSslLogsCluster(DfSslLog log); + List findTunnelRandomLogsCluster(DfTunnelRandomLog log); + +} diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDao.xml b/src/main/java/com/nis/web/dao/DfLogSearchDao.xml new file mode 100644 index 0000000..947004e --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDao.xml @@ -0,0 +1,1190 @@ + + + + + + ID,CFG_ID,FOUND_TIME,RECV_TIME, + OVER_ID,PROTOCOL,SERVER_IP,CLIENT_IP, + SERVER_PORT,CLIENT_PORT,NEST_PROTOCOL, + NEST_SERVER_IP,NEST_CLIENT_IP,NEST_SERVER_PORT, + NEST_CLIENT_PORT,SERVICE_TYPE,ENTRANCE_ID,CLJ_IP, + SCENE_FILE,ACTION,SERVER_LOCATE,CLIENT_LOCATE,INJECTED_PKT_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE,REQ_BODY_FILE,COOKIE,REFERER,UA,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE,SET_COOKIE, + CONTENT_LEN,CONTENT_TYPE,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,MAIL_PROTO,MAIL_FROM,MAIL_TO,SUBJECT,EML_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,RD,QTYPE,QCLASS,OPCODE,QNAME,CHEAT_TYPE + ,CHEAT_RCODE,CHEAT_STRATEGY,CHEAT_Rr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,FTP_URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE,CONTENT_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE,CHAP_NAME,CONTENT_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,EX_PROTOCOL,ISAKMP_MODE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,ENCRYPT_MODE,HMAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,HOST_KEY,HOST_COOKIE,ENCRYPT_MODE,MAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,SNI,INDIVIDUAL_CERT_FILE,MIDDLE_CERT_FILE,ROOT_CERT_FILE,CHAIN_CERT_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.java b/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.java new file mode 100644 index 0000000..feeb39c --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.java @@ -0,0 +1,56 @@ +/** +* @Title: DfLogSearchDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月5日 下午44:6:25 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + + +import com.nis.domain.ControlLog; +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DfDnsLog; +import com.nis.domain.restful.DfFtpLog; +import com.nis.domain.restful.DfHttpKeywordLog; +import com.nis.domain.restful.DfHttpReqLog; +import com.nis.domain.restful.DfHttpResLog; +import com.nis.domain.restful.DfIpPortLog; +import com.nis.domain.restful.DfIpsecLog; +import com.nis.domain.restful.DfL2tpLog; +import com.nis.domain.restful.DfMailLog; +import com.nis.domain.restful.DfOpenvpnLog; +import com.nis.domain.restful.DfPptpLog; +import com.nis.domain.restful.DfSshLog; +import com.nis.domain.restful.DfSslLog; +import com.nis.domain.restful.DfTunnelRandomLog; + +/** +* @ClassName: DfLogSearchDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月5日 下午2:6:25 +* @version V1.0 +*/ +@MyBatisDao +public interface DfLogSearchDaoCluster extends CrudDao { + + List findIpPortLogsCluster(DfIpPortLog log); + List findHttpReqLogsCluster(DfHttpReqLog log); + List findHttpResLogsCluster(DfHttpResLog log); + List findHttpKeywordLogsCluster(DfHttpKeywordLog log); + List findMailLogsCluster(DfMailLog log); + List findDnsLogsCluster(DfDnsLog log); + List findFtpLogsCluster(DfFtpLog log); + List findPptpLogsCluster(DfPptpLog log); + List findL2tpLogsCluster(DfL2tpLog log); + List findIpsecLogsCluster(DfIpsecLog log); + List findOpenvpnLogsCluster(DfOpenvpnLog log); + List findSshLogsCluster(DfSshLog log); + List findSslLogsCluster(DfSslLog log); + List findTunnelRandomLogsCluster(DfTunnelRandomLog log); + +} diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.xml b/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.xml new file mode 100644 index 0000000..b19c6b0 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDaoCluster.xml @@ -0,0 +1,1120 @@ + + + + + + CFG_ID,FOUND_TIME,RECV_TIME, + OVER_ID,PROTOCOL,SERVER_IP,CLIENT_IP, + SERVER_PORT,CLIENT_PORT,NEST_PROTOCOL, + NEST_SERVER_IP,NEST_CLIENT_IP,NEST_SERVER_PORT, + NEST_CLIENT_PORT,SERVICE_TYPE,ENTRANCE_ID,CLJ_IP, + SCENE_FILE,ACTION,SERVER_LOCATE,CLIENT_LOCATE,INJECTED_PKT_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE,REQ_BODY_FILE,COOKIE,REFERER,UA,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE,SET_COOKIE, + CONTENT_LEN,CONTENT_TYPE,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,MAIL_PROTO,MAIL_FROM,MAIL_TO,SUBJECT,EML_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,RD,QTYPE,QCLASS,OPCODE,QNAME,CHEAT_TYPE + ,CHEAT_RCODE,CHEAT_STRATEGY,CHEAT_Rr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,FTP_URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE,CONTENT_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE,CHAP_NAME,CONTENT_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,EX_PROTOCOL,ISAKMP_MODE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,ENCRYPT_MODE,HMAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,HOST_KEY,HOST_COOKIE,ENCRYPT_MODE,MAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,SNI,INDIVIDUAL_CERT_FILE,MIDDLE_CERT_FILE,ROOT_CERT_FILE,CHAIN_CERT_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.java b/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.java new file mode 100644 index 0000000..98872c2 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.java @@ -0,0 +1,43 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.DfReportEntity; +import com.nis.domain.restful.DfAttrTypeReport; +import com.nis.domain.restful.DfDestIpCountryReport; +import com.nis.domain.restful.DfDestIpReport; +import com.nis.domain.restful.DfEntranceReport; +import com.nis.domain.restful.DfLwhhAttrReport; +import com.nis.domain.restful.DfLwhhReport; +import com.nis.domain.restful.DfLwhhTagReport; +import com.nis.domain.restful.DfPzReport; +import com.nis.domain.restful.DfPzReportStat; +import com.nis.domain.restful.DfServiceReport; +import com.nis.domain.restful.DfSrcIpAttrReport; +import com.nis.domain.restful.DfSrcIpDomeSticReport; +import com.nis.domain.restful.DfSrcIpReport; +import com.nis.domain.restful.DfSrcIpTagReport; +import com.nis.domain.restful.DfTagReport; + +/** + * + * @ClassName: DfMultiDimensionnalReportDao + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2017年8月4日下午4:46:31 + * @version V1.0 + */ +@MyBatisDao +public interface DfMultiDimensionalReportDao extends CrudDao { + + List findDfLwhhAttrReport(DfLwhhAttrReport pz); + + List findDfLwhhTagReportPage(DfLwhhTagReport pz); + + List findDfSrcIpAttrReportPage(DfSrcIpAttrReport pz); + + List findDfSrcIpTagReportPage(DfSrcIpTagReport pz); + + + +} diff --git a/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.xml b/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.xml new file mode 100644 index 0000000..44cab96 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfMultiDimensionalReportDao.xml @@ -0,0 +1,230 @@ + + + + + + ASUM,BSUM,REPORT_TIME,SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.java b/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.java new file mode 100644 index 0000000..fd685c3 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.java @@ -0,0 +1,40 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DfLwhhAttrDaily; +import com.nis.domain.restful.DfLwhhAttrMonth; +import com.nis.domain.restful.DfLwhhTagDaily; +import com.nis.domain.restful.DfLwhhTagMonth; +import com.nis.domain.restful.DfSrcIpAttrDaily; +import com.nis.domain.restful.DfSrcIpAttrMonth; +import com.nis.domain.restful.DfSrcIpTagDaily; +import com.nis.domain.restful.DfSrcIpTagMonth; + +/** + * + * @ClassName: DfMultiDimensionnalReportDao + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2017年8月4日下午4:46:31 + * @version V1.0 + */ +@MyBatisDao +public interface DfMultiDimensionalStatLogDao extends CrudDao { + + List dfLwhhAttrDaily(DfLwhhAttrDaily pz); + List dfLwhhAttrMonth(DfLwhhAttrMonth pz); + + List dfLwhhTagDaily(DfLwhhTagDaily pz); + List dfLwhhTagMonth(DfLwhhTagMonth pz); + + List dfSrcIpAttrDaily(DfSrcIpAttrDaily pz); + List dfSrcIpAttrMonth(DfSrcIpAttrMonth pz); + + List dfSrcIpTagDaily(DfSrcIpTagDaily pz); + List dfSrcIpTagMonth(DfSrcIpTagMonth pz); + + + +} diff --git a/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.xml b/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.xml new file mode 100644 index 0000000..48e4f76 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfMultiDimensionalStatLogDao.xml @@ -0,0 +1,475 @@ + + + + + + ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfReportDao.java b/src/main/java/com/nis/web/dao/DfReportDao.java new file mode 100644 index 0000000..4255c71 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfReportDao.java @@ -0,0 +1,58 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.DfReportEntity; +import com.nis.domain.restful.DfAttrTypeReport; +import com.nis.domain.restful.DfDestIpCountryReport; +import com.nis.domain.restful.DfDestIpReport; +import com.nis.domain.restful.DfEntranceReport; +import com.nis.domain.restful.DfLwhhReport; +import com.nis.domain.restful.DfPzReport; +import com.nis.domain.restful.DfPzReportStat; +import com.nis.domain.restful.DfServiceReport; +import com.nis.domain.restful.DfSrcIpDomeSticReport; +import com.nis.domain.restful.DfSrcIpReport; +import com.nis.domain.restful.DfTagReport; + +/** + * + * @ClassName: DfReportDao + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:51:26 + * @version V1.0 + */ +@MyBatisDao +public interface DfReportDao extends CrudDao { + List findDfPzReport(DfPzReport pz); + + List findAttrTypeReport(DfAttrTypeReport pz); + + List findSrcIpDomeSticReport(DfSrcIpDomeSticReport pz); + + List findDestIpCountryReport(DfDestIpCountryReport pz); + + List findDfEntranceReport(DfEntranceReport pz); + + List findDfLwhhReport(DfLwhhReport pz); + + List findDfTagReportPage(DfTagReport pz); + + List findDfPriTagReport(DfPzReport pz); + + List findDfPzReportStat(DfPzReportStat pz); + + List findDfPzReportStatMinutes(DfPzReportStat pz); + + Long findDfPzReportSum(DfPzReportStat pz); + + List findDfSrcIpReport(DfSrcIpReport entity); + + List findDfDestIpReport(DfDestIpReport entity); + + List findDfServiceReport(DfServiceReport pz); + + List findDfTagReport(DfTagReport pz); + +} diff --git a/src/main/java/com/nis/web/dao/DfReportDao.xml b/src/main/java/com/nis/web/dao/DfReportDao.xml new file mode 100644 index 0000000..ded34fa --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfReportDao.xml @@ -0,0 +1,824 @@ + + + + + + ASUM,BSUM,REPORT_TIME + + + ASUM,BSUM,ABSUM,REPORT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,CFG_ID,SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,service + + + + + + + + + + + + + ,tag + + + + + + + + + + + + + + + + + + + + + + + + + ,SRC_PROVINCE,SRC_CITY + + + + + + + + + + + + + + ,DEST_COUNTRY + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DfStatLogDao.java b/src/main/java/com/nis/web/dao/DfStatLogDao.java new file mode 100644 index 0000000..22ab09a --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfStatLogDao.java @@ -0,0 +1,54 @@ +/** +* @Title: DfStatLogDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:21:31 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DfAttrStatLogDaily; +import com.nis.domain.restful.DfAttrStatLogMonth; +import com.nis.domain.restful.DfDestIpCounrtyStatLogDaily; +import com.nis.domain.restful.DfDestIpCounrtyStatLogMonth; +import com.nis.domain.restful.DfEntrStatLogDaily; +import com.nis.domain.restful.DfEntrStatLogMonth; +import com.nis.domain.restful.DfLwhhStatLogDaily; +import com.nis.domain.restful.DfLwhhStatLogMonth; +import com.nis.domain.restful.DfSrcIpDomesticStatLogDaily; +import com.nis.domain.restful.DfSrcIpDomesticStatLogMonth; +import com.nis.domain.restful.DfStatLogDaily; +import com.nis.domain.restful.DfStatLogMonth; +import com.nis.domain.restful.DfTagStatLogDaily; +import com.nis.domain.restful.DfTagStatLogMonth; + +/** +* @ClassName: DfStatLogDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月13日 上午11:21:31 +* @version V1.0 +*/ +@MyBatisDao +public interface DfStatLogDao extends CrudDao { + + List dfStatLogDaily(DfStatLogDaily daily); + List dfStatLogMonth(DfStatLogMonth mongth); + List dfTagStatLogDaily(DfTagStatLogDaily daily); + List dfTagStatLogMonth(DfTagStatLogMonth mongth); + List dfAttrStatLogDaily(DfAttrStatLogDaily daily); + List dfAttrStatLogMonth(DfAttrStatLogMonth mongth); + List dfEntrStatLogDaily(DfEntrStatLogDaily daily); + List dfEntrStatLogMonth(DfEntrStatLogMonth mongth); + List dfLwhhStatLogDaily(DfLwhhStatLogDaily daily); + List dfLwhhStatLogMonth(DfLwhhStatLogMonth mongth); + List dfSrcIpDomesticStatLogDaily(DfSrcIpDomesticStatLogDaily daily); + List dfSrcIpDomesticStatLogMonth(DfSrcIpDomesticStatLogMonth mongth); + List dfDestIpCounrtyStatLogDaily(DfDestIpCounrtyStatLogDaily daily); + List dfDestIpCounrtyStatLogMonth(DfDestIpCounrtyStatLogMonth mongth); + +} diff --git a/src/main/java/com/nis/web/dao/DfStatLogDao.xml b/src/main/java/com/nis/web/dao/DfStatLogDao.xml new file mode 100644 index 0000000..852a1e6 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfStatLogDao.xml @@ -0,0 +1,857 @@ + + + + + + CONFIG_ID,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + TAG,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + attr_type,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + ENTRANCE_ID,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + lwhh,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + SRC_PROVINCE,SRC_CITY,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DEST_COUNTRY,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjJitLogSearchDao.java b/src/main/java/com/nis/web/dao/DjJitLogSearchDao.java new file mode 100644 index 0000000..705a277 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjJitLogSearchDao.java @@ -0,0 +1,48 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.restful.DjCkStatLog; +import com.nis.domain.restful.DjJitAffairDestReport; +import com.nis.domain.restful.DjJitAffairSrcReport; +import com.nis.domain.restful.DjJitFlDestReport; +import com.nis.domain.restful.DjJitFlSrcReport; +import com.nis.domain.restful.DjJitGuaranteeDestReport; +import com.nis.domain.restful.DjJitGuaranteeSrcReport; +import com.nis.domain.restful.DjJitIdDestReport; +import com.nis.domain.restful.DjJitIdSrcReport; +import com.nis.domain.restful.DjJitMissionDestReport; +import com.nis.domain.restful.DjJitMissionSrcReport; +import com.nis.domain.restful.DjJitTagDestReport; +import com.nis.domain.restful.DjJitTagSrcReport; + +@MyBatisDao +public interface DjJitLogSearchDao { + + List findDjJitFlSrcReport(DjJitFlSrcReport djJitFlSrcReportSources); + + List findDjJitFlDestReport(DjJitFlDestReport djJitFlDestReport); + + List findDjJitAffairSrcReport(DjJitAffairSrcReport djJitAffairSrcReport); + + List findDjJitAffairDestReport(DjJitAffairDestReport djJitAffairDestReport); + + List findDjJitMissionSrcReport(DjJitMissionSrcReport djJitMissionSrcReport); + + List findDjJitMissionDestReport(DjJitMissionDestReport djJitMissionDestReport); + + List findDjJitGuaranteeSrcReport(DjJitGuaranteeSrcReport djJitGuaranteeSrcReport); + + List findDjJitGuaranteeDestReport(DjJitGuaranteeDestReport djJitGuaranteeDestReport); + + List findDjJitTagSrcReport(DjJitTagSrcReport djJitTagSrcReport); + + List findDjJitTagDestReport(DjJitTagDestReport djJitTagDestReport); + + List findDjJitIdSrcReport(DjJitIdSrcReport djJitIdSrcReport); + + List findDjJitIdDestReport(DjJitIdDestReport djJitIdDestReport); + + List findDjCkStatLog(DjCkStatLog djCkStatLog); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjJitLogSearchDao.xml b/src/main/java/com/nis/web/dao/DjJitLogSearchDao.xml new file mode 100644 index 0000000..a17b950 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjJitLogSearchDao.xml @@ -0,0 +1,776 @@ + + + + + + + + + + + + + + + + STAT_ID, FL, XZ, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, FL, XZ, REPORT_TIME, DEST_COUNTRY, DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + STAT_ID, Affair,topic, REPORT_TIME, SRC_COUNTRY, + SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, Affair,topic, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + STAT_ID, mission, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, mission, REPORT_TIME, DEST_COUNTRY, DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + STAT_ID, guarantee, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, guarantee, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + STAT_ID, tag, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, tag, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + STAT_ID, id, REPORT_TIME, SRC_COUNTRY, SRC_PROVINCE, + SRC_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + STAT_ID, id, REPORT_TIME, DEST_COUNTRY, + DEST_PROVINCE, + DEST_CITY, SUM, + SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + STAT_ID, CONFIG_ID, SERVICE, GJ_CK_ID,SUM,CAP_TIME,active_sys + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjLogSearchDao.java b/src/main/java/com/nis/web/dao/DjLogSearchDao.java new file mode 100644 index 0000000..b8c09b4 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjLogSearchDao.java @@ -0,0 +1,64 @@ +/** +* @Title: DjLogSearchDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月7日 下午2:32:25 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DjDnsLog; +import com.nis.domain.restful.DjFtpLog; +import com.nis.domain.restful.DjHttpKeywordLog; +import com.nis.domain.restful.DjHttpReqLog; +import com.nis.domain.restful.DjHttpResLog; +import com.nis.domain.restful.DjIpPortLog; +import com.nis.domain.restful.DjIpsecLog; +import com.nis.domain.restful.DjL2tpLog; +import com.nis.domain.restful.DjMailLog; +import com.nis.domain.restful.DjOpenvpnLog; +import com.nis.domain.restful.DjPptpLog; +import com.nis.domain.restful.DjSshLog; +import com.nis.domain.restful.DjSslLog; + +/** +* @ClassName: DjLogSearchDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (zbc) +* @date 2016年9月7日 下午2:32:25 +* @version V1.0 +*/ +@MyBatisDao +@SuppressWarnings("rawtypes") +public interface DjLogSearchDao extends CrudDao{ + + List findIpPortLogs(DjIpPortLog log); + + List findHttpReqLogs(DjHttpReqLog log); + + List findHttpResLogs(DjHttpResLog log); + + List findHttpKeywordLogs(DjHttpKeywordLog log); + + List findMailLogs(DjMailLog log); + + List findDnsLogs(DjDnsLog log); + + List findFtpLogs(DjFtpLog log); + + List findPptpLogs(DjPptpLog log); + + List findL2tpLogs(DjL2tpLog log); + + List findIpsecLogs(DjIpsecLog log); + + List findOpenvpnLogs(DjOpenvpnLog log); + + List findSshLogs(DjSshLog log); + + List findSslLogs(DjSslLog log); +} diff --git a/src/main/java/com/nis/web/dao/DjLogSearchDao.xml b/src/main/java/com/nis/web/dao/DjLogSearchDao.xml new file mode 100644 index 0000000..7bea5db --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjLogSearchDao.xml @@ -0,0 +1,1105 @@ + + + + + + ID,CFG_ID,FOUND_TIME,RECV_TIME, + OVER_ID,PROTOCOL,SERVER_IP,CLIENT_IP, + SERVER_PORT,CLIENT_PORT,NEST_PROTOCOL,NEST_SERVER_IP,NEST_CLIENT_IP, + NEST_SERVER_PORT,NEST_CLIENT_PORT,SERVICE_TYPE,ENTRANCE_ID, + CLJ_IP,SCENE_FILE,ACTION,SERVER_LOCATE,CLIENT_LOCATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE,REQ_BODY_FILE,COOKIE,REFERER,UA,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE,SET_COOKIE, + CONTENT_LEN,CONTENT_TYPE,USER_DEFINE_KEY,USER_DEFINE_VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,C2S_ISN,HTTP_PROXY_FLAG,HTTP_SEQ,URL,REQ_LINE,REQ_HDR_FILE, + REQ_BODY_FILE,RES_LINE,RES_HDR_FILE,RES_BODY_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,MAIL_PROTO,MAIL_FROM,MAIL_TO,SUBJECT,EML_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,QR,RD,RA,RR,QTYPE,QCLASS,OPCODE,QNAME,DNS_SUB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,FTP_URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,TUNNEL_TYPE,ENCRYPT_MODE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,EX_PROTOCOL,ISAKMP_MODE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,ENCRYPT_MODE,HMAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,HOST_KEY,HOST_COOKIE,ENCRYPT_MODE,MAC,TUNNEL_TYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,VERSION,SNI,INDIVIDUAL_CERT_FILE,MIDDLE_CERT_FILE,ROOT_CERT_FILE,CHAIN_CERT_FILE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.java b/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.java new file mode 100644 index 0000000..ba4b425 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.java @@ -0,0 +1,32 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.DfReportEntity; +import com.nis.domain.restful.DjLwhhAttrReport; +import com.nis.domain.restful.DjLwhhTagReport; +import com.nis.domain.restful.DjSrcIpAttrReport; +import com.nis.domain.restful.DjSrcIpTagReport; + +/** + * + * @ClassName: DjMultiDimensionnalReportDao + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2017年8月4日下午4:46:31 + * @version V1.0 + */ +@MyBatisDao +public interface DjMultiDimensionalReportDao extends CrudDao { + + List findDjLwhhAttrReport(DjLwhhAttrReport pz); + + List findDjLwhhTagReportPage(DjLwhhTagReport pz); + + List findDjSrcIpAttrReportPage(DjSrcIpAttrReport pz); + + List findDjSrcIpTagReportPage(DjSrcIpTagReport pz); + + + +} diff --git a/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.xml b/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.xml new file mode 100644 index 0000000..6924c3c --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjMultiDimensionalReportDao.xml @@ -0,0 +1,230 @@ + + + + + + ASUM,BSUM,REPORT_TIME,SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.java b/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.java new file mode 100644 index 0000000..361e1f8 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.java @@ -0,0 +1,40 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DjLwhhAttrDaily; +import com.nis.domain.restful.DjLwhhAttrMonth; +import com.nis.domain.restful.DjLwhhTagDaily; +import com.nis.domain.restful.DjLwhhTagMonth; +import com.nis.domain.restful.DjSrcIpAttrDaily; +import com.nis.domain.restful.DjSrcIpAttrMonth; +import com.nis.domain.restful.DjSrcIpTagDaily; +import com.nis.domain.restful.DjSrcIpTagMonth; + +/** + * + * @ClassName: DjMultiDimensionnalReportDao + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2017年8月4日下午4:46:31 + * @version V1.0 + */ +@MyBatisDao +public interface DjMultiDimensionalStatLogDao extends CrudDao { + + List djLwhhAttrDaily(DjLwhhAttrDaily pz); + List djLwhhAttrMonth(DjLwhhAttrMonth pz); + + List djLwhhTagDaily(DjLwhhTagDaily pz); + List djLwhhTagMonth(DjLwhhTagMonth pz); + + List djSrcIpAttrDaily(DjSrcIpAttrDaily pz); + List djSrcIpAttrMonth(DjSrcIpAttrMonth pz); + + List djSrcIpTagDaily(DjSrcIpTagDaily pz); + List djSrcIpTagMonth(DjSrcIpTagMonth pz); + + + +} diff --git a/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.xml b/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.xml new file mode 100644 index 0000000..d99b30d --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjMultiDimensionalStatLogDao.xml @@ -0,0 +1,475 @@ + + + + + + ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjReportDao.java b/src/main/java/com/nis/web/dao/DjReportDao.java new file mode 100644 index 0000000..4d4f2ee --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjReportDao.java @@ -0,0 +1,49 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.DfReportEntity; +import com.nis.domain.restful.DjPzReportStat; +import com.nis.domain.restful.DjAttrTypeReport; +import com.nis.domain.restful.DjDestIpCountryReport; +import com.nis.domain.restful.DjEntranceReport; +import com.nis.domain.restful.DjLwhhReport; +import com.nis.domain.restful.DjSrcIpDomeSticReport; +import com.nis.domain.restful.DjTagReport; +import com.nis.domain.restful.DjPzReport; + +/** + * @ClassName: DjReportDao + * @Description: TODO(一句话描述这个类) + * @author (ZBC) + * @date 2016年11月22日下午06:00:00 + * @version V1.0 + */ +@SuppressWarnings("rawtypes") +@MyBatisDao +public interface DjReportDao extends CrudDao { + + List findDjPzReport(DjPzReport entity); + + List findDjPzPrivPage(DjPzReport entity); + + List findDjPzReportStat(DjPzReportStat pz); + List findDjPzReportStatMinutes(DjPzReportStat pz); + + // List findDjPzPrivPage(DjPzReport pz); + + Long findDjPzReportSum(DjPzReportStat pz); + + + List findAttrTypeReport(DjAttrTypeReport pz); + + List findSrcIpDomeSticReport(DjSrcIpDomeSticReport pz); + + List findDestIpCountryReport(DjDestIpCountryReport pz); + + List findDjEntranceReport(DjEntranceReport pz); + + List findDjLwhhReport(DjLwhhReport pz); + + List findDjTagReportPage(DjTagReport pz); +} diff --git a/src/main/java/com/nis/web/dao/DjReportDao.xml b/src/main/java/com/nis/web/dao/DjReportDao.xml new file mode 100644 index 0000000..760188c --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjReportDao.xml @@ -0,0 +1,617 @@ + + + + + + ASUM,BSUM,CSUM,REPORT_TIME + + + + + + + + + + + + + + + + + + + + ,CFG_ID,SERVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ,tag + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DjStatLogDao.java b/src/main/java/com/nis/web/dao/DjStatLogDao.java new file mode 100644 index 0000000..9694f67 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjStatLogDao.java @@ -0,0 +1,54 @@ +/** +* @Title: DjStatLogDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:21:31 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.DjAttrStatLogDaily; +import com.nis.domain.restful.DjAttrStatLogMonth; +import com.nis.domain.restful.DjDestIpCounrtyStatLogDaily; +import com.nis.domain.restful.DjDestIpCounrtyStatLogMonth; +import com.nis.domain.restful.DjEntrStatLogDaily; +import com.nis.domain.restful.DjEntrStatLogMonth; +import com.nis.domain.restful.DjLwhhStatLogDaily; +import com.nis.domain.restful.DjLwhhStatLogMonth; +import com.nis.domain.restful.DjSrcIpDomesticStatLogDaily; +import com.nis.domain.restful.DjSrcIpDomesticStatLogMonth; +import com.nis.domain.restful.DjStatLogDaily; +import com.nis.domain.restful.DjStatLogMonth; +import com.nis.domain.restful.DjTagStatLogDaily; +import com.nis.domain.restful.DjTagStatLogMonth; + +/** +* @ClassName: DjStatLogDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月13日 上午11:21:31 +* @version V1.0 +*/ +@MyBatisDao +public interface DjStatLogDao extends CrudDao { + + List djStatLogDaily(DjStatLogDaily daily); + List djStatLogMonth(DjStatLogMonth mongth); + List djTagStatLogDaily(DjTagStatLogDaily daily); + List djTagStatLogMonth(DjTagStatLogMonth mongth); + List djAttrStatLogDaily(DjAttrStatLogDaily daily); + List djAttrStatLogMonth(DjAttrStatLogMonth mongth); + List djEntrStatLogDaily(DjEntrStatLogDaily daily); + List djEntrStatLogMonth(DjEntrStatLogMonth mongth); + List djLwhhStatLogDaily(DjLwhhStatLogDaily daily); + List djLwhhStatLogMonth(DjLwhhStatLogMonth mongth); + List djSrcIpDomesticStatLogDaily(DjSrcIpDomesticStatLogDaily daily); + List djSrcIpDomesticStatLogMonth(DjSrcIpDomesticStatLogMonth mongth); + List djDestIpCounrtyStatLogDaily(DjDestIpCounrtyStatLogDaily daily); + List djDestIpCounrtyStatLogMonth(DjDestIpCounrtyStatLogMonth mongth); + +} diff --git a/src/main/java/com/nis/web/dao/DjStatLogDao.xml b/src/main/java/com/nis/web/dao/DjStatLogDao.xml new file mode 100644 index 0000000..6ec93aa --- /dev/null +++ b/src/main/java/com/nis/web/dao/DjStatLogDao.xml @@ -0,0 +1,858 @@ + + + + + + CONFIG_ID,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + TAG,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + attr_type,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + ENTRANCE_ID,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + lwhh,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + SRC_PROVINCE,SRC_CITY,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DEST_COUNTRY,ACTIVE_SYS,SERVICE,ASUM,BSUM,ABSUM,STAT_TIME + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DmbCkDao.java b/src/main/java/com/nis/web/dao/DmbCkDao.java new file mode 100644 index 0000000..76564ee --- /dev/null +++ b/src/main/java/com/nis/web/dao/DmbCkDao.java @@ -0,0 +1,17 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.DmbCk; +/** + * + * @ClassName: DmbCkDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:03:33 + * @version V1.0 + */ +@MyBatisDao +public interface DmbCkDao extends CrudDao{ + int delete(long id); + int insert(DmbCk record); + int update(DmbCk record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DmbCkDao.xml b/src/main/java/com/nis/web/dao/DmbCkDao.xml new file mode 100644 index 0000000..0dfd732 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DmbCkDao.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + ID, NAME, POSITION, COM_OPTION, CZYID, OP_TIME,LAST_UPDATE + + + + delete from DMB_CK + where ID = #{id,jdbcType=BIGINT} + + + + insert into DMB_CK (ID, NAME, POSITION, + COM_OPTION, CZYID, OP_TIME,LAST_UPDATE + ) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{position,jdbcType=VARCHAR}, + #{comOption,jdbcType=VARCHAR}, #{czyid,jdbcType=BIGINT}, #{opTime,jdbcType=TIMESTAMP}, + #{lastUpdate,jdbcType=TIMESTAMP} + ) + + + + update DMB_CK + + + NAME = #{name,jdbcType=VARCHAR}, + + + POSITION = #{position,jdbcType=VARCHAR}, + + + COM_OPTION = #{comOption,jdbcType=VARCHAR}, + + + CZYID = #{czyid,jdbcType=BIGINT}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DmbPortDao.java b/src/main/java/com/nis/web/dao/DmbPortDao.java new file mode 100644 index 0000000..febf8fb --- /dev/null +++ b/src/main/java/com/nis/web/dao/DmbPortDao.java @@ -0,0 +1,19 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.DmbPort; +/** + * + * @ClassName: DmbPortDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:04:55 + * @version V1.0 + */ +@MyBatisDao +public interface DmbPortDao extends CrudDao{ + int delete(long id); + + int insert(DmbPort record); + + int update(DmbPort record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DmbPortDao.xml b/src/main/java/com/nis/web/dao/DmbPortDao.xml new file mode 100644 index 0000000..0d621a0 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DmbPortDao.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + ID, ENTRANCE_ID, PORT_NAME, IS_USED, IP_DZ, PORT_EQUIPMENT, ODF_PORT, ADDR, CK_PORT, + CZYID, OP_TIME,LAST_UPDATE + + + + delete from DMB_PORT + where ID = #{id,jdbcType=BIGINT} + + + + insert into DMB_PORT (ID, ENTRANCE_ID, PORT_NAME, + IS_USED, IP_DZ, PORT_EQUIPMENT, + ODF_PORT, ADDR, CK_PORT, + CZYID, OP_TIME,LAST_UPDATE) + values (#{id,jdbcType=BIGINT}, #{entranceId,jdbcType=BIGINT}, #{portName,jdbcType=VARCHAR}, + #{isUsed,jdbcType=INTEGER}, #{ipDz,jdbcType=VARCHAR}, #{portEquipment,jdbcType=VARCHAR}, + #{odfPort,jdbcType=VARCHAR}, #{addr,jdbcType=VARCHAR}, #{ckPort,jdbcType=VARCHAR}, + #{czyid,jdbcType=BIGINT}, #{opTime,jdbcType=TIMESTAMP}, #{lastUpdate,jdbcType=TIMESTAMP}) + + + + update DMB_PORT + + + ENTRANCE_ID = #{entranceId,jdbcType=BIGINT}, + + + PORT_NAME = #{portName,jdbcType=VARCHAR}, + + + IS_USED = #{isUsed,jdbcType=INTEGER}, + + + IP_DZ = #{ipDz,jdbcType=VARCHAR}, + + + PORT_EQUIPMENT = #{portEquipment,jdbcType=VARCHAR}, + + + ODF_PORT = #{odfPort,jdbcType=VARCHAR}, + + + ADDR = #{addr,jdbcType=VARCHAR}, + + + CK_PORT = #{ckPort,jdbcType=VARCHAR}, + + + CZYID = #{czyid,jdbcType=BIGINT}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DnsFakeInfoDao.java b/src/main/java/com/nis/web/dao/DnsFakeInfoDao.java new file mode 100644 index 0000000..e55704d --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsFakeInfoDao.java @@ -0,0 +1,25 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.DnsFakeInfo; +/** + * + * @ClassName: DnsFakeInfoDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月8日 下午8:31:24 + * @version V1.0 + */ +@MyBatisDao +public interface DnsFakeInfoDao extends CrudDao{ + int delete(long id); + int insert(DnsFakeInfo record); + DnsFakeInfo selectByPrimaryKey(long id); + int update(DnsFakeInfo record); + int updateByPrimaryKey(DnsFakeInfo record); + int isValid(long id); + int isValidBatch(@Param("idsList")List idsList,@Param("isValid")int isValid); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DnsFakeInfoDao.xml b/src/main/java/com/nis/web/dao/DnsFakeInfoDao.xml new file mode 100644 index 0000000..c8c89e0 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsFakeInfoDao.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + ID, GROUP_ID, INFO, IS_VALID, OP_TIME, YL1, YL2, YL3, YL4, YL5,LAST_UPDATE + + + + delete from DNS_FAKE_INFO + where ID = #{id,jdbcType=BIGINT} + + + + insert into DNS_FAKE_INFO (ID, GROUP_ID, INFO, + IS_VALID, OP_TIME, YL1, + YL2, YL3, YL4, YL5,LAST_UPDATE + ) + values (#{id,jdbcType=BIGINT}, #{groupId,jdbcType=INTEGER}, #{info,jdbcType=VARCHAR}, + #{isValid,jdbcType=INTEGER}, #{opTime,jdbcType=TIMESTAMP}, #{yl1,jdbcType=INTEGER}, + #{yl2,jdbcType=INTEGER}, #{yl3,jdbcType=VARCHAR}, #{yl4,jdbcType=VARCHAR}, #{yl5,jdbcType=VARCHAR} + , #{lastUpdate,jdbcType=TIMESTAMP} + ) + + + insert into DNS_FAKE_INFO + + + ID, + + + GROUP_ID, + + + INFO, + + + IS_VALID, + + + OP_TIME, + + + YL1, + + + YL2, + + + YL3, + + + YL4, + + + YL5, + + + LAST_UPDATE, + + + + + #{id,jdbcType=BIGINT}, + + + #{groupId,jdbcType=INTEGER}, + + + #{info,jdbcType=VARCHAR}, + + + #{isValid,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{yl1,jdbcType=INTEGER}, + + + #{yl2,jdbcType=INTEGER}, + + + #{yl3,jdbcType=VARCHAR}, + + + #{yl4,jdbcType=VARCHAR}, + + + #{yl5,jdbcType=VARCHAR}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + + + update DNS_FAKE_INFO + + + GROUP_ID = #{groupId,jdbcType=INTEGER}, + + + INFO = #{info,jdbcType=VARCHAR}, + + + IS_VALID = #{isValid,jdbcType=INTEGER}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + YL1 = #{yl1,jdbcType=INTEGER}, + + + YL2 = #{yl2,jdbcType=INTEGER}, + + + YL3 = #{yl3,jdbcType=VARCHAR}, + + + YL4 = #{yl4,jdbcType=VARCHAR}, + + + YL5 = #{yl5,jdbcType=VARCHAR}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DnsFakeIpDao.java b/src/main/java/com/nis/web/dao/DnsFakeIpDao.java new file mode 100644 index 0000000..1c7222f --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsFakeIpDao.java @@ -0,0 +1,32 @@ +/** + *@Title: DnsGroupTypeDao.java + *@Package com.nis.web.dao + *@Description TODO + *@author dell + *@date 2016年9月7日 下午3:14:24 + *@version 版本号 + */ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.DnsFakeIp; + +/** + * @ClassName: DnsGroupTypeDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月7日 下午3:14:24 + * @version V1.0 + */ +@MyBatisDao +public interface DnsFakeIpDao extends CrudDao { + void save(DnsFakeIp dnsFakeIp); + void saveBatch(List dnsFakeIpList); + void updateBatch(List dnsFakeIpList); + void delete(long id); + int isValid(long id); + int isValidBatch(@Param("idsList")List idsList,@Param("isValid")int isValid); +} diff --git a/src/main/java/com/nis/web/dao/DnsFakeIpDao.xml b/src/main/java/com/nis/web/dao/DnsFakeIpDao.xml new file mode 100644 index 0000000..de506c8 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsFakeIpDao.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, + groupId, + addrType, + srcIp, + maskSrcIp, + srcPort, + maskSrcPort, + dstIp, + maskDstIp, + dstPort, + maskDstPort, + protocol, + direction, + opTime, + isValid, + yl1, + yl2, + yl3, + yl4, + yl5, + lastUpdate + + + + + insert into DNS_FAKE_IP + + ID, + + GROUP_ID, + + + ADDR_TYPE, + + + SRC_IP, + + + MASK_SRC_IP, + + + SRC_PORT, + + + MASK_SRC_PORT, + + + DST_IP, + + + MASK_DST_IP, + + + DST_PORT, + + + MASK_DST_PORT, + + + PROTOCOL, + + + DIRECTION, + + + IS_VALID, + + + OP_TIME, + + + YL1, + + + YL2, + + + YL3, + + + YL4, + + + YL5, + + + LAST_UPDATE, + + + + #{id,jdbcType=BIGINT}, + + #{groupId,jdbcType=INTEGER}, + + + #{addrType,jdbcType=INTEGER}, + + + #{srcIp,jdbcType=VARCHAR}, + + + #{maskSrcIp,jdbcType=VARCHAR}, + + + #{srcPort,jdbcType=VARCHAR}, + + + #{maskSrcPort,jdbcType=VARCHAR}, + + + #{dstIp,jdbcType=VARCHAR}, + + + #{maskDstIp,jdbcType=VARCHAR}, + + + #{dstPort,jdbcType=VARCHAR}, + + + #{maskDstPort,jdbcType=VARCHAR}, + + + #{protocol,jdbcType=INTEGER}, + + + #{direction,jdbcType=INTEGER}, + + + #{isValid,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{yl1,jdbcType=INTEGER}, + + + #{yl2,jdbcType=INTEGER}, + + + #{yl3,jdbcType=VARCHAR}, + + + #{yl4,jdbcType=VARCHAR}, + + + #{yl5,jdbcType=VARCHAR}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + + + UPDATE DNS_FAKE_IP + + + GROUP_ID=#{groupId,jdbcType=INTEGER}, + + + ADDR_TYPE=#{addrType,jdbcType=INTEGER}, + + + SRC_IP=#{srcIp,jdbcType=VARCHAR}, + + + MASK_SRC_IP=#{maskSrcIp,jdbcType=VARCHAR}, + + + SRC_PORT=#{srcPort,jdbcType=VARCHAR}, + + + MASK_SRC_PORT=#{maskSrcPort,jdbcType=VARCHAR}, + + + DST_IP=#{dstIp,jdbcType=VARCHAR}, + + + MASK_DST_IP=#{maskDstIp,jdbcType=VARCHAR}, + + + DST_PORT=#{dstPort,jdbcType=VARCHAR}, + + + MASK_DST_PORT=#{maskDstPort,jdbcType=VARCHAR}, + + + PROTOCOL=#{protocol,jdbcType=INTEGER}, + + + DIRECTION=#{direction,jdbcType=INTEGER}, + + + OP_TIME=#{opTime,jdbcType=TIMESTAMP}, + + + IS_VALID=#{isValid,jdbcType=INTEGER}, + + + YL1=#{yl1,jdbcType=INTEGER}, + + + YL2=#{yl2,jdbcType=INTEGER}, + + + YL3=#{yl3,jdbcType=VARCHAR}, + + + YL4=#{yl4,jdbcType=VARCHAR}, + + + YL5=#{yl5,jdbcType=VARCHAR}, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id ,jdbcType=BIGINT } + + + DELETE FROM DNS_FAKE_IP + WHERE ID = #{id,jdbcType=BIGINT} + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DnsGroupTypeDao.java b/src/main/java/com/nis/web/dao/DnsGroupTypeDao.java new file mode 100644 index 0000000..87fa959 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsGroupTypeDao.java @@ -0,0 +1,34 @@ +/** + *@Title: DnsGroupTypeDao.java + *@Package com.nis.web.dao + *@Description TODO + *@author dell + *@date 2016年9月7日 下午3:14:24 + *@version 版本号 + */ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.DnsGroupType; + +/** + * @ClassName: DnsGroupTypeDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月7日 下午3:14:24 + * @version V1.0 + */ +@MyBatisDao +public interface DnsGroupTypeDao extends CrudDao { + List getDnsGroupType(DnsGroupType DnsGroupType); + void save(DnsGroupType DnsGroupType); + void saveBatch(List DnsGroupTypeList); + void updateBatch(List DnsGroupTypeList); + void delete(long id); + int isValid(long id); + int isValidBatch(@Param("idsList")List idsList,@Param("isValid")int isValid); + int isGroupIdUnique(@Param("idsList")List idsList); +} diff --git a/src/main/java/com/nis/web/dao/DnsGroupTypeDao.xml b/src/main/java/com/nis/web/dao/DnsGroupTypeDao.xml new file mode 100644 index 0000000..b2bd8b8 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsGroupTypeDao.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + id, + groupId, + groupName, + resTypeId, + opTime, + isValid, + yl1, + yl2, + yl3, + yl4, + yl5, + lastUpdate + + + + + insert into DNS_GROUP_TYPE(ID,GROUP_ID,GROUP_NAME,RES_TYPE_ID,OP_TIME,IS_VALID,YL1,YL2,YL3,YL4,YL5,LAST_UPDATE) + values (#{id},#{groupId},#{groupName},#{resTypeId},#{opTime},#{isValid},#{yl1},#{yl2},#{yl3},#{yl4},#{yl5},#{lastUpdate}) + + + UPDATE DNS_GROUP_TYPE + + + GROUP_ID=#{groupId,jdbcType=INTEGER}, + + + GROUP_NAME=#{groupName,jdbcType=VARCHAR}, + + + RES_TYPE_ID=#{resTypeId,jdbcType=INTEGER}, + + + OP_TIME=#{opTime,jdbcType=TIMESTAMP}, + + + IS_VALID=#{isValid,jdbcType=INTEGER}, + + + YL1=#{yl1,jdbcType=INTEGER}, + + + YL2=#{yl2,jdbcType=INTEGER}, + + + YL3=#{yl3,jdbcType=VARCHAR}, + + + YL4=#{yl4,jdbcType=VARCHAR}, + + + YL5=#{yl5,jdbcType=VARCHAR}, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id ,jdbcType=BIGINT } + + + DELETE FROM DNS_GROUP_TYPE + WHERE ID = #{id,jdbcType=BIGINT} + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.java b/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.java new file mode 100644 index 0000000..94933cc --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.java @@ -0,0 +1,36 @@ +/** + *@Title: DnsResponseStrategyDao.java + *@Package com.nis.web.dao + *@Description TODO + *@author dell + *@date 2016年9月5日 下午5:45:51 + *@version 版本号 + */ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.DnsResponseStrategy; + +/** + * @ClassName: DnsResponseStrategyDao.java + * @Description: TODO + * @author (wx) + * @date 2016年9月5日 下午5:45:51 + * @version V1.0 + */ +@MyBatisDao +public interface DnsResponseStrategyDao extends CrudDao { + + List getDnsResponseStrategy(DnsResponseStrategy dnsResponseStrategy); + + void save(DnsResponseStrategy dnsResponseStrategy); + void saveBatch(List dnsResponseStrategyList); + void updateBatch(List dnsResponseStrategyList); + void delete(long id); + int isValid(long id); + int isValidBatch(@Param("idsList")List idsList,@Param("isValid")int isValid); + int isReqStrateIdUnique(@Param("idsList")List idsList); +} diff --git a/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.xml b/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.xml new file mode 100644 index 0000000..254aa82 --- /dev/null +++ b/src/main/java/com/nis/web/dao/DnsResponseStrategyDao.xml @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, + reqStrateId, + strateName, + resGroupOneId, + resGroupOneNum, + resGroupTwoId, + resGroupTwoNum, + resGroupThreeId, + resGroupThreeNum, + resGroupFourId, + resGroupFourNum, + resGroupFiveId, + resGroupFiveNum, + authGroup, + addGroup, + opTime, + isValid, + yl1, + yl2, + yl3, + yl4, + yl5, + lastUpdate, + minTtl, + maxTtl + + + + + + insert into DNS_RESPONSE_STRATEGY + + ID, + + REQ_STRATE_ID, + + + STRATE_NAME, + + + RES_GROUP_1_ID, + + + RES_GROUP_1_NUM, + + + RES_GROUP_2_ID, + + + RES_GROUP_2_NUM, + + + RES_GROUP_3_ID, + + + RES_GROUP_3_NUM, + + + RES_GROUP_4_ID, + + + RES_GROUP_4_NUM, + + + RES_GROUP_5_ID, + + + RES_GROUP_5_NUM, + + + AUTH_GROUP, + + + ADD_GROUP, + + + OP_TIME, + + + IS_VALID, + + + YL1, + + + YL2, + + + YL3, + + + YL4, + + + YL5, + + + LAST_UPDATE, + + + MIN_TTL, + + + MAX_TTL, + + + + #{id,jdbcType=BIGINT}, + + #{reqStrateId,jdbcType=INTEGER}, + + + #{strateName,jdbcType=VARCHAR}, + + + #{resGroupOneId,jdbcType=INTEGER}, + + + #{resGroupOneNum,jdbcType=INTEGER}, + + + #{resGroupTwoId,jdbcType=INTEGER}, + + + #{resGroupTwoNum,jdbcType=INTEGER}, + + + #{resGroupThreeId,jdbcType=INTEGER}, + + + #{resGroupThreeNum,jdbcType=INTEGER}, + + + #{resGroupFourId,jdbcType=INTEGER}, + + + #{resGroupFourNum,jdbcType=INTEGER}, + + + #{resGroupFiveId,jdbcType=INTEGER}, + + + #{resGroupFiveNum,jdbcType=INTEGER}, + + + #{authGroup,jdbcType=INTEGER}, + + + #{addGroup,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{isValid,jdbcType=INTEGER}, + + + #{yl1,jdbcType=INTEGER}, + + + #{yl2,jdbcType=INTEGER}, + + + #{yl3,jdbcType=VARCHAR}, + + + #{yl4,jdbcType=VARCHAR}, + + + #{yl5,jdbcType=VARCHAR}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + #{minTtl,jdbcType=INTEGER}, + + + #{maxTtl,jdbcType=INTEGER}, + + + + + + UPDATE DNS_RESPONSE_STRATEGY + + + REQ_STRATE_ID=#{reqStrateId,jdbcType=INTEGER}, + + + STRATE_NAME=#{strateName,jdbcType=VARCHAR}, + + + RES_GROUP_1_ID=#{resGroupOneId,jdbcType=INTEGER}, + + + RES_GROUP_1_NUM=#{resGroupOneNum,jdbcType=INTEGER}, + + + RES_GROUP_2_ID=#{resGroupTwoId,jdbcType=INTEGER}, + + + RES_GROUP_2_NUM=#{resGroupTwoNum,jdbcType=INTEGER}, + + + RES_GROUP_3_ID=#{resGroupThreeId,jdbcType=INTEGER}, + + + RES_GROUP_3_NUM=#{resGroupThreeNum,jdbcType=INTEGER}, + + + RES_GROUP_4_ID=#{resGroupFourId,jdbcType=INTEGER}, + + + RES_GROUP_4_NUM=#{resGroupFourNum,jdbcType=INTEGER}, + + + RES_GROUP_5_ID=#{resGroupFiveId,jdbcType=INTEGER}, + + + RES_GROUP_5_NUM=#{resGroupFiveNum,jdbcType=INTEGER}, + + + AUTH_GROUP=#{authGroup,jdbcType=INTEGER}, + + + ADD_GROUP=#{addGroup,jdbcType=INTEGER}, + + + OP_TIME=#{opTime,jdbcType=TIMESTAMP}, + + + IS_VALID=#{isValid,jdbcType=INTEGER}, + + + YL1=#{yl1,jdbcType=INTEGER}, + + + YL2=#{yl2,jdbcType=INTEGER}, + + + YL3=#{yl3,jdbcType=VARCHAR}, + + + YL4=#{yl4,jdbcType=VARCHAR}, + + + YL5=#{yl5,jdbcType=VARCHAR}, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + MIN_TTL=#{minTtl,jdbcType=INTEGER}, + + + MAX_TTL=#{maxTtl,jdbcType=INTEGER}, + + + where ID = #{id ,jdbcType=BIGINT } + + + DELETE FROM DNS_RESPONSE_STRATEGY + WHERE ID = #{id,jdbcType=BIGINT} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.java b/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.java new file mode 100644 index 0000000..f60b743 --- /dev/null +++ b/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.java @@ -0,0 +1,9 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.EncryptProtoRandom; +@MyBatisDao +public interface EncryptProtoRandomDao extends CrudDao{ + int delete(Long id); + int insert(EncryptProtoRandom record); + int update(EncryptProtoRandom record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.xml b/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.xml new file mode 100644 index 0000000..c753d27 --- /dev/null +++ b/src/main/java/com/nis/web/dao/EncryptProtoRandomDao.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + ID, RANDOM_VALUE, PROTO, OP_TIME, IS_VALID, PROC_SEQ, LAST_UPDATE + + + + delete from ENCRYPT_PROTO_RANDOM + where ID = #{id,jdbcType=BIGINT} + + + + + insert into ENCRYPT_PROTO_RANDOM + + ID, + + RANDOM_VALUE, + + + PROTO, + + + OP_TIME, + + + IS_VALID, + + + LAST_UPDATE, + + + + #{id,jdbcType=BIGINT}, + + #{randomValue,jdbcType=INTEGER}, + + + #{proto,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{isValid,jdbcType=INTEGER}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + + + update ENCRYPT_PROTO_RANDOM + + + RANDOM_VALUE = #{randomValue,jdbcType=INTEGER}, + + + PROTO = #{proto,jdbcType=INTEGER}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + IS_VALID = #{isValid,jdbcType=INTEGER}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.java b/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.java new file mode 100644 index 0000000..c660a7e --- /dev/null +++ b/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.java @@ -0,0 +1,25 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.FakeIpConfigCompile; +/** + * + * @ClassName: FakeIpConfigCompileDao.java + * @Description: TODO + * @author (wx) + * @date 2016年9月8日 下午3:23:07 + * @version V1.0 + */ +@MyBatisDao +public interface FakeIpConfigCompileDao extends CrudDao { + int delete(Long compileId); + long getCompileId(); + int insert(FakeIpConfigCompile record); + + int insertSelective(FakeIpConfigCompile record); + + FakeIpConfigCompile selectByPrimaryKey(Long compileId); + + int updateByPrimaryKeySelective(FakeIpConfigCompile record); + + int updateByPrimaryKey(FakeIpConfigCompile record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.xml b/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.xml new file mode 100644 index 0000000..c597eb5 --- /dev/null +++ b/src/main/java/com/nis/web/dao/FakeIpConfigCompileDao.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + COMPILE_ID, SERVICE, ACTION, DO_BLACKLIST, DO_LOG, EFFECTIVE_RANGE, USER_REGION, + IS_VALID, OP_TIME, GROUP_NUM,LAST_UPDATE,ACTIVE_SYS + + + + delete from FAKE_IP_CONFIG_COMPILE + where COMPILE_ID = #{compileId,jdbcType=BIGINT} + + + + insert into FAKE_IP_CONFIG_COMPILE (COMPILE_ID, SERVICE, ACTION, + DO_BLACKLIST, DO_LOG, EFFECTIVE_RANGE, + USER_REGION, IS_VALID, OP_TIME, + GROUP_NUM,LAST_UPDATE,ACTIVE_SYS) + values (#{compileId,jdbcType=BIGINT}, #{service,jdbcType=INTEGER}, #{action,jdbcType=INTEGER}, + #{doBlacklist,jdbcType=INTEGER}, #{doLog,jdbcType=INTEGER}, #{effectiveRange,jdbcType=VARCHAR}, + #{userRegion,jdbcType=VARCHAR}, #{isValid,jdbcType=INTEGER}, #{opTime,jdbcType=TIMESTAMP}, + #{groupNum,jdbcType=INTEGER}, #{lastUpdate,jdbcType=TIMESTAMP},#{activeSys,jdbcType=INTEGER}) + + + + update FAKE_IP_CONFIG_COMPILE + + + SERVICE = #{service,jdbcType=INTEGER}, + + + ACTION = #{action,jdbcType=INTEGER}, + + + DO_BLACKLIST = #{doBlacklist,jdbcType=INTEGER}, + + + DO_LOG = #{doLog,jdbcType=INTEGER}, + + + EFFECTIVE_RANGE = #{effectiveRange,jdbcType=VARCHAR}, + + + USER_REGION = #{userRegion,jdbcType=VARCHAR}, + + + IS_VALID = #{isValid,jdbcType=INTEGER}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + GROUP_NUM = #{groupNum,jdbcType=INTEGER}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + ACTIVE_SYS = #{activeSys,jdbcType=INTEGER}, + + + where COMPILE_ID = #{compileId,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.java b/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.java new file mode 100644 index 0000000..cd96b52 --- /dev/null +++ b/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.java @@ -0,0 +1,17 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.FakeIpConfigGroup; +/** + * + * @ClassName: FakeIpConfigGroupDao.java + * @Description: TODO + * @author (wx) + * @date 2016年9月8日 下午3:25:17 + * @version V1.0 + */ +@MyBatisDao +public interface FakeIpConfigGroupDao extends CrudDao{ + int insert(FakeIpConfigGroup record); +// int delete(long record); + int insertSelective(FakeIpConfigGroup record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.xml b/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.xml new file mode 100644 index 0000000..658a324 --- /dev/null +++ b/src/main/java/com/nis/web/dao/FakeIpConfigGroupDao.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + insert into FAKE_IP_CONFIG_GROUP (GROUP_ID, COMPILE_ID, IS_VALID, + OP_TIME,LAST_UPDATE,ID) + values (#{groupId,jdbcType=BIGINT}, #{compileId,jdbcType=BIGINT}, #{isValid,jdbcType=INTEGER}, + #{opTime,jdbcType=TIMESTAMP},#{lastUpdate,jdbcType=TIMESTAMP},SEQ_CONFIG_GROUP.Nextval) + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FwqInfoDao.java b/src/main/java/com/nis/web/dao/FwqInfoDao.java new file mode 100644 index 0000000..f5fc0ad --- /dev/null +++ b/src/main/java/com/nis/web/dao/FwqInfoDao.java @@ -0,0 +1,19 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.FwqInfo; +/** + * + * @ClassName: FwqInfoDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:01:09 + * @version V1.0 + */ +@MyBatisDao +public interface FwqInfoDao extends CrudDao{ + int delete(long id); + + int insert(FwqInfo record); + + int update(FwqInfo record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/FwqInfoDao.xml b/src/main/java/com/nis/web/dao/FwqInfoDao.xml new file mode 100644 index 0000000..b25886a --- /dev/null +++ b/src/main/java/com/nis/web/dao/FwqInfoDao.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + ID, NAME, ENTRANCE_ID, CZYID, OP_TIME,LAST_UPDATE + + + + delete from FWQ_INFO + where ID = #{id,jdbcType=BIGINT} + + + + insert into FWQ_INFO (ID, NAME, ENTRANCE_ID, + CZYID, OP_TIME,LAST_UPDATE) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{entranceId,jdbcType=BIGINT}, + #{czyid,jdbcType=BIGINT}, #{opTime,jdbcType=TIMESTAMP},#{lastUpdate,jdbcType=TIMESTAMP}) + + + + update FWQ_INFO + + + NAME = #{name,jdbcType=VARCHAR}, + + + ENTRANCE_ID = #{entranceId,jdbcType=BIGINT}, + + + CZYID = #{czyid,jdbcType=BIGINT}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.java b/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.java new file mode 100644 index 0000000..d669dd3 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.java @@ -0,0 +1,27 @@ +/** +* @Title: IntervalTimeSearchDao.java +* @Package com.nis.web.dao +* @Description: TODO(用一句话描述该文件做什么) +* @author (zbc) +* @date 2016年9月8日下午8:11:58 +* @version V1.0 +*/ +package com.nis.web.dao; + +import java.io.Serializable; +import java.util.List; + +import com.nis.domain.restful.DjFlowControlStop; + +/** +* @ClassName: IntervalTimeSearchDao +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (zbc) +* @date 2016年9月8日下午8:11:58 +* @version V1.0 +*/ +@MyBatisDao +public interface IntervalTimeSearchDao extends CrudDao{ + + List findFlowControlStopPage(DjFlowControlStop entity); +} diff --git a/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.xml b/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.xml new file mode 100644 index 0000000..65fb6f2 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IntervalTimeSearchDao.xml @@ -0,0 +1,44 @@ + + + + + + + CFG_ID,SERVICE,ACTION,OP_TIME + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/IpLocationPublicDao.java b/src/main/java/com/nis/web/dao/IpLocationPublicDao.java new file mode 100644 index 0000000..ac89d83 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IpLocationPublicDao.java @@ -0,0 +1,18 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.IpLocationPublic; +import java.math.BigDecimal; + +public interface IpLocationPublicDao extends CrudDao{ + int deleteByPrimaryKey(long id); + + int insert(IpLocationPublic record); + + int insertSelective(IpLocationPublic record); + + IpLocationPublic selectByPrimaryKey(long id); + + int updateByPrimaryKeySelective(IpLocationPublic record); + + int updateByPrimaryKey(IpLocationPublic record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/IpLocationPublicMapper.xml b/src/main/java/com/nis/web/dao/IpLocationPublicMapper.xml new file mode 100644 index 0000000..b816d25 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IpLocationPublicMapper.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + ID, IP_START, IP_END, IP_START_NUM, IP_END_NUM, CONTINENT, COUNTRY, PROVINCE, CITY, + DISTRICT, DESCRIPTION, ISP, AREA_CODE, COUNTRY_ENGLISH, COUNTRY_CODE, LONGITUDE, + LATITUDE + + + + delete from IP_LOCATION_PUBLIC + where ID = #{id,jdbcType=BIGINT} + + + + SELECT SEQ_IP_LOCATION_PUBLIC.Nextval as ID from DUAL + + insert into IP_LOCATION_PUBLIC (ID, IP_START, IP_END, + IP_START_NUM, IP_END_NUM, CONTINENT, + COUNTRY, PROVINCE, CITY, + DISTRICT, DESCRIPTION, ISP, + AREA_CODE, COUNTRY_ENGLISH, COUNTRY_CODE, + LONGITUDE, LATITUDE) + values (#{id,jdbcType=BIGINT}, #{ipStart,jdbcType=VARCHAR}, #{ipEnd,jdbcType=VARCHAR}, + #{ipStartNum,jdbcType=BIGINT}, #{ipEndNum,jdbcType=BIGINT}, #{continent,jdbcType=VARCHAR}, + #{country,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, + #{district,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{isp,jdbcType=VARCHAR}, + #{areaCode,jdbcType=VARCHAR}, #{countryEnglish,jdbcType=VARCHAR}, #{countryCode,jdbcType=VARCHAR}, + #{longitude,jdbcType=VARCHAR}, #{latitude,jdbcType=VARCHAR}) + + + insert into IP_LOCATION_PUBLIC + + + ID, + + + IP_START, + + + IP_END, + + + IP_START_NUM, + + + IP_END_NUM, + + + CONTINENT, + + + COUNTRY, + + + PROVINCE, + + + CITY, + + + DISTRICT, + + + DESCRIPTION, + + + ISP, + + + AREA_CODE, + + + COUNTRY_ENGLISH, + + + COUNTRY_CODE, + + + LONGITUDE, + + + LATITUDE, + + + + + #{id,jdbcType=BIGINT}, + + + #{ipStart,jdbcType=VARCHAR}, + + + #{ipEnd,jdbcType=VARCHAR}, + + + #{ipStartNum,jdbcType=BIGINT}, + + + #{ipEndNum,jdbcType=BIGINT}, + + + #{continent,jdbcType=VARCHAR}, + + + #{country,jdbcType=VARCHAR}, + + + #{province,jdbcType=VARCHAR}, + + + #{city,jdbcType=VARCHAR}, + + + #{district,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{isp,jdbcType=VARCHAR}, + + + #{areaCode,jdbcType=VARCHAR}, + + + #{countryEnglish,jdbcType=VARCHAR}, + + + #{countryCode,jdbcType=VARCHAR}, + + + #{longitude,jdbcType=VARCHAR}, + + + #{latitude,jdbcType=VARCHAR}, + + + + + update IP_LOCATION_PUBLIC + + + IP_START = #{ipStart,jdbcType=VARCHAR}, + + + IP_END = #{ipEnd,jdbcType=VARCHAR}, + + + IP_START_NUM = #{ipStartNum,jdbcType=BIGINT}, + + + IP_END_NUM = #{ipEndNum,jdbcType=BIGINT}, + + + CONTINENT = #{continent,jdbcType=VARCHAR}, + + + COUNTRY = #{country,jdbcType=VARCHAR}, + + + PROVINCE = #{province,jdbcType=VARCHAR}, + + + CITY = #{city,jdbcType=VARCHAR}, + + + DISTRICT = #{district,jdbcType=VARCHAR}, + + + DESCRIPTION = #{description,jdbcType=VARCHAR}, + + + ISP = #{isp,jdbcType=VARCHAR}, + + + AREA_CODE = #{areaCode,jdbcType=VARCHAR}, + + + COUNTRY_ENGLISH = #{countryEnglish,jdbcType=VARCHAR}, + + + COUNTRY_CODE = #{countryCode,jdbcType=VARCHAR}, + + + LONGITUDE = #{longitude,jdbcType=VARCHAR}, + + + LATITUDE = #{latitude,jdbcType=VARCHAR}, + + + where ID = #{id,jdbcType=BIGINT} + + + update IP_LOCATION_PUBLIC + set IP_START = #{ipStart,jdbcType=VARCHAR}, + IP_END = #{ipEnd,jdbcType=VARCHAR}, + IP_START_NUM = #{ipStartNum,jdbcType=BIGINT}, + IP_END_NUM = #{ipEndNum,jdbcType=BIGINT}, + CONTINENT = #{continent,jdbcType=VARCHAR}, + COUNTRY = #{country,jdbcType=VARCHAR}, + PROVINCE = #{province,jdbcType=VARCHAR}, + CITY = #{city,jdbcType=VARCHAR}, + DISTRICT = #{district,jdbcType=VARCHAR}, + DESCRIPTION = #{description,jdbcType=VARCHAR}, + ISP = #{isp,jdbcType=VARCHAR}, + AREA_CODE = #{areaCode,jdbcType=VARCHAR}, + COUNTRY_ENGLISH = #{countryEnglish,jdbcType=VARCHAR}, + COUNTRY_CODE = #{countryCode,jdbcType=VARCHAR}, + LONGITUDE = #{longitude,jdbcType=VARCHAR}, + LATITUDE = #{latitude,jdbcType=VARCHAR} + where ID = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/IpRegionDao.java b/src/main/java/com/nis/web/dao/IpRegionDao.java new file mode 100644 index 0000000..65d7b46 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IpRegionDao.java @@ -0,0 +1,58 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.IpRegion; + +/** + * + * @ClassName: IpRegionDao + * @Description: TODO(ip类域配置dao) + * @author (rkg) + * @date 2016年9月6日下午8:49:52 + * @version V1.0 + */ +@MyBatisDao +public interface IpRegionDao { + + /** + * 保存ip类域配置信息,并返回主键id + * + * @param ipRegion + * ip类域配置 + * @return + */ + public Long saveIpRegion(IpRegion ipRegion); + + /** + * 根据主键id修改ip类域配置信息 + * + * @param ipRegion + */ + public void updateIpRegion(IpRegion ipRegion); + + /** + * 根据主键regionId查询ip域配置 + * + * @param ipRegion + * @return + */ + public IpRegion queryIpRegionById(IpRegion ipRegion); + /** + * 根据groupId获取该分组下所有的ip类域配置 + * @param tableName + * @param groupIdArr + * @return + */ + public List queryIpRegionByGroupId(@Param("tableName")String tableName,@Param("groupIdArr")Long[] groupIdArr); + + + /** + * 往指定ip域表中批量添加数据 + * @param tableName + * @param ipRegionList + */ + public void saveIpRegionBatch(@Param("tableName")String tableName,@Param("ipRegionList")List ipRegionList); +} diff --git a/src/main/java/com/nis/web/dao/IpRegionDao.xml b/src/main/java/com/nis/web/dao/IpRegionDao.xml new file mode 100644 index 0000000..5a46d22 --- /dev/null +++ b/src/main/java/com/nis/web/dao/IpRegionDao.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + REGION_ID,GROUP_ID, + ADDR_TYPE,SRC_IP,MASK_SRC_IP,SRC_PORT,MASK_SRC_PORT,DST_IP, + MASK_DST_IP,DST_PORT,MASK_DST_PORT,PROTOCOL,DIRECTION,IS_VALID,OP_TIME,LAST_UPDATE,PROC_SEQ + + + + + + + + + + + insert into ${tableName} + (REGION_ID, + GROUP_ID, + ADDR_TYPE, + SRC_IP, + MASK_SRC_IP, + SRC_PORT, + MASK_SRC_PORT, + DST_IP, + MASK_DST_IP, + DST_PORT, + MASK_DST_PORT, + PROTOCOL, + DIRECTION, + IS_VALID, + OP_TIME,LAST_UPDATE + + ) + + select + #{item.regionId,jdbcType=BIGINT}, + #{item.groupId,jdbcType=BIGINT}, + #{item.addrType,jdbcType=INTEGER}, + #{item.srcIp,jdbcType=VARCHAR}, + #{item.maskSrcIp,jdbcType=VARCHAR}, + #{item.srcPort,jdbcType=VARCHAR}, + #{item.maskSrcPort,jdbcType=VARCHAR}, + #{item.dstIp,jdbcType=VARCHAR}, + #{item.maskDstIp,jdbcType=VARCHAR}, + #{item.dstPort,jdbcType=VARCHAR}, + #{item.maskDstPort,jdbcType=VARCHAR}, + #{item.protocol,jdbcType=INTEGER}, + #{item.direction,jdbcType=INTEGER}, + #{item.isValid,jdbcType=INTEGER}, + #{item.opTime,jdbcType=TIMESTAMP}, + sysdate + + from dual + + + + + + + + + + + + + + + + + + + + + + insert into ${tableName} + (REGION_ID, + GROUP_ID, + ADDR_TYPE, + SRC_IP, + MASK_SRC_IP, + SRC_PORT, + MASK_SRC_PORT, + DST_IP, + MASK_DST_IP, + DST_PORT, + MASK_DST_PORT, + PROTOCOL, + DIRECTION, + IS_VALID, + + LAST_UPDATE, + + OP_TIME + ) + values + (#{regionId,jdbcType=BIGINT}, + #{groupId,jdbcType=BIGINT}, + #{addrType,jdbcType=INTEGER}, + #{srcIp,jdbcType=VARCHAR}, + #{maskSrcIp,jdbcType=VARCHAR}, + #{srcPort,jdbcType=VARCHAR}, + #{maskSrcPort,jdbcType=VARCHAR}, + #{dstIp,jdbcType=VARCHAR}, + #{maskDstIp,jdbcType=VARCHAR}, + #{dstPort,jdbcType=VARCHAR}, + #{maskDstPort,jdbcType=VARCHAR}, + #{protocol,jdbcType=INTEGER}, + #{direction,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER}, + + #{lastUpdate,jdbcType=TIMESTAMP}, + + #{opTime,jdbcType=TIMESTAMP} + ) + + + + UPDATE ${tableName} + + + IS_VALID=#{isValid,jdbcType=INTEGER}, + + + OP_TIME=#{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + where REGION_ID=#{regionId} + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/JdjInfoDao.java b/src/main/java/com/nis/web/dao/JdjInfoDao.java new file mode 100644 index 0000000..872c3f2 --- /dev/null +++ b/src/main/java/com/nis/web/dao/JdjInfoDao.java @@ -0,0 +1,19 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.JdjInfo; +/** + * @ClassName: JdjInfoDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:02:33 + * @version V1.0 + */ +@MyBatisDao +public interface JdjInfoDao extends CrudDao{ + int delete(long id); + + int insert(JdjInfo record); + + int update(JdjInfo record); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/JdjInfoDao.xml b/src/main/java/com/nis/web/dao/JdjInfoDao.xml new file mode 100644 index 0000000..04a6a09 --- /dev/null +++ b/src/main/java/com/nis/web/dao/JdjInfoDao.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + ID, NAME, FWQ_ID, JC_IP, FD_IP, CZYID, OP_TIME,LAST_UPDATE + + + + delete from JDJ_INFO + where ID = #{id,jdbcType=BIGINT} + + + + + insert into JDJ_INFO + + ID, + + NAME, + + + FWQ_ID, + + + JC_IP, + + + FD_IP, + + + CZYID, + + + OP_TIME, + + + LAST_UPDATE, + + + + #{id,jdbcType=BIGINT}, + + #{name,jdbcType=VARCHAR}, + + + #{fwqId,jdbcType=BIGINT}, + + + #{jcIp,jdbcType=VARCHAR}, + + + #{fdIp,jdbcType=VARCHAR}, + + + #{czyid,jdbcType=BIGINT}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{lastUpdate,jdbcType=TIMESTAMP}, + + + + + + update JDJ_INFO + + + NAME = #{name,jdbcType=VARCHAR}, + + + FWQ_ID = #{fwqId,jdbcType=BIGINT}, + + + JC_IP = #{jcIp,jdbcType=VARCHAR}, + + + FD_IP = #{fdIp,jdbcType=VARCHAR}, + + + CZYID = #{czyid,jdbcType=BIGINT}, + + + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + + LAST_UPDATE = #{lastUpdate,jdbcType=TIMESTAMP}, + + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/MyBatisDao.java b/src/main/java/com/nis/web/dao/MyBatisDao.java new file mode 100644 index 0000000..3d2c7a4 --- /dev/null +++ b/src/main/java/com/nis/web/dao/MyBatisDao.java @@ -0,0 +1,32 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.web.dao; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.stereotype.Component; + +/** + * 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 + * @author thinkgem + * @version 2013-8-28 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@Documented +@Component +public @interface MyBatisDao { + + /** + * The value may indicate a suggestion for a logical component name, + * to be turned into a Spring bean in case of an autodetected component. + * @return the suggested component name, if any + */ + String value() default ""; + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/NumRegionDao.java b/src/main/java/com/nis/web/dao/NumRegionDao.java new file mode 100644 index 0000000..f5b3f42 --- /dev/null +++ b/src/main/java/com/nis/web/dao/NumRegionDao.java @@ -0,0 +1,62 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.NumRegion; + +/** + * + * @ClassName: NumRegionDao + * @Description: TODO(数值类域配置dao) + * @author (rkg) + * @date 2016年9月6日下午8:50:11 + * @version V1.0 + */ +@MyBatisDao +public interface NumRegionDao { + + /** + * 保存数值类域配置信息,并返回主键id + * + * @param numRegion + * 数值类域配置 + * @return + */ + public Long saveNumRegion(NumRegion numRegion); + + /** + * 根据主键id修改数值类域配置信息 + * + * @param numRegion + * 数值类域配置 + */ + public void updateNumRegion(NumRegion numRegion); + + /** + * 根据主键regionId查询NumRegion + * + * @param numRegion + * @return + */ + public NumRegion queryNumRegionById(NumRegion numRegion); + + /** + * 根据groupId获取该分组下所有的数值类域配置 + * + * @param tableName获取表名 + * @param groupIdArr + * @return + */ + public List queryNumRegionByGroupId(@Param("tableName")String tableName,@Param("groupIdArr")Long[] groupIdArr); + + + + /** + * 向数值域配置表中批量添加数据 + * @param tableName + * @param numRegionList + */ + public void saveNumRegionBatch(@Param("tableName")String tableName,@Param("numRegionList")List numRegionList); +} diff --git a/src/main/java/com/nis/web/dao/NumRegionDao.xml b/src/main/java/com/nis/web/dao/NumRegionDao.xml new file mode 100644 index 0000000..bcf2d06 --- /dev/null +++ b/src/main/java/com/nis/web/dao/NumRegionDao.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE,PROC_SEQ + + + + + + + + + + insert into ${tableName} + (REGION_ID , + GROUP_ID , + LOW_BOUNDARY , + UP_BOUNDARY , + IS_VALID , + OP_TIME,LAST_UPDATE + + ) + + select + #{item.regionId,jdbcType=BIGINT}, + #{item.groupId,jdbcType=BIGINT}, + #{item.lowBoundary,jdbcType=BIGINT}, + #{item.upBoundary,jdbcType=BIGINT}, + #{item.isValid,jdbcType=INTEGER}, + #{item.opTime,jdbcType=TIMESTAMP}, + sysdate + + from dual + + + + + + + + insert into ${tableName} + (REGION_ID , + GROUP_ID , + LOW_BOUNDARY , + UP_BOUNDARY , + IS_VALID , + + LAST_UPDATE, + + OP_TIME + ) + values + (#{regionId,jdbcType=BIGINT}, + #{groupId,jdbcType=BIGINT}, + #{lowBoundary,jdbcType=BIGINT}, + #{upBoundary,jdbcType=BIGINT}, + #{isValid,jdbcType=INTEGER}, + + #{lastUpdate,jdbcType=TIMESTAMP}, + + #{opTime,jdbcType=TIMESTAMP} + ) + + + + + UPDATE ${tableName} + + + IS_VALID=#{isValid , jdbcType=INTEGER }, + + + OP_TIME= #{ opTime , jdbcType=TIMESTAMP }, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + where REGION_ID=#{regionId} + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ServicesRequestLogDao.java b/src/main/java/com/nis/web/dao/ServicesRequestLogDao.java new file mode 100644 index 0000000..853a84b --- /dev/null +++ b/src/main/java/com/nis/web/dao/ServicesRequestLogDao.java @@ -0,0 +1,25 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.ServicesRequestLog; +import com.nis.domain.restful.ServicesRequestLogBean; + +/** + * @ClassName: JdjInfoDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:02:33 + * @version V1.0 + */ +@MyBatisDao +public interface ServicesRequestLogDao { + + int insert(ServicesRequestLog record); + + public void deleteById(Long id); + + public void deleteAll(); + + public List getAllLog(ServicesRequestLogBean requestLog); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/ServicesRequestLogDao.xml b/src/main/java/com/nis/web/dao/ServicesRequestLogDao.xml new file mode 100644 index 0000000..b95909e --- /dev/null +++ b/src/main/java/com/nis/web/dao/ServicesRequestLogDao.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + ID, OPERATOR, VERSION, OPACTION,OPTIME, REQUEST_CONTENT, + REQUEST_TIME,REQUEST_IP, + CONSUMER_TIME,BUSINESS_CODE,EXCEPTION_INFO,SERVER_IP + + + + + delete from + SERVICES_REQUEST_LOG + where ID = #{id,jdbcType=BIGINT} + + + + delete from + SERVICES_REQUEST_LOG + + + + insert into SERVICES_REQUEST_LOG + + ID, + + OPERATOR, + + + VERSION, + + + OPACTION, + + + OPTIME, + + + REQUEST_CONTENT, + + + REQUEST_TIME, + + + CONSUMER_TIME, + + + REQUEST_IP, + + + BUSINESS_CODE, + + + EXCEPTION_INFO, + + + SERVER_IP, + + + + SEQ_SERVICES_REQUEST_LOG.Nextval, + + #{operator,jdbcType=VARCHAR}, + + + #{version,jdbcType=VARCHAR}, + + + #{opAction,jdbcType=INTEGER}, + + + #{opTime,jdbcType=TIMESTAMP}, + + + #{requestContent,jdbcType=CLOB}, + + + #{requestTime,jdbcType=TIMESTAMP}, + + + #{consumerTime,jdbcType=BIGINT}, + + + #{requestIp,jdbcType=VARCHAR}, + + + #{businessCode,jdbcType=INTEGER}, + + + #{exceptionInfo,jdbcType=VARCHAR}, + + + #{serverIp,jdbcType=VARCHAR}, + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SrcIpDao.java b/src/main/java/com/nis/web/dao/SrcIpDao.java new file mode 100644 index 0000000..5b32f00 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SrcIpDao.java @@ -0,0 +1,25 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.SrcIp; +@MyBatisDao +public interface SrcIpDao extends CrudDao { + + + List getIpInfo(@Param("ip") Long ipaddr); + + int deleteByPrimaryKey(Integer seqId); + + int insert(SrcIp record); + + int insertSelective(SrcIp record); + + SrcIp selectByPrimaryKey(Integer seqId); + + int updateByPrimaryKeySelective(SrcIp record); + + int updateByPrimaryKey(SrcIp record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SrcIpDao.xml b/src/main/java/com/nis/web/dao/SrcIpDao.xml new file mode 100644 index 0000000..b574d18 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SrcIpDao.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + seq_id, ip_start_addr, ip_end_addr, ip_addr_range, ip_start_string, ip_end_string, + port, isp_id, area_id, flag, description, yl1, yl2 + + + + delete from src_ip + where seq_id = #{seqId,jdbcType=INTEGER} + + + insert into src_ip (seq_id, ip_start_addr, ip_end_addr, + ip_addr_range, ip_start_string, ip_end_string, + port, isp_id, area_id, + flag, description, yl1, + yl2) + values (#{seqId,jdbcType=INTEGER}, #{ipStartAddr,jdbcType=INTEGER}, #{ipEndAddr,jdbcType=INTEGER}, + #{ipAddrRange,jdbcType=INTEGER}, #{ipStartString,jdbcType=VARCHAR}, #{ipEndString,jdbcType=VARCHAR}, + #{port,jdbcType=INTEGER}, #{ispId,jdbcType=BIGINT}, #{areaId,jdbcType=BIGINT}, + #{flag,jdbcType=INTEGER}, #{description,jdbcType=VARCHAR}, #{yl1,jdbcType=INTEGER}, + #{yl2,jdbcType=VARCHAR}) + + + insert into src_ip + + + seq_id, + + + ip_start_addr, + + + ip_end_addr, + + + ip_addr_range, + + + ip_start_string, + + + ip_end_string, + + + port, + + + isp_id, + + + area_id, + + + flag, + + + description, + + + yl1, + + + yl2, + + + + + #{seqId,jdbcType=INTEGER}, + + + #{ipStartAddr,jdbcType=INTEGER}, + + + #{ipEndAddr,jdbcType=INTEGER}, + + + #{ipAddrRange,jdbcType=INTEGER}, + + + #{ipStartString,jdbcType=VARCHAR}, + + + #{ipEndString,jdbcType=VARCHAR}, + + + #{port,jdbcType=INTEGER}, + + + #{ispId,jdbcType=BIGINT}, + + + #{areaId,jdbcType=BIGINT}, + + + #{flag,jdbcType=INTEGER}, + + + #{description,jdbcType=VARCHAR}, + + + #{yl1,jdbcType=INTEGER}, + + + #{yl2,jdbcType=VARCHAR}, + + + + + update src_ip + + + ip_start_addr = #{ipStartAddr,jdbcType=INTEGER}, + + + ip_end_addr = #{ipEndAddr,jdbcType=INTEGER}, + + + ip_addr_range = #{ipAddrRange,jdbcType=INTEGER}, + + + ip_start_string = #{ipStartString,jdbcType=VARCHAR}, + + + ip_end_string = #{ipEndString,jdbcType=VARCHAR}, + + + port = #{port,jdbcType=INTEGER}, + + + isp_id = #{ispId,jdbcType=BIGINT}, + + + area_id = #{areaId,jdbcType=BIGINT}, + + + flag = #{flag,jdbcType=INTEGER}, + + + description = #{description,jdbcType=VARCHAR}, + + + yl1 = #{yl1,jdbcType=INTEGER}, + + + yl2 = #{yl2,jdbcType=VARCHAR}, + + + where seq_id = #{seqId,jdbcType=INTEGER} + + + update src_ip + set ip_start_addr = #{ipStartAddr,jdbcType=INTEGER}, + ip_end_addr = #{ipEndAddr,jdbcType=INTEGER}, + ip_addr_range = #{ipAddrRange,jdbcType=INTEGER}, + ip_start_string = #{ipStartString,jdbcType=VARCHAR}, + ip_end_string = #{ipEndString,jdbcType=VARCHAR}, + port = #{port,jdbcType=INTEGER}, + isp_id = #{ispId,jdbcType=BIGINT}, + area_id = #{areaId,jdbcType=BIGINT}, + flag = #{flag,jdbcType=INTEGER}, + description = #{description,jdbcType=VARCHAR}, + yl1 = #{yl1,jdbcType=INTEGER}, + yl2 = #{yl2,jdbcType=VARCHAR} + where seq_id = #{seqId,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/StrRegionDao.java b/src/main/java/com/nis/web/dao/StrRegionDao.java new file mode 100644 index 0000000..bce1f61 --- /dev/null +++ b/src/main/java/com/nis/web/dao/StrRegionDao.java @@ -0,0 +1,69 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.restful.StrRegion; + +/** + * + * @ClassName: StrRegionDao + * @Description: TODO(字符串类域配置dao) + * @author (rkg) + * @date 2016年9月6日下午8:50:23 + * @version V1.0 + */ +@MyBatisDao +public interface StrRegionDao { + + + + /** + * 根据主键id修改字符类域配置信息 + * + * @param strRegion + * 字符类域配置 + */ + public void updateStrRegion(StrRegion strRegion); + + /** + * 根据主键regionId查询字符串域配置信息 + * + * @param strRegion + * @return + */ + public StrRegion queryStrRegionById(StrRegion strRegion); + /** + * 根据groupId获取该分组下所有的字符串类域配置 + * @param tableName + * @param groupIdArr + * @return + */ + public List queryStrRegionByGroupId(@Param("tableName")String tableName,@Param("groupIdArr")Long[] groupIdArr); + /** + * 根据groupId获取该分组下所有的增强字符串类域配置 + * @param tableName + * @param groupIdArr + * @return + */ + public List queryStrStrongRegionByGroupId(@Param("tableName")String tableName,@Param("groupIdArr")Long[] groupIdArr); + + /** + * 向字符串域中批量插入数据 + * + * @param tableName + * @param strRegionList + */ + public void saveStrRegionBatch(@Param("tableName") String tableName, + @Param("strRegionList") List strRegionList); + + /** + * 向增强字符串域中批量插入数据 + * + * @param tableName + * @param strRegionList + */ + public void saveStrStrongRegionBatch(@Param("tableName") String tableName, + @Param("strRegionList") List strRegionList); +} diff --git a/src/main/java/com/nis/web/dao/StrRegionDao.xml b/src/main/java/com/nis/web/dao/StrRegionDao.xml new file mode 100644 index 0000000..c8b5f55 --- /dev/null +++ b/src/main/java/com/nis/web/dao/StrRegionDao.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + REGION_ID, + GROUP_ID, + KEYWORDS, + EXPR_TYPE, + MATCH_METHOD, + IS_HEXBIN, + IS_VALID, + OP_TIME,LAST_UPDATE,PROC_SEQ + + + REGION_ID, + GROUP_ID, + DISTRICT, + KEYWORDS, + EXPR_TYPE, + MATCH_METHOD, + IS_HEXBIN, + IS_VALID, + OP_TIME,LAST_UPDATE,PROC_SEQ + + + + + + + + + insert into ${tableName} + (REGION_ID, + GROUP_ID, + KEYWORDS, + EXPR_TYPE, + MATCH_METHOD , + IS_HEXBIN, + IS_VALID, + OP_TIME,LAST_UPDATE + + ) + + select + #{item.regionId,jdbcType=BIGINT}, + #{item.groupId,jdbcType=BIGINT}, + #{item.keywords,jdbcType=VARCHAR}, + #{item.exprType,jdbcType=INTEGER}, + #{item.matchMethod,jdbcType=INTEGER}, + #{item.isHexbin,jdbcType=INTEGER}, + #{item.isValid,jdbcType=INTEGER}, + #{item.opTime,jdbcType=TIMESTAMP}, + sysdate + + from dual + + + + + + insert into ${tableName} + (REGION_ID, + GROUP_ID, + DISTRICT, + KEYWORDS, + EXPR_TYPE, + MATCH_METHOD , + IS_HEXBIN, + IS_VALID, + OP_TIME,LAST_UPDATE + ) + + select + #{item.regionId,jdbcType=BIGINT}, + #{item.groupId,jdbcType=BIGINT}, + #{item.district,jdbcType=VARCHAR}, + #{item.keywords,jdbcType=VARCHAR}, + #{item.exprType,jdbcType=INTEGER}, + #{item.matchMethod,jdbcType=INTEGER}, + #{item.isHexbin,jdbcType=INTEGER}, + #{item.isValid,jdbcType=INTEGER}, + #{item.opTime,jdbcType=TIMESTAMP}, + + sysdate + from dual + + + + + + + + UPDATE ${tableName} + + + IS_VALID=#{isValid , jdbcType=INTEGER }, + + + OP_TIME= #{ opTime , jdbcType=TIMESTAMP }, + + + LAST_UPDATE=#{lastUpdate,jdbcType=TIMESTAMP}, + + + where REGION_ID=#{regionId} + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysAreaDao.java b/src/main/java/com/nis/web/dao/SysAreaDao.java new file mode 100644 index 0000000..4f01052 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysAreaDao.java @@ -0,0 +1,11 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.SysArea; +@MyBatisDao +public interface SysAreaDao extends TreeDao{ + + List findByParentIdsLike(SysArea area); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysAreaDao.xml b/src/main/java/com/nis/web/dao/SysAreaDao.xml new file mode 100644 index 0000000..495f1b0 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysAreaDao.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + id, parent_id, parent_ids, name, sort, code, type, remarks, longitude, latitude, del_flag + + + + a.id, + a.parent_id AS "parent.id", + a.parent_ids, + a.code, + a.name, + a.sort, + a.type, + a.remarks, + a.longitude, + a.latitude, + a.del_flag, + p.name AS "parent.name", + p.parent_ids as "parent.parentIds" + + + + + LEFT JOIN sys_area p ON p.id = a.parent_id + + + + + + + + + + + + + INSERT INTO sys_area( + parent_id, + parent_ids, + code, + name, + sort, + type, + longitude, + latitude, + remarks, + del_flag + ) VALUES ( + #{parent.id}, + #{parentIds}, + #{code}, + #{name}, + #{sort}, + #{type}, + #{longitude}, + #{latitude}, + #{remarks}, + #{delFlag} + ) + + + + UPDATE sys_area SET + parent_id = #{parent.id}, + parent_ids = #{parentIds}, + code = #{code}, + name = #{name}, + sort = #{sort}, + type = #{type}, + longitude = #{longitude}, + latitude = #{latitude}, + remarks = #{remarks} + WHERE id = #{id} + + + + UPDATE sys_area SET + parent_id = #{parent.id}, + parent_ids = #{parentIds} + WHERE id = #{id} + + + + + UPDATE sys_area SET + del_flag = #{DEL_FLAG_DELETE} + WHERE id = #{id} OR parent_ids LIKE + '%,'||#{id}||',%' + '%,'+#{id}+',%' + CONCAT('%,', #{id}, ',%') + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysDictDao.java b/src/main/java/com/nis/web/dao/SysDictDao.java new file mode 100644 index 0000000..90d0d1f --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysDictDao.java @@ -0,0 +1,32 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.SysDataDictionaryName; + +@MyBatisDao +public interface SysDictDao extends CrudDao { + + + List findDicByName(@Param("DEL_FLAG_NORMAL")String DEL_FLAG_NORMAL,@Param("modualName") String modualName); + + List findDictList(SysDataDictionaryName sysDictName); + + SysDataDictionaryName getDictById(@Param("DEL_FLAG_NORMAL")Integer DEL_FLAG_NORMAL,@Param("id") Integer id); + + void insertDictName(SysDataDictionaryName sysDictName); + + void updateDictName(SysDataDictionaryName sysDictName); + + void insertDictItem(SysDataDictionaryItem sysDictitem); + + void deleteDictItem(@Param("dictId")Integer dictId); + + void deleteDictName(@Param("dictId")Integer dictId); + + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysDictDao.xml b/src/main/java/com/nis/web/dao/SysDictDao.xml new file mode 100644 index 0000000..0d96f59 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysDictDao.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, module_name, mark, remark, revision, create_time, modify_time, status + + + + n.id, + n.module_name, + n.mark, + n.remark, + n.revision, + n.create_time, + n.modify_time, + n.status, + t.id as item_id, + t.item_code, + t.item_value, + t.item_desc, + t.item_sort, + t.status as item_status, + t.type + + + + LEFT JOIN sys_data_dictionary_item t ON t.dictionary_id = n.id and t.status= #{DEL_FLAG_NORMAL} + + + + + + + + + + + + + + insert into sys_data_dictionary_name (module_name, mark, + remark, revision, create_time, + modify_time, status) + values ( #{moduleName,jdbcType=VARCHAR}, #{mark,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}, #{revision,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{modifyTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}) + + + + + insert into sys_data_dictionary_item ( item_code, item_value, + item_desc, item_sort, status, + type, dictionary_id) + values (#{itemCode,jdbcType=VARCHAR}, #{itemValue,jdbcType=VARCHAR}, + #{itemDesc,jdbcType=VARCHAR}, #{itemSort,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, + #{type,jdbcType=INTEGER}, #{dictionaryId,jdbcType=INTEGER}) + + + + + delete from sys_data_dictionary_name + where id = #{dictId} + + + + + delete from sys_data_dictionary_item + where dictionary_id = #{dictId} + + + + + update sys_data_dictionary_name + set module_name = #{moduleName,jdbcType=VARCHAR}, + mark = #{mark,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + revision = #{revision,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + modify_time = #{modifyTime,jdbcType=TIMESTAMP}, + status = #{status,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysLogDao.java b/src/main/java/com/nis/web/dao/SysLogDao.java new file mode 100644 index 0000000..ecabd4d --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysLogDao.java @@ -0,0 +1,7 @@ +package com.nis.web.dao; + +import com.nis.domain.SysLog; +@MyBatisDao +public interface SysLogDao extends CrudDao{ + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysLogDao.xml b/src/main/java/com/nis/web/dao/SysLogDao.xml new file mode 100644 index 0000000..e251c47 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysLogDao.xml @@ -0,0 +1,62 @@ + + + + + + + + + INSERT INTO sys_log( + type, + title, + create_by, + create_date, + remote_addr, + user_agent, + request_uri, + method, + state, + consumer_time, + params, + exception + ) VALUES ( + #{type}, + #{title}, + #{createBy}, + #{createDate}, + #{remoteAddr}, + #{userAgent}, + #{requestUri}, + #{method}, + #{state}, + #{consumerTime}, + #{params}, + #{exception} + ) + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysMenuDao.java b/src/main/java/com/nis/web/dao/SysMenuDao.java new file mode 100644 index 0000000..3e90c6d --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysMenuDao.java @@ -0,0 +1,23 @@ +package com.nis.web.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.SysMenu; + +@MyBatisDao +public interface SysMenuDao extends CrudDao{ + + + + + List findSysMenuByUserId(@Param("userId") Long userId); + + List findByParentIdsLike(SysMenu m); + + void updateParentIds(SysMenu e); + + void updateSort(SysMenu menu); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysMenuDao.xml b/src/main/java/com/nis/web/dao/SysMenuDao.xml new file mode 100644 index 0000000..029537a --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysMenuDao.xml @@ -0,0 +1,154 @@ + + + + + + a.id, + a.parent_id AS "parent.id", + a.parent_ids, + a.name, + a.href, + a.target, + a.icon, + a.sort, + a.is_show, + a.permission, + a.remarks, + a.create_by AS "createBy.id", + a.create_date, + a.update_by AS "updateBy.id", + a.update_date, + a.del_flag, + a.quick_action, + a.menu_bg, + p.name AS "parent.name" + + + + LEFT JOIN sys_menu p ON p.id = a.parent_id + + + + + + + + + + + + + + INSERT INTO sys_menu( + parent_id, + parent_ids, + name, + href, + target, + icon, + sort, + is_show, + permission, + create_by, + create_date, + update_by, + update_date, + remarks, + del_flag + ) VALUES ( + #{parent.id}, + #{parentIds}, + #{name}, + #{href}, + #{target}, + #{icon}, + #{sort}, + #{isShow}, + #{permission}, + #{createBy.id}, + #{createDate}, + #{updateBy.id}, + #{updateDate}, + #{remarks}, + #{delFlag} + ) + + + + UPDATE sys_menu SET + parent_id = #{parent.id}, + parent_ids = #{parentIds}, + name = #{name}, + href = #{href}, + target = #{target}, + icon = #{icon}, + sort = #{sort}, + is_show = #{isShow}, + permission = #{permission}, + update_by = #{updateBy.id}, + update_date = #{updateDate}, + remarks = #{remarks} + WHERE id = #{id} + + + + + + UPDATE sys_menu SET + parent_id = #{parent.id}, + parent_ids = #{parentIds} + WHERE id = #{id} + + + + UPDATE sys_menu SET + sort = #{sort} + WHERE id = #{id} + + + + UPDATE sys_menu SET + del_flag = #{DEL_FLAG_DELETE} + WHERE id = #{id} OR parent_ids LIKE + '%,'||#{id}||',%' + '%,'+#{id}+',%' + CONCAT('%,', #{id}, ',%') + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysOfficeDao.java b/src/main/java/com/nis/web/dao/SysOfficeDao.java new file mode 100644 index 0000000..b357bbe --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysOfficeDao.java @@ -0,0 +1,32 @@ +package com.nis.web.dao; + + +import java.util.List; +import java.util.Map; + +import com.nis.domain.SysOffice; + +@MyBatisDao +public interface SysOfficeDao extends TreeDao { + int deleteByPrimaryKey(Integer id); + + int insert(SysOffice record); + + int insertSelective(SysOffice record); + + SysOffice selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(SysOffice record); + + int updateByPrimaryKey(SysOffice record); + + List selectSysOffice(SysOffice sysOffice); + + List selectLowerDeptement(Map hmap); + + List selectOfficeForDeptment(Map map); + + List selectOfficeForLetter(Map hmap); + + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysOfficeDao.xml b/src/main/java/com/nis/web/dao/SysOfficeDao.xml new file mode 100644 index 0000000..0f8080f --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysOfficeDao.xml @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, parent_id, parent_ids, name, en_name, sort, area_id, code, type, grade, job_type, address, + zip_code, master, phone, fax, email, USEABLE, PRIMARY_PERSON, DEPUTY_PERSON, remarks, + del_flag, create_time + + + + + + + + + + + + + + + + + + a.id, + a.parent_id AS "parent.id", + a.parent_ids AS "parentIds", + a.area_id AS "area.id", + a.code, + a.name, + a.sort, + a.type, + a.grade, + a.job_type, + a.address, + a.zip_code, + a.master, + a.phone, + a.fax, + a.email, + a.remarks, + a.del_flag, + a.useable AS useable, + a.primary_person AS "primaryPerson.id", + a.deputy_person AS "deputyPerson.id", + p.name AS "parent.name", + ar.name AS "area.name", + ar.parent_ids AS "area.parentIds", + pp.name AS "primaryPerson.name", + dp.name AS "deputyPerson.name" + + + + LEFT JOIN sys_office p ON p.id = a.parent_id + LEFT JOIN sys_area ar ON ar.id = a.area_id + LEFT JOIN SYS_USER pp ON pp.id = a.primary_person + LEFT JOIN SYS_USER dp ON dp.id = a.deputy_person + + + + + + + + + + + + + + INSERT INTO sys_office( + parent_id, + parent_ids, + area_id, + code, + name, + sort, + type, + grade, + job_type, + address, + zip_code, + master, + phone, + fax, + email, + remarks, + del_flag, + useable, + primary_person, + deputy_person, + create_time + ) VALUES ( + #{parent.id}, + #{parentIds}, + #{area.id}, + #{code}, + #{name}, + #{sort}, + #{type}, + #{grade}, + #{jobType}, + #{address}, + #{zipCode}, + #{master}, + #{phone}, + #{fax}, + #{email}, + #{remarks}, + #{delFlag}, + #{useable}, + #{primaryPerson.id}, + #{deputyPerson.id}, + #{createTime} + ) + + + + UPDATE sys_office SET + parent_id = #{parent.id}, + parent_ids = #{parentIds} + WHERE id = #{id} + + + + + UPDATE sys_office SET + parent_id = #{parent.id}, + parent_ids = #{parentIds}, + area_id = #{area.id}, + code = #{code}, + name = #{name}, + type = #{type}, + grade = #{grade}, + job_type = #{jobType}, + address = #{address}, + zip_code = #{zipCode}, + master = #{master}, + phone = #{phone}, + fax = #{fax}, + email = #{email}, + remarks = #{remarks}, + useable=#{useable}, + primary_person=#{primaryPerson.id}, + deputy_person=#{deputyPerson.id} + WHERE id = #{id} + + + + + UPDATE sys_office SET + del_flag = #{DEL_FLAG_DELETE} + WHERE id = #{id} OR parent_ids LIKE + '%,'||#{id}||',%' + '%,'+#{id}+',%' + CONCAT('%,', #{id}, ',%') + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysRoleDao.java b/src/main/java/com/nis/web/dao/SysRoleDao.java new file mode 100644 index 0000000..e696f97 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysRoleDao.java @@ -0,0 +1,18 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +@MyBatisDao +public interface SysRoleDao extends CrudDao{ + + SysRole getByName(SysRole r); + + void insertRoleMenu(SysRole role); + + void deleteRoleMenu(SysRole role); + + List findUserByRole(SysRole role); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysRoleDao.xml b/src/main/java/com/nis/web/dao/SysRoleDao.xml new file mode 100644 index 0000000..9367849 --- /dev/null +++ b/src/main/java/com/nis/web/dao/SysRoleDao.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + r.ID, r.NAME, r.ROLE_TYPE, r.DATA_SCOPE, r.REMARK, r.STATUS, r.CREATE_TIME + + + + + + + + + + + + + + + + + + + INSERT INTO sys_role( + name, + role_type, + data_scope, + create_time, + remark, + status + ) VALUES ( + #{name}, + #{roleType}, + #{dataScope}, + #{createTime}, + #{remark}, + #{status} + ) + + + + UPDATE sys_role SET + name = #{name}, + role_type = #{roleType}, + data_scope = #{dataScope}, + remark = #{remark} + WHERE id = #{id} + + + + INSERT INTO sys_privilege( + privilege_master, + privilege_master_value, + privilege_access, + privilege_access_value, + privilege_operation) + + SELECT 'ROLE',#{id},'1000',#{menu.id},1 + + FROM dual + + + + + + DELETE FROM sys_privilege WHERE privilege_master='ROLE' and privilege_master_value = #{id} + + + + UPDATE sys_role SET + status = #{DEL_FLAG_DELETE} + WHERE id = #{id} + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SystemFunStatusDao.java b/src/main/java/com/nis/web/dao/SystemFunStatusDao.java new file mode 100644 index 0000000..9b5e30f --- /dev/null +++ b/src/main/java/com/nis/web/dao/SystemFunStatusDao.java @@ -0,0 +1,10 @@ +package com.nis.web.dao; + +import com.nis.domain.restful.SystemFunStatus; + +@MyBatisDao +public interface SystemFunStatusDao extends CrudDao { + + int insert(SystemFunStatus record); + int update(SystemFunStatus record); +} diff --git a/src/main/java/com/nis/web/dao/SystemFunStatusDao.xml b/src/main/java/com/nis/web/dao/SystemFunStatusDao.xml new file mode 100644 index 0000000..c3f180e --- /dev/null +++ b/src/main/java/com/nis/web/dao/SystemFunStatusDao.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + insert into SYSTEM_FUN_STATUS + + ID, + FUNCTION, + BACK_DATA, + EFFECTIVE_RANGE, + ACTIVE_SYS, + IS_VALID, + OP_TIME, + + + #{id,jdbcType=BIGINT}, + #{function,jdbcType=BIGINT}, + #{backData,jdbcType=BIGINT}, + #{effectiveRange,jdbcType=VARCHAR}, + #{activeSys,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER}, + #{opTime,jdbcType=TIMESTAMP}, + + + + + + update SYSTEM_FUN_STATUS + + FUNCTION = #{function,jdbcType=BIGINT}, + BACK_DATA = #{backData,jdbcType=BIGINT}, + EFFECTIVE_RANGE = #{effectiveRange,jdbcType=VARCHAR}, + ACTIVE_SYS = #{activeSys,jdbcType=INTEGER}, + IS_VALID = #{isValid,jdbcType=INTEGER}, + OP_TIME = #{opTime,jdbcType=TIMESTAMP}, + + where ID = #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/TreeDao.java b/src/main/java/com/nis/web/dao/TreeDao.java new file mode 100644 index 0000000..ad9ebbb --- /dev/null +++ b/src/main/java/com/nis/web/dao/TreeDao.java @@ -0,0 +1,29 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.TreeEntity; + +/** + * DAO支持类实现 + * @author ThinkGem + * @version 2014-05-16 + * @param + */ +public interface TreeDao> extends CrudDao { + + /** + * 找到所有子节点 + * @param entity + * @return + */ + public List findByParentIdsLike(T entity); + + /** + * 更新所有父节点字段 + * @param entity + * @return + */ + public int updateParentIds(T entity); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/UserDao.java b/src/main/java/com/nis/web/dao/UserDao.java new file mode 100644 index 0000000..45089a2 --- /dev/null +++ b/src/main/java/com/nis/web/dao/UserDao.java @@ -0,0 +1,69 @@ +package com.nis.web.dao; + + + +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.SysUser; + +@MyBatisDao +public interface UserDao extends CrudDao { + + /** + * 通过主键ID获取相关用户,不包含密码 + * @param id + * @return + */ + SysUser getUserById(@Param("id") Long id); + + /** + * 通过登录账户获取相关用户,不包含密码 + * @param loginName + * @return + */ + SysUser getUserByLoginName(@Param("loginName") String loginName); + + + + /** + * 删除用户角色关联数据 + * @param user id + * @return + */ + public int deleteUserRole(Long id); + + + /** + * 查询用户附带关联:部门、角色 + * @param user + * @return + */ + SysUser getUserWithRelation(SysUser user); + + + + void insertUserRole(SysUser user); + + public int deleteUserOffice(Long id); + + void insertUserOffice(SysUser user); + + List findUserByRoleId(Long id); + + List findUserByOfficeId(Long id); + + void removeUserInRole(@Param("userId") Long userId, @Param("roleId") Long roleId); + + void updateUserInfo(SysUser user); + + void updatePasswordById(SysUser user); + + List findDeptLeader(Integer DeptementId); + + int officeIsExistOfCompany(@Param("officeId") Long officeId, @Param("companyId") Long companyId); + + +} diff --git a/src/main/java/com/nis/web/dao/UserDao.xml b/src/main/java/com/nis/web/dao/UserDao.xml new file mode 100644 index 0000000..8e57394 --- /dev/null +++ b/src/main/java/com/nis/web/dao/UserDao.xml @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + u.id AS user_id, + u.photo, + u.login_id, + u.name AS user_name, + u.identity, + u.password, + u.email, + u.create_time AS user_create_time, + u.status AS user_status, + u.company_id AS "company.id", + c.name AS "company.name", + c.parent_id AS "company.parent.id", + c.parent_ids AS "company.parentIds", + c.type AS "company.type", + c.grade AS "company.grade", + c.job_type AS "company.job_type", + u.office_id AS "office.id", + o.name AS "office.name", + o.parent_id AS "office.parent.id", + o.parent_ids AS "office.parentIds", + o.type AS "office.type", + o.grade AS "office.grade", + o.job_type AS "office.job_type", + u.entity_id AS "entity.id", + e.name AS "entity.name", + e.parent_id AS "entity.parent.id", + e.parent_ids AS "entity.parentIds", + e.type AS "entity.type", + e.grade AS "entity.grade", + e.job_type AS "entity.job_type", + r.id AS role_id, + r.name AS role_name, + r.data_scope, + r.remark AS role_desc, + r.status AS role_status, + r.create_time AS role_create_time + + + + LEFT JOIN sys_office c ON c.id = u.company_id AND c.useable=1 + LEFT JOIN sys_office e ON e.id=u.entity_id AND e.useable=1 + LEFT JOIN sys_office o ON o.id=u.office_id AND o.useable=1 + LEFT JOIN sys_inter_user_role ir ON u.id=ir.user_id + LEFT JOIN sys_role r ON r.id=ir.role_id AND r.status=1 + + + + + + + + + + + + insert into sys_user(LOGIN_ID,PHOTO,NAME,IDENTITY,EMAIL,PASSWORD,CREATE_TIME,STATUS,COMPANY_ID,ENTITY_ID,OFFICE_ID) + values(#{loginId},#{photo},#{name},#{identity},#{email},#{password},#{createTime},#{status},#{company.id},#{entity.id},#{office.id}) + + + + + UPDATE sys_user SET + login_id= #{loginId}, + password = #{password}, + name = #{name}, + identity = #{identity}, + photo = #{photo}, + email = #{email}, + company_id = #{company.id}, + entity_id = #{entity.id}, + office_id = #{office.id} + WHERE id = #{id} + + + + + + + INSERT INTO sys_inter_user_role(role_id, user_id) + + SELECT #{role.id},#{id} + + FROM dual + + + + + + + INSERT INTO sys_inter_user_office(office_id, user_id) + + SELECT #{office.id},#{id} + + FROM dual + + + + + + + DELETE FROM sys_inter_user_role WHERE user_id = #{id} + + + + + DELETE FROM sys_inter_user_role WHERE user_id = #{userId} and role_id = #{roleId} + + + + + + + DELETE FROM sys_inter_user_office WHERE user_id = #{id} + + + + + UPDATE sys_user SET + status = #{DEL_FLAG_DELETE} + WHERE id = #{id} + + + + + UPDATE sys_user SET + email = #{email}, + photo = #{photo} + WHERE id = #{id} + + + + + UPDATE sys_user SET + password = #{password} + WHERE id = #{id} + + + + + + + + + diff --git a/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.java b/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.java new file mode 100644 index 0000000..e51c15b --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.java @@ -0,0 +1,20 @@ +package com.nis.web.dao.jk; + +import com.nis.domain.restful.jk.JkDmbCk; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +/** + * + * @ClassName: DmbCkDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:03:33 + * @version V1.0 + */ +@MyBatisDao +public interface JkDmbCkDao extends CrudDao{ + int delete(long id); + int insert(JkDmbCk record); + int update(JkDmbCk record); + int updateValid(JkDmbCk record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.xml b/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.xml new file mode 100644 index 0000000..a4eaefd --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkDmbCkDao.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + G_ID, GJ_CK_ID,SF_SX,SX_FW,CK_MC,CK_WZ,CK_NO_RAW,ISP,DD + + + + delete from DMB_CK + where GJ_CK_ID = #{gjCkId,jdbcType=BIGINT} + + + + insert into DMB_CK + + + GJ_CK_ID , + + + SF_SX , + + + SX_FW , + + + CK_MC , + + + CK_WZ , + + + + CK_NO_RAW , + + + ISP, + + + DD, + + + + + #{gjCkId,jdbcType=BIGINT}, + + + #{sfSx,jdbcType=BIGINT}, + + + + #{sxFw,jdbcType=VARCHAR}, + + + #{ckMc,jdbcType=VARCHAR}, + + + #{ckWz,jdbcType=BIGINT}, + + + + #{ckNoRaw,jdbcType=VARCHAR}, + + + #{isp,jdbcType=BIGINT}, + + + #{dd,jdbcType=BIGINT}, + + + + + update DMB_CK set SF_SX = #{sfSx,jdbcType=BIGINT} where GJ_CK_ID = #{gjCkId,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkFdZbDao.java b/src/main/java/com/nis/web/dao/jk/JkFdZbDao.java new file mode 100644 index 0000000..24c9f45 --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFdZbDao.java @@ -0,0 +1,19 @@ +package com.nis.web.dao.jk; + +import com.nis.domain.restful.jk.JkFdZb; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +/** + * + * @ClassName: JkFdZbDao.java + * @Description: TODO + * @author (ddm) + * @date 2016年10月19日 下午19:03:33 + * @version V1.0 + */ +@MyBatisDao +public interface JkFdZbDao extends CrudDao{ + int delete(long id); + int insert(JkFdZb record); + int update(JkFdZb record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkFdZbDao.xml b/src/main/java/com/nis/web/dao/jk/JkFdZbDao.xml new file mode 100644 index 0000000..bd3b7ef --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFdZbDao.xml @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + G_ID,ZB_ID,FD_FS,SF_FD,JK_IP,JK_YM,ISP_RAW,LAST_UPDATE,SX_FW + + + + delete from JK_FD_ZB_FULL + where ZB_ID = #{zbId,jdbcType=BIGINT} + + + insert into JK_FD_ZB_FULL ( + zb_Id + ,fd_Fs + ,sf_Fd + ,jk_Ip + ,jk_Ym + ,isp_Raw + ,LAST_UPDATE + ,sx_Fw + + + ) + values ( + #{zbId,jdbcType=BIGINT}, + #{fdFs,jdbcType=BIGINT}, + #{sfFd,jdbcType=BIGINT}, + #{jkIp,jdbcType=VARCHAR}, + #{jkYm,jdbcType=BIGINT}, + #{ispRaw,jdbcType=VARCHAR}, + #{lastUpdate,jdbcType=VARCHAR}, + #{sxFw,jdbcType=VARCHAR} + ) + + + + update JK_FD_ZB_FULL + + + sf_Fd=#{sfFd,jdbcType=BIGINT}, + + + LAST_UPDATE=#{lastUpdate,jdbcType=BIGINT}, + + + + where ZB_ID = #{zbId,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.java b/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.java new file mode 100644 index 0000000..24e25ee --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.java @@ -0,0 +1,20 @@ +package com.nis.web.dao.jk; + +import com.nis.domain.restful.jk.JkFfjInfo; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +/** + * + * @ClassName: JkFfjDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:01:09 + * @version V1.0 + */ +@MyBatisDao +public interface JkFfjInfoDao extends CrudDao{ + int delete(long id); + int insert(JkFfjInfo record); + int update(JkFfjInfo record); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.xml b/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.xml new file mode 100644 index 0000000..b14f144 --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFfjInfoDao.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + G_ID, FFJ_ID, FFJ_MC, FFJ_IP, FFJ_JS, KG_FW, SF_SX, SX_FW + + + + + + delete from JK_FFJ + where FFJ_ID = #{ffjId,jdbcType=BIGINT} + + + + insert into JK_FFJ (FFJ_ID, FFJ_MC, FFJ_IP, FFJ_JS, KG_FW, SF_SX, SX_FW) + values (#{ffjId,jdbcType=BIGINT}, + #{ffjMc,jdbcType=VARCHAR}, #{ffjIp,jdbcType=VARCHAR}, + #{ffjJs,jdbcType=BIGINT}, #{kgFw,jdbcType=BIGINT}, #{sfSx,jdbcType=BIGINT}, + #{sxFw,jdbcType=VARCHAR} + ) + + + + update JK_FFJ + + SF_SX = #{sfSx,jdbcType=BIGINT}, + + where FFJ_ID = #{ffjId,jdbcType=BIGINT} + + + diff --git a/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.java b/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.java new file mode 100644 index 0000000..e354476 --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.java @@ -0,0 +1,21 @@ +package com.nis.web.dao.jk; + +import com.nis.domain.restful.jk.JkFwqInfo; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +/** + * + * @ClassName: JkFfjDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:01:09 + * @version V1.0 + */ +@MyBatisDao +public interface JkFwqInfoDao extends CrudDao{ + + int insert(JkFwqInfo record); + + int update(JkFwqInfo record); + +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.xml b/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.xml new file mode 100644 index 0000000..38ba109 --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkFwqInfoDao.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + G_ID, FWQ_ID, FWQ_MC, FWQ_IP, SF_SX, SX_FW + + + + insert into JK_FWQ (FWQ_ID, FWQ_MC, FWQ_IP, SF_SX, SX_FW) + values (#{fwqId,jdbcType=BIGINT}, + #{fwqMc,jdbcType=VARCHAR}, #{fwqIp,jdbcType=VARCHAR}, + #{sfSx,jdbcType=BIGINT}, #{sxFw,jdbcType=VARCHAR} + ) + + + + update JK_FWQ + + SF_SX = #{sfSx,jdbcType=BIGINT}, + + where FWQ_ID = #{fwqId,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkLyqDao.java b/src/main/java/com/nis/web/dao/jk/JkLyqDao.java new file mode 100644 index 0000000..eaacf8c --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkLyqDao.java @@ -0,0 +1,21 @@ +package com.nis.web.dao.jk; + +import com.nis.domain.restful.jk.JkDmbCk; +import com.nis.domain.restful.jk.JkLyq; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +/** + * + * @ClassName: DmbCkDao.java + * @Description: TODO + * @author (dell) + * @date 2016年9月9日 上午10:03:33 + * @version V1.0 + */ +@MyBatisDao +public interface JkLyqDao extends CrudDao{ + int delete(long id); + int insert(JkLyq record); + int update(JkLyq record); + int updateValid(JkLyq record); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/jk/JkLyqDao.xml b/src/main/java/com/nis/web/dao/jk/JkLyqDao.xml new file mode 100644 index 0000000..4fc0074 --- /dev/null +++ b/src/main/java/com/nis/web/dao/jk/JkLyqDao.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + G_ID, LYQ_ID,LYQ_MC,FWQ_ID,KGFS,GJ_CK_ID,SF_SX,SX_FW ,FWQ_DK + + + + delete from JK_LYQ + where LYQ_ID = #{lyqId,jdbcType=BIGINT} + + + + + insert into JK_LYQ + + + LYQ_ID , + + + LYQ_MC , + + + FWQ_ID , + + + KGFS , + + + GJ_CK_ID , + + + SF_SX , + + + SX_FW , + + + + FWQ_DK , + + + + + #{lyqId,jdbcType=BIGINT}, + + + #{lyqMc,jdbcType=VARCHAR}, + + + #{fwqId,jdbcType=BIGINT}, + + + #{kgfs,jdbcType=BIGINT}, + + + #{gjCkId,jdbcType=BIGINT}, + + + #{sfSx,jdbcType=BIGINT}, + + + #{sxFw,jdbcType=VARCHAR}, + + + + #{fwqDk,jdbcType=BIGINT}, + + + + + update JK_LYQ set SF_SX = #{sfSx,jdbcType=BIGINT} where LYQ_ID = #{lyqId,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/security/CacheSessionDAO.java b/src/main/java/com/nis/web/security/CacheSessionDAO.java new file mode 100644 index 0000000..df64ed1 --- /dev/null +++ b/src/main/java/com/nis/web/security/CacheSessionDAO.java @@ -0,0 +1,173 @@ +package com.nis.web.security; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.shiro.session.Session; +import org.apache.shiro.session.UnknownSessionException; +import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.subject.support.DefaultSubjectContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.collect.Sets; +import com.nis.util.Configurations; +import com.nis.util.Constants; +import com.nis.util.DateUtils; +import com.nis.util.StringUtils; + + +/** + * 系统安全认证实现类 + * @author + * @version + */ +public class CacheSessionDAO extends EnterpriseCacheSessionDAO implements SessionDAO { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + public CacheSessionDAO() { + super(); + } + + @Override + protected void doUpdate(Session session) { + if (session == null || session.getId() == null) { + return; + } + + HttpServletRequest request = Servlets.getRequest(); + if (request != null){ + String uri = request.getServletPath(); + // 如果是静态文件,则不更新SESSION + if (Servlets.isStaticFile(uri)){ + return; + } + // 如果是视图文件,则不更新SESSION + if (StringUtils.startsWith(uri, Configurations.getStringProperty("web.view.prefix","/WEB-INF/views/")) + && StringUtils.endsWith(uri,Configurations.getStringProperty("web.view.suffix",".jsp"))){ + return; + } + // 手动控制不更新SESSION + String updateSession = request.getParameter("updateSession"); + if (Constants.FALSE.equals(updateSession) || Constants.NO.equals(updateSession)){ + return; + } + } + super.doUpdate(session); + logger.debug("update {} {}", session.getId(), request != null ? request.getRequestURI() : ""); + } + + @Override + protected void doDelete(Session session) { + if (session == null || session.getId() == null) { + return; + } + + super.doDelete(session); + logger.debug("delete {} ", session.getId()); + } + + @Override + protected Serializable doCreate(Session session) { + HttpServletRequest request = Servlets.getRequest(); + if (request != null){ + String uri = request.getServletPath(); + // 如果是静态文件,则不创建SESSION + if (Servlets.isStaticFile(uri)){ + return null; + } + } + super.doCreate(session); + logger.debug("doCreate {} {}", session, request != null ? request.getRequestURI() : ""); + return session.getId(); + } + + @Override + protected Session doReadSession(Serializable sessionId) { + return super.doReadSession(sessionId); + } + + @Override + public Session readSession(Serializable sessionId) throws UnknownSessionException { + try{ + Session s = null; + HttpServletRequest request = Servlets.getRequest(); + if (request != null){ + String uri = request.getServletPath(); + // 如果是静态文件,则不获取SESSION + if (Servlets.isStaticFile(uri)){ + return null; + } + s = (Session)request.getAttribute("session_"+sessionId); + } + if (s != null){ + return s; + } + + Session session = super.readSession(sessionId); + logger.debug("readSession {} {}", sessionId, request != null ? request.getRequestURI() : ""); + + if (request != null && session != null){ + request.setAttribute("session_"+sessionId, session); + } + + return session; + }catch (UnknownSessionException e) { + return null; + } + } + + /** + * 获取活动会话 + * @param includeLeave 是否包括离线(最后访问时间大于3分钟为离线会话) + * @return + */ + @Override + public Collection getActiveSessions(boolean includeLeave) { + return getActiveSessions(includeLeave, null, null); + } + + /** + * 获取活动会话 + * @param includeLeave 是否包括离线(最后访问时间大于3分钟为离线会话) + * @param principal 根据登录者对象获取活动会话 + * @param filterSession 不为空,则过滤掉(不包含)这个会话。 + * @return + */ + @Override + public Collection getActiveSessions(boolean includeLeave, Object principal, Session filterSession) { + // 如果包括离线,并无登录者条件。 + if (includeLeave && principal == null){ + return getActiveSessions(); + } + Set sessions = Sets.newHashSet(); + for (Session session : getActiveSessions()){ + boolean isActiveSession = false; + // 不包括离线并符合最后访问时间小于等于3分钟条件。 + if (includeLeave || DateUtils.pastMinutes(session.getLastAccessTime()) <= 3){ + isActiveSession = true; + } + // 符合登陆者条件。 + if (principal != null){ + PrincipalCollection pc = (PrincipalCollection)session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); + if (principal.toString().equals(pc != null ? pc.getPrimaryPrincipal().toString() : StringUtils.EMPTY)){ + isActiveSession = true; + } + } + // 过滤掉的SESSION + if (filterSession != null && filterSession.getId().equals(session.getId())){ + isActiveSession = false; + } + if (isActiveSession){ + sessions.add(session); + } + } + return sessions; + } + +} diff --git a/src/main/java/com/nis/web/security/FormAuthenticationFilter.java b/src/main/java/com/nis/web/security/FormAuthenticationFilter.java new file mode 100644 index 0000000..cbe2f0d --- /dev/null +++ b/src/main/java/com/nis/web/security/FormAuthenticationFilter.java @@ -0,0 +1,95 @@ +package com.nis.web.security; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.web.util.WebUtils; +import org.springframework.stereotype.Service; + +import com.nis.util.Constants; +import com.nis.util.IpUtil; +import com.nis.util.StringUtils; + + +@Service +public class FormAuthenticationFilter extends org.apache.shiro.web.filter.authc.FormAuthenticationFilter { + + + protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) { + String username = getUsername(request); + String password = getPassword(request); + if (password==null){ + password = ""; + } + boolean rememberMe = isRememberMe(request); + + String host =IpUtil.getIpAddr((HttpServletRequest)request); + String captcha = getCaptcha(request); + boolean mobile = isMobileLogin(request); + return new UsernamePasswordToken(username, password.toCharArray(), rememberMe, host, captcha, mobile); + } + + + protected String getCaptcha(ServletRequest request) { + return WebUtils.getCleanParam(request, Constants.DEFAULT_CAPTCHA_PARAM); + } + + + + protected boolean isMobileLogin(ServletRequest request) { + return WebUtils.isTrue(request, Constants.DEFAULT_MOBILE_PARAM); + } + + + + /** + * 登录成功之后跳转URL + */ + public String getSuccessUrl() { + return super.getSuccessUrl(); + } + + @Override + protected void issueSuccessRedirect(ServletRequest request, + ServletResponse response) throws Exception { +// Principal p = UserUtils.getPrincipal(); +// if (p != null && !p.isMobileLogin()){ + WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true); +// }else{ +// super.issueSuccessRedirect(request, response); +// } + } + + /** + * 登录失败调用事件 + */ + @Override + protected boolean onLoginFailure(AuthenticationToken token, + AuthenticationException e, ServletRequest request, ServletResponse response) { + String className = e.getClass().getName(), message = ""; + if (IncorrectCredentialsException.class.getName().equals(className) + || UnknownAccountException.class.getName().equals(className)){ + message = "用户或密码错误, 请重试."; + } + else if (e.getMessage() != null && StringUtils.startsWith(e.getMessage(), "msg:")){ + message = StringUtils.replace(e.getMessage(), "msg:", ""); + } + + else{ + message = "系统出现点问题,请稍后再试!"; + e.printStackTrace(); // 输出到控制台 + } + request.setAttribute(getFailureKeyAttribute(), className); + request.setAttribute(Constants.DEFAULT_MESSAGE_PARAM, message); + return true; + } + + + + +} diff --git a/src/main/java/com/nis/web/security/IdGen.java b/src/main/java/com/nis/web/security/IdGen.java new file mode 100644 index 0000000..0ae2830 --- /dev/null +++ b/src/main/java/com/nis/web/security/IdGen.java @@ -0,0 +1,69 @@ +package com.nis.web.security; + +import java.io.Serializable; +import java.security.SecureRandom; +import java.util.UUID; + +import org.apache.shiro.session.Session; +import org.apache.shiro.session.mgt.eis.SessionIdGenerator; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import com.nis.util.Encodes; + +/** + * 封装各种生成唯一性ID算法的工具类. + * @author + * @version 2013-01-15 + */ +@Service +@Lazy(false) +public class IdGen implements SessionIdGenerator { + + private static SecureRandom random = new SecureRandom(); + + /** + * 封装JDK自带的UUID, 通过Random数字生成, 中间无-分割. + */ + public static String uuid() { + return UUID.randomUUID().toString().replaceAll("-", ""); + } + + /** + * 使用SecureRandom随机生成Long. + */ + public static long randomLong() { + return Math.abs(random.nextLong()); + } + + /** + * 基于Base62编码的SecureRandom随机生成bytes. + */ + public static String randomBase62(int length) { + byte[] randomBytes = new byte[length]; + random.nextBytes(randomBytes); + return Encodes.encodeBase62(randomBytes); + } + + /** + * Activiti ID 生成 + */ + public String getNextId() { + return IdGen.uuid(); + } + + @Override + public Serializable generateId(Session session) { + return IdGen.uuid(); + } + + public static void main(String[] args) { + System.out.println(IdGen.uuid()); + System.out.println(IdGen.uuid().length()); + System.out.println(new IdGen().getNextId()); + for (int i=0; i<1000; i++){ + System.out.println(IdGen.randomLong() + " " + IdGen.randomBase62(5)); + } + } + +} diff --git a/src/main/java/com/nis/web/security/Servlets.java b/src/main/java/com/nis/web/security/Servlets.java new file mode 100644 index 0000000..7c3aefb --- /dev/null +++ b/src/main/java/com/nis/web/security/Servlets.java @@ -0,0 +1,262 @@ +/** + * Copyright (c) 2005-2012 springside.org.cn + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ +package com.nis.web.security; + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.StringTokenizer; +import java.util.TreeMap; + +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.Validate; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.google.common.net.HttpHeaders; +import com.nis.util.Configurations; +import com.nis.util.Encodes; +import com.nis.util.StringUtils; +import com.nis.web.security.SystemAuthorizingRealm.Principal; + +/** + * Http与Servlet工具类. + * @author calvin/thinkgem + * @version 2014-8-19 + */ +public class Servlets { + + // -- 常用数值定义 --// + public static final long ONE_YEAR_SECONDS = 60 * 60 * 24 * 365; + + // 静态文件后缀 + private final static String[] staticFiles = StringUtils.split(Configurations.getStringProperty("web.staticFile",""), ","); + + + + // 动态映射URL后缀 + private final static String urlSuffix = Configurations.getStringProperty("urlSuffix", ".jsp"); + + /** + * 设置客户端缓存过期时间 的Header. + */ + public static void setExpiresHeader(HttpServletResponse response, long expiresSeconds) { + // Http 1.0 header, set a fix expires date. + response.setDateHeader(HttpHeaders.EXPIRES, System.currentTimeMillis() + expiresSeconds * 1000); + // Http 1.1 header, set a time after now. + response.setHeader(HttpHeaders.CACHE_CONTROL, "private, max-age=" + expiresSeconds); + } + + /** + * 设置禁止客户端缓存的Header. + */ + public static void setNoCacheHeader(HttpServletResponse response) { + // Http 1.0 header + response.setDateHeader(HttpHeaders.EXPIRES, 1L); + response.addHeader(HttpHeaders.PRAGMA, "no-cache"); + // Http 1.1 header + response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, max-age=0"); + } + + /** + * 设置LastModified Header. + */ + public static void setLastModifiedHeader(HttpServletResponse response, long lastModifiedDate) { + response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModifiedDate); + } + + /** + * 设置Etag Header. + */ + public static void setEtag(HttpServletResponse response, String etag) { + response.setHeader(HttpHeaders.ETAG, etag); + } + + /** + * 根据浏览器If-Modified-Since Header, 计算文件是否已被修改. + * + * 如果无修改, checkIfModify返回false ,设置304 not modify status. + * + * @param lastModified 内容的最后修改时间. + */ + public static boolean checkIfModifiedSince(HttpServletRequest request, HttpServletResponse response, + long lastModified) { + long ifModifiedSince = request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE); + if ((ifModifiedSince != -1) && (lastModified < ifModifiedSince + 1000)) { + response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); + return false; + } + return true; + } + + /** + * 根据浏览器 If-None-Match Header, 计算Etag是否已无效. + * + * 如果Etag有效, checkIfNoneMatch返回false, 设置304 not modify status. + * + * @param etag 内容的ETag. + */ + public static boolean checkIfNoneMatchEtag(HttpServletRequest request, HttpServletResponse response, String etag) { + String headerValue = request.getHeader(HttpHeaders.IF_NONE_MATCH); + if (headerValue != null) { + boolean conditionSatisfied = false; + if (!"*".equals(headerValue)) { + StringTokenizer commaTokenizer = new StringTokenizer(headerValue, ","); + + while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) { + String currentToken = commaTokenizer.nextToken(); + if (currentToken.trim().equals(etag)) { + conditionSatisfied = true; + } + } + } else { + conditionSatisfied = true; + } + + if (conditionSatisfied) { + response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); + response.setHeader(HttpHeaders.ETAG, etag); + return false; + } + } + return true; + } + + /** + * 设置让浏览器弹出下载对话框的Header. + * + * @param fileName 下载后的文件名. + */ + public static void setFileDownloadHeader(HttpServletResponse response, String fileName) { + try { + // 中文文件名支持 + String encodedfileName = new String(fileName.getBytes(), "ISO8859-1"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedfileName + "\""); + } catch (UnsupportedEncodingException e) { + e.getMessage(); + } + } + + /** + * 取得带相同前缀的Request Parameters, copy from spring WebUtils. + * + * 返回的结果的Parameter名已去除前缀. + */ + @SuppressWarnings("rawtypes") + public static Map getParametersStartingWith(ServletRequest request, String prefix) { + Validate.notNull(request, "Request must not be null"); + Enumeration paramNames = request.getParameterNames(); + Map params = new TreeMap(); + String pre = prefix; + if (pre == null) { + pre = ""; + } + while (paramNames != null && paramNames.hasMoreElements()) { + String paramName = (String) paramNames.nextElement(); + if ("".equals(pre) || paramName.startsWith(pre)) { + String unprefixed = paramName.substring(pre.length()); + String[] values = request.getParameterValues(paramName); + if (values == null || values.length == 0) { + values = new String[]{}; + // Do nothing, no values found at all. + } else if (values.length > 1) { + params.put(unprefixed, values); + } else { + params.put(unprefixed, values[0]); + } + } + } + return params; + } + + /** + * 组合Parameters生成Query String的Parameter部分,并在paramter name上加上prefix. + * + */ + public static String encodeParameterStringWithPrefix(Map params, String prefix) { + StringBuilder queryStringBuilder = new StringBuilder(); + + String pre = prefix; + if (pre == null) { + pre = ""; + } + Iterator> it = params.entrySet().iterator(); + while (it.hasNext()) { + Entry entry = it.next(); + queryStringBuilder.append(pre).append(entry.getKey()).append("=").append(entry.getValue()); + if (it.hasNext()) { + queryStringBuilder.append("&"); + } + } + return queryStringBuilder.toString(); + } + + /** + * 客户端对Http Basic验证的 Header进行编码. + */ + public static String encodeHttpBasic(String userName, String password) { + String encode = userName + ":" + password; + return "Basic " + Encodes.encodeBase64(encode.getBytes()); + } + + /** + * 是否是Ajax异步请求 + * @param request + */ + public static boolean isAjaxRequest(HttpServletRequest request){ + + String accept = request.getHeader("accept"); + String xRequestedWith = request.getHeader("X-Requested-With"); + Principal principal = UserUtils.getPrincipal(); + + // 如果是异步请求或是手机端,则直接返回信息 + return ((accept != null && accept.indexOf("application/json") != -1 + || (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) + || (principal != null && principal.isMobileLogin()))); + } + + /** + * 获取当前请求对象 + * @return + */ + public static HttpServletRequest getRequest(){ + try{ + return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); + }catch(Exception e){ + return null; + } + } + + /** + * 判断访问URI是否是静态文件请求 + * @throws Exception + */ + public static boolean isStaticFile(String uri){ + if (staticFiles == null){ + try { + throw new Exception("检测到“app.properties”中没有配置“web.staticFile”属性。配置示例:\n#静态文件后缀\n" + +"web.staticFile=.css,.js,.png,.jpg,.gif,.jpeg,.bmp,.ico,.swf,.psd,.htc,.crx,.xpi,.exe,.ipa,.apk"); + } catch (Exception e) { + e.printStackTrace(); + } + } +// if ((StringUtils.startsWith(uri, "/static/") || StringUtils.endsWithAny(uri, sfs)) +// && !StringUtils.endsWithAny(uri, ".jsp") && !StringUtils.endsWithAny(uri, ".java")){ +// return true; +// } + if (StringUtils.endsWithAny(uri, staticFiles) && !StringUtils.endsWithAny(uri, urlSuffix) + && !StringUtils.endsWithAny(uri, ".jsp") && !StringUtils.endsWithAny(uri, ".java")){ + return true; + } + return false; + } +} diff --git a/src/main/java/com/nis/web/security/SessionDAO.java b/src/main/java/com/nis/web/security/SessionDAO.java new file mode 100644 index 0000000..5613a76 --- /dev/null +++ b/src/main/java/com/nis/web/security/SessionDAO.java @@ -0,0 +1,25 @@ +package com.nis.web.security; + +import java.util.Collection; + +import org.apache.shiro.session.Session; + +public interface SessionDAO extends org.apache.shiro.session.mgt.eis.SessionDAO { + + /** + * 获取活动会话 + * @param includeLeave 是否包括离线(最后访问时间大于3分钟为离线会话) + * @return + */ + public Collection getActiveSessions(boolean includeLeave); + + /** + * 获取活动会话 + * @param includeLeave 是否包括离线(最后访问时间大于3分钟为离线会话) + * @param principal 根据登录者对象获取活动会话 + * @param filterSession 不为空,则过滤掉(不包含)这个会话。 + * @return + */ + public Collection getActiveSessions(boolean includeLeave, Object principal, Session filterSession); + +} diff --git a/src/main/java/com/nis/web/security/SessionManager.java b/src/main/java/com/nis/web/security/SessionManager.java new file mode 100644 index 0000000..32b5d8f --- /dev/null +++ b/src/main/java/com/nis/web/security/SessionManager.java @@ -0,0 +1,208 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.web.security; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Date; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.session.InvalidSessionException; +import org.apache.shiro.session.Session; +import org.apache.shiro.session.UnknownSessionException; +import org.apache.shiro.session.mgt.SessionContext; +import org.apache.shiro.session.mgt.SessionKey; +import org.apache.shiro.session.mgt.SimpleSession; +import org.apache.shiro.web.servlet.Cookie; +import org.apache.shiro.web.servlet.ShiroHttpServletRequest; +import org.apache.shiro.web.servlet.SimpleCookie; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.apache.shiro.web.util.WebUtils; + +import com.nis.util.StringUtils; + + +/** + * 自定义WEB会话管理类 + * @author ThinkGem + * @version 2014-7-20 + */ +public class SessionManager extends DefaultWebSessionManager { + + public SessionManager() { + super(); + } + + @Override + protected Serializable getSessionId(ServletRequest request, ServletResponse response) { + // 如果参数中包含“__sid”参数,则使用此sid会话。 例如:http://localhost/project?__sid=xxx&__cookie=true + String sid = request.getParameter("__sid"); + if (StringUtils.isNotBlank(sid)) { + // 是否将sid保存到cookie,浏览器模式下使用此参数。 + if (WebUtils.isTrue(request, "__cookie")){ + HttpServletRequest rq = (HttpServletRequest)request; + HttpServletResponse rs = (HttpServletResponse)response; + Cookie template = getSessionIdCookie(); + Cookie cookie = new SimpleCookie(template); + cookie.setValue(sid); cookie.saveTo(rq, rs); + } + // 设置当前session状态 + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, + ShiroHttpServletRequest.URL_SESSION_ID_SOURCE); // session来源与url + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, sid); + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE); + return sid; + }else{ + return super.getSessionId(request, response); + } + } + + @Override + public void validateSessions() { + super.validateSessions(); + } + + protected Session retrieveSession(SessionKey sessionKey) { + try{ + return super.retrieveSession(sessionKey); + }catch (UnknownSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public Date getStartTimestamp(SessionKey key) { + try{ + return super.getStartTimestamp(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public Date getLastAccessTime(SessionKey key) { + try{ + return super.getLastAccessTime(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public long getTimeout(SessionKey key){ + try{ + return super.getTimeout(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return 0; + } + } + + public void setTimeout(SessionKey key, long maxIdleTimeInMillis) { + try{ + super.setTimeout(key, maxIdleTimeInMillis); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + } + } + + public void touch(SessionKey key) { + try{ + super.touch(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + } + } + + public String getHost(SessionKey key) { + try{ + return super.getHost(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public Collection getAttributeKeys(SessionKey key) { + try{ + return super.getAttributeKeys(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public Object getAttribute(SessionKey sessionKey, Object attributeKey) { + try{ + return super.getAttribute(sessionKey, attributeKey); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public void setAttribute(SessionKey sessionKey, Object attributeKey, Object value) { + try{ + super.setAttribute(sessionKey, attributeKey, value); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + } + } + + public Object removeAttribute(SessionKey sessionKey, Object attributeKey) { + try{ + return super.removeAttribute(sessionKey, attributeKey); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + return null; + } + } + + public void stop(SessionKey key) { + try{ + super.stop(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + } + } + + public void checkValid(SessionKey key) { + try{ + super.checkValid(key); + }catch (InvalidSessionException e) { + // 获取不到SESSION不抛出异常 + } + } + + @Override + protected Session doCreateSession(SessionContext context) { + try{ + return super.doCreateSession(context); + }catch (IllegalStateException e) { + return null; + } + } + + @Override + protected Session newSessionInstance(SessionContext context) { + Session session = super.newSessionInstance(context); + session.setTimeout(getGlobalSessionTimeout()); + return session; + } + + @Override + public Session start(SessionContext context) { + try{ + return super.start(context); + }catch (NullPointerException e) { + SimpleSession session = new SimpleSession(); + session.setId(0); + return session; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/security/SystemAuthorizingRealm.java b/src/main/java/com/nis/web/security/SystemAuthorizingRealm.java new file mode 100644 index 0000000..e638b38 --- /dev/null +++ b/src/main/java/com/nis/web/security/SystemAuthorizingRealm.java @@ -0,0 +1,295 @@ +package com.nis.web.security; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authc.credential.DefaultPasswordService; +import org.apache.shiro.authc.credential.HashedCredentialsMatcher; +import org.apache.shiro.authc.credential.PasswordService; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.Permission; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.util.ByteSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.code.kaptcha.Constants; +import com.nis.domain.SysMenu; +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +import com.nis.util.Configurations; +import com.nis.util.Encodes; +import com.nis.util.LogUtils; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.util.TreeUtil; +import com.nis.web.service.SystemService; + + +/** + * 系统安全认证实现类 + * @author + * @version 2014-7-5 + */ +@Service +public class SystemAuthorizingRealm extends AuthorizingRealm { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private SystemService systemService; + + /** + * 认证回调函数, 登录时调用 + * Authentication 存放用户名、密码地方,身份认证 + */ + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) { + + UsernamePasswordToken token = (UsernamePasswordToken) authcToken; + + int activeSessionSize = systemService.getActiveSessions(false).size(); + + + if (logger.isDebugEnabled()){ + logger.debug("login submit, active session size: {}, username: {}", activeSessionSize, token.getUsername()); + } + + // 校验登录验证码 + if (UserUtils.isValidateCodeLogin(token.getUsername(), false, false)){ + + if (!UserUtils.validateCodeIsValid(token.getCaptcha())){ + throw new AuthenticationException("msg:验证码错误, 请重试."); + } + } + + // 校验用户名密码 + SysUser user = systemService.getUserByLoginName(token.getUsername()); + if (user != null) { + if (com.nis.util.Constants.NO.equals(user.getStatus())){ + throw new AuthenticationException("msg:该已帐号禁止登录."); + } + byte[] salt = Encodes.decodeHex(user.getPassword().substring(0,16)); + return new SimpleAuthenticationInfo(new Principal(user, token.isMobileLogin()), user.getPassword().substring(16), ByteSource.Util.bytes(salt), getName()); + } + return null; + } + + /** + * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用 + * Authorzation 授权,存放用户权限 + */ + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { + Principal principal = (Principal) getAvailablePrincipal(principals); + + // 获取当前已登录的用户 + if (!com.nis.util.Constants.TRUE.equals(Configurations.getStringProperty("user.multiAccountLogin","true"))){ + Collection sessions = systemService.getActiveSessions(true, principal, UserUtils.getSession()); + if (sessions.size() > 0){ + // 如果是登录进来的,则踢出已在线用户 + if (UserUtils.getSubject().isAuthenticated()){ + for (Session session : sessions){ + systemService.deleteSession(session); + } + } + // 记住我进来的,并且当前用户已登录,则退出当前用户提示信息。 + else{ + UserUtils.getSubject().logout(); + throw new AuthenticationException("msg:账号已在其它地方登录,请重新登录。"); + } + } + } + SysUser user = systemService.getUserByLoginName(principal.getLoginName()); + if (user != null) { + SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); + List list = UserUtils.getMenuList(); + if(!StringUtil.isEmpty(list)) { + for (SysMenu menu :list) { + if (!StringUtil.isBlank(menu.getPermission())) { + // 添加基于Permission的权限信息 + for (String permission : StringUtils.split(menu.getPermission(),",")){ + info.addStringPermission(permission); + } + } + + } + } + + // 添加用户权限 + info.addStringPermission("user"); + // 添加用户角色信息 + for (SysRole role : user.getUserRoleList()){ + info.addRole(role.getName()); + } + // 更新登录IP和时间,集成用户日志记录 + //systemService.updateUserLoginInfo(user); + // 记录登录日志 + LogUtils.saveLog(Servlets.getRequest(), "系统登录"); + return info; + } + return null; + + } + + @Override + protected void checkPermission(Permission permission, AuthorizationInfo info) { + authorizationValidate(permission); + super.checkPermission(permission, info); + } + + @Override + protected boolean[] isPermitted(List permissions, AuthorizationInfo info) { + if (permissions != null && !permissions.isEmpty()) { + for (Permission permission : permissions) { + authorizationValidate(permission); + } + } + return super.isPermitted(permissions, info); + } + + @Override + public boolean isPermitted(PrincipalCollection principals, Permission permission) { + authorizationValidate(permission); + return super.isPermitted(principals, permission); + } + + @Override + protected boolean isPermittedAll(Collection permissions, AuthorizationInfo info) { + if (permissions != null && !permissions.isEmpty()) { + for (Permission permission : permissions) { + authorizationValidate(permission); + } + } + return super.isPermittedAll(permissions, info); + } + + /** + * 授权验证方法 + * @param permission + */ + private void authorizationValidate(Permission permission){ + // 模块授权预留接口 + } + + /** + * 设定密码校验的Hash算法与迭代次数 + */ + @PostConstruct + public void initCredentialsMatcher() { + HashedCredentialsMatcher matcher = new HashedCredentialsMatcher(com.nis.util.Constants.HASH_ALGORITHM); + matcher.setHashIterations(com.nis.util.Constants.HASH_INTERATIONS); + setCredentialsMatcher(matcher); + } + +// /** +// * 清空用户关联权限认证,待下次使用时重新加载 +// */ +// public void clearCachedAuthorizationInfo(Principal principal) { +// SimplePrincipalCollection principals = new SimplePrincipalCollection(principal, getName()); +// clearCachedAuthorizationInfo(principals); +// } + + + /** + * 授权用户信息 + */ + public static class Principal implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 编号 + private String loginName; // 登录名 + private String name; // 姓名 + private boolean mobileLogin; // 是否手机登录 + private String email; + +// private Map cacheMap; + + public Principal(SysUser user, boolean mobileLogin) { + this.id = user.getId(); + this.loginName = user.getLoginId(); + this.name = user.getName(); + this.email = user.getEmail(); + this.mobileLogin = mobileLogin; + + } + + + + public String getEmail() { + return email; + } + + + + public void setEmail(String email) { + this.email = email; + } + + + + public Long getId() { + return id; + } + + + + public void setId(Long id) { + this.id = id; + } + + + + public String getLoginName() { + return loginName; + } + + public String getName() { + return name; + } + + public boolean isMobileLogin() { + return mobileLogin; + } + +// @JsonIgnore +// public Map getCacheMap() { +// if (cacheMap==null){ +// cacheMap = new HashMap(); +// } +// return cacheMap; +// } + + /** + * 获取SESSIONID + */ + public String getSessionid() { + try{ + return (String) UserUtils.getSession().getId(); + }catch (Exception e) { + return ""; + } + } + + @Override + public String toString() { + return String.valueOf(id); + } + + + + } +} diff --git a/src/main/java/com/nis/web/security/UserUtils.java b/src/main/java/com/nis/web/security/UserUtils.java new file mode 100644 index 0000000..77ac58e --- /dev/null +++ b/src/main/java/com/nis/web/security/UserUtils.java @@ -0,0 +1,428 @@ +package com.nis.web.security; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.UnavailableSecurityManagerException; +import org.apache.shiro.session.InvalidSessionException; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; + +import com.google.code.kaptcha.Constants; +import com.google.common.collect.Maps; +import com.nis.domain.SysArea; +import com.nis.domain.SysMenu; +import com.nis.domain.SysOffice; +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +import com.nis.util.CacheUtils; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.util.TreeUtil; +import com.nis.web.dao.SysAreaDao; +import com.nis.web.dao.SysMenuDao; +import com.nis.web.dao.SysOfficeDao; +import com.nis.web.dao.SysRoleDao; +import com.nis.web.dao.UserDao; +import com.nis.web.security.SystemAuthorizingRealm.Principal; +import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; + + +/** + * 用户工具类 + * @author darnell + * @version + */ +public class UserUtils { + + private static UserDao userDao = SpringContextHolder.getBean(UserDao.class); + private static SysOfficeDao officeDao = SpringContextHolder.getBean(SysOfficeDao.class); + private static SysRoleDao roleDao = SpringContextHolder.getBean(SysRoleDao.class); + private static SysMenuDao sysMenuDao = SpringContextHolder.getBean(SysMenuDao.class); + private static SysAreaDao areaDao = SpringContextHolder.getBean(SysAreaDao.class); + + + public static final String USER_CACHE = "userCache"; + public static final String USER_CACHE_ID_ = "id_"; + public static final String USER_CACHE_LOGIN_NAME_ = "ln"; + public static final String USER_CACHE_LIST_BY_OFFICE_ID_ = "oid_"; + + public static final String CACHE_ROLE_LIST = "roleList"; + public static final String CACHE_MENU_LIST = "menuList"; + public static final String CACHE_AREA_LIST = "areaList"; + public static final String CACHE_OFFICE_LIST = "officeList"; + public static final String CACHE_OFFICE_ALL_LIST = "officeAllList"; + public static final String CACHE_OFFICE_ALL_MAP = "officeAllMap"; + + + /** + * 根据ID获取用户 + * @param id + * @return 取不到返回null + */ + public static SysUser get(String id){ + SysUser user = (SysUser)CacheUtils.get(USER_CACHE, USER_CACHE_ID_ + id); + if (user == null){ + user = userDao.getUserWithRelation(new SysUser(Long.valueOf(id),null)); + if (user == null){ + return null; + } + CacheUtils.put(USER_CACHE, USER_CACHE_ID_ + user.getId(), user); + CacheUtils.put(USER_CACHE, USER_CACHE_LOGIN_NAME_ + user.getLoginId(), user); + } + return user; + } + + /** + * 根据登录名获取用户 + * @param loginName + * @return 取不到返回null + */ + public static SysUser getByLoginName(String loginName){ + SysUser user = (SysUser)CacheUtils.get(USER_CACHE, USER_CACHE_LOGIN_NAME_ + loginName); + if (user == null){ + user = userDao.getUserWithRelation(new SysUser(null,loginName)); + if (user == null){ + return null; + } + CacheUtils.put(USER_CACHE, USER_CACHE_ID_ + user.getId(), user); + CacheUtils.put(USER_CACHE, USER_CACHE_LOGIN_NAME_ + user.getLoginId(), user); + } + return user; + } + + /** + * 清除当前用户缓存 + */ + public static void clearCache(){ + removeCache(CACHE_ROLE_LIST); + removeCache(CACHE_MENU_LIST); + removeCache(CACHE_AREA_LIST); + removeCache(CACHE_OFFICE_LIST); + removeCache(CACHE_OFFICE_ALL_LIST); + UserUtils.clearCache(getUser()); + } + + /** + * 清除指定用户缓存 + * @param user + */ + public static void clearCache(SysUser user){ + CacheUtils.remove(USER_CACHE, USER_CACHE_ID_ + user.getId()); + CacheUtils.remove(USER_CACHE, USER_CACHE_LOGIN_NAME_ + user.getLoginId()); + CacheUtils.remove(USER_CACHE, USER_CACHE_LOGIN_NAME_ + user.getOldLoginId()); + if (user.getOffice() != null && user.getOffice().getId() != null){ + CacheUtils.remove(USER_CACHE, USER_CACHE_LIST_BY_OFFICE_ID_ + user.getOffice().getId()); + } + + } + + /** + * 获取当前用户 + * @return 取不到返回 new User() + */ + public static SysUser getUser(){ + Principal principal = getPrincipal(); + if (principal!=null){ + SysUser user = get(String.valueOf(principal.getId())); + if (user != null){ + return user; + } + return new SysUser(); + } + // 如果没有登录,则返回实例化空的User对象。 + return new SysUser(); + } + + + /** + * 验证码是否合法 + * @param validateCode + * @return + */ + public static boolean validateCodeIsValid(String validateCode) { + String code = (String) getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); + return (StringUtil.isBlank(validateCode) || validateCode.toUpperCase().equals(code)); + } + + /** + * 获取当前用户角色列表 + * @return + */ + public static List getRoleList(){ + @SuppressWarnings("unchecked") + List roleList = (List)getCache(CACHE_ROLE_LIST); + if (roleList == null){ + roleList = roleDao.findAllList(new SysRole()); + putCache(CACHE_ROLE_LIST, roleList); + } + return roleList; + } + + + + + /** + * 获取当前用户授权菜单 + * @return + */ + public static List getMenuList(){ + @SuppressWarnings("unchecked") + List menuList = (List)getCache(CACHE_MENU_LIST); + if (menuList == null){ + SysUser user = getUser(); + if (user.isAdmin()){ + menuList = sysMenuDao.findAllList(new SysMenu()); + }else{ + menuList = sysMenuDao.findSysMenuByUserId(user.getId()); + } + putCache(CACHE_MENU_LIST, menuList); + } + return menuList; + + + + } + + public static String getMenuNameById(String id) { + for (SysMenu menu : getMenuList()) { + if (menu.getId() == Long.valueOf(id)) { + return menu.getName(); + } + } + return ""; + } + + + + + /** + * 按照菜单各级递归排列 + * @return + */ + public static List getMenuTreeList(){ + return new TreeUtil(getMenuList()).buildTree(); + } + + + + + /** + * 验证用户是否有该权限 + * @param permission + * @return + */ + public static boolean checkPermission(String permission) { + return SecurityUtils.getSubject().isPermitted(permission); + } + + + + /** + * 获取当前用户有权限访问的部门 + * @return + */ + public static List getOfficeList(){ + @SuppressWarnings("unchecked") + List officeList = (List)getCache(CACHE_OFFICE_LIST); + if (officeList == null){ + SysUser user = getUser(); + if (user.isAdmin()){ + officeList = officeDao.findAllList(new SysOffice()); + }else{ + SysOffice office = new SysOffice(); + office.getSqlMap().put("dsf", BaseService.dataScopeFilter(user, "a", "")); + officeList = officeDao.findList(office); + } + putCache(CACHE_OFFICE_LIST, officeList); + } + return officeList; + } + + + + /** + * 获取当前用户授权的区域 + * @return + */ + public static List getAreaList(){ + @SuppressWarnings("unchecked") + List areaList = (List)getCache(CACHE_AREA_LIST); + if (areaList == null){ + areaList = areaDao.findAllList(new SysArea()); + putCache(CACHE_AREA_LIST, areaList); + } + return areaList; + } + + /** + * 获取当前用户有权限访问的部门 + * @return + */ + public static List getOfficeAllList(){ + @SuppressWarnings("unchecked") + List officeList = (List)getCache(CACHE_OFFICE_ALL_LIST); + if (officeList == null){ + officeList = officeDao.findAllList(new SysOffice()); + putCache(CACHE_OFFICE_ALL_MAP, getOfficeAllMap(officeList)); + } + + return officeList; + } + + /** + * 获取当前用户有权限访问的部门 + * @return + */ + public static Map getOfficeAllMap(){ + @SuppressWarnings("unchecked") + Map officeMap = (Map)getCache(CACHE_OFFICE_ALL_MAP); + if (officeMap == null){ + officeMap = getOfficeAllMap(getOfficeAllList()); + } + + return officeMap; + } + + + + + private static Map getOfficeAllMap(List officeList) { + Map officeMap = new HashMap(); + for (SysOffice office: officeList) { + officeMap.put(office.getId(), office); + } + return officeMap; + } + + + /** + * 获取当前部门各个部门级别描述 + * @param deptId + * @return + */ + public static String getOfficeDesc(Long deptId) { + + StringBuilder offices = new StringBuilder(); + Map officeMap = getOfficeAllMap(); + SysOffice office = officeMap.get(deptId); + + if(!StringUtil.isEmpty(office)) { + + String[] parentIds = office.getParentIds().split(","); + + for(String id : parentIds) { + if (StringUtils.isNotBlank(id) && !id.equals("0") && !id.equals("1")) {//去除空|0无意义|1顶部公司组织机构 + SysOffice parentOffice = officeMap.get(Long.valueOf(id)); + offices.append(StringUtil.isEmpty(parentOffice) ? "" : parentOffice.getName()).append("-"); + } + } + + offices.append(office.getName()); + } + return offices.toString(); + + } + + + + + /** + * 获取授权主要对象 + */ + public static Subject getSubject(){ + return SecurityUtils.getSubject(); + } + + /** + * 获取当前登录者对象 + */ + public static Principal getPrincipal(){ + try{ + Subject subject = SecurityUtils.getSubject(); + Principal principal = (Principal)subject.getPrincipal(); + + if (principal != null){ + return principal; + } +// subject.logout(); + }catch (UnavailableSecurityManagerException e) { + + }catch (InvalidSessionException e){ + + } + return null; + } + + public static Session getSession(){ + try{ + Subject subject = SecurityUtils.getSubject(); + Session session = subject.getSession(false); + if (session == null){ + session = subject.getSession(); + } + if (session != null){ + return session; + } +// subject.logout(); + }catch (InvalidSessionException e){ + + } + return null; + } + + // ============== User Cache ============== + + public static Object getCache(String key) { + return getCache(key, null); + } + + public static Object getCache(String key, Object defaultValue) { +// Object obj = getCacheMap().get(key); + Object obj = getSession().getAttribute(key); + return obj==null?defaultValue:obj; + } + + public static void putCache(String key, Object value) { +// getCacheMap().put(key, value); + getSession().setAttribute(key, value); + } + + public static void removeCache(String key) { +// getCacheMap().remove(key); + getSession().removeAttribute(key); + } + + + + /** + * 是否是验证码登录 + * @param useruame 用户名 + * @param isFail 计数加1 + * @param clean 计数清零 + * @return + */ + @SuppressWarnings("unchecked") + public static boolean isValidateCodeLogin(String useruame, boolean isFail, boolean clean){ + Map loginFailMap = (Map)CacheUtils.get("loginFailMap"); + if (loginFailMap==null){ + loginFailMap = Maps.newHashMap(); + CacheUtils.put("loginFailMap", loginFailMap); + } + Integer loginFailNum = loginFailMap.get(useruame); + if (loginFailNum==null){ + loginFailNum = 0; + } + if (isFail){ + loginFailNum++; + loginFailMap.put(useruame, loginFailNum); + } + if (clean){ + loginFailMap.remove(useruame); + } + return loginFailNum >= 3; + } +} diff --git a/src/main/java/com/nis/web/security/UsernamePasswordToken.java b/src/main/java/com/nis/web/security/UsernamePasswordToken.java new file mode 100644 index 0000000..71afd14 --- /dev/null +++ b/src/main/java/com/nis/web/security/UsernamePasswordToken.java @@ -0,0 +1,37 @@ +package com.nis.web.security; + +import org.apache.shiro.web.filter.authc.LogoutFilter; + + +public class UsernamePasswordToken extends org.apache.shiro.authc.UsernamePasswordToken { + + private static final long serialVersionUID = 1L; + + private String captcha; + private boolean mobileLogin; + + public UsernamePasswordToken() { + super(); + } + + public UsernamePasswordToken(String username, char[] password, + boolean rememberMe, String host, String captcha, boolean mobileLogin) { + super(username, password, rememberMe, host); + this.captcha = captcha; + this.mobileLogin = mobileLogin; + } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } + + public boolean isMobileLogin() { + return mobileLogin; + } + + +} diff --git a/src/main/java/com/nis/web/service/ArchiveServcie.java b/src/main/java/com/nis/web/service/ArchiveServcie.java new file mode 100644 index 0000000..3e2926d --- /dev/null +++ b/src/main/java/com/nis/web/service/ArchiveServcie.java @@ -0,0 +1,8 @@ +package com.nis.web.service; + +import org.springframework.stereotype.Service; + +@Service +public class ArchiveServcie extends BaseService{ + +} diff --git a/src/main/java/com/nis/web/service/AreaService.java b/src/main/java/com/nis/web/service/AreaService.java new file mode 100644 index 0000000..64c3123 --- /dev/null +++ b/src/main/java/com/nis/web/service/AreaService.java @@ -0,0 +1,44 @@ +package com.nis.web.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.common.collect.Lists; +import com.nis.domain.SysArea; +import com.nis.util.StringUtil; +import com.nis.web.dao.SysAreaDao; +import com.nis.web.security.UserUtils; + +@Service +public class AreaService extends TreeService { + @Autowired + private SysAreaDao areaDao; + + public List findAll() { + return UserUtils.getAreaList(); + } + + + public List findAllAreaList(SysArea area) { + if (!StringUtil.isEmpty(area.getId())) { + area.setParentIds(area.getParentIds()+area.getId()+","+"%"); + } else { + //area.setParentIds(area.getParentIds()+"%"); + return Lists.newArrayList(); + } + + return areaDao.findByParentIdsLike(area); + } + + + public void saveOrUpdate(SysArea sysArea) { + if (StringUtil.isEmpty(sysArea.getId())) { + sysArea.setDelFlag(1); + } + this.save(sysArea); + UserUtils.removeCache(UserUtils.CACHE_AREA_LIST); + } + +} diff --git a/src/main/java/com/nis/web/service/BaseLogService.java b/src/main/java/com/nis/web/service/BaseLogService.java new file mode 100644 index 0000000..0deefe9 --- /dev/null +++ b/src/main/java/com/nis/web/service/BaseLogService.java @@ -0,0 +1,551 @@ +package com.nis.web.service; + +import java.io.Serializable; +import java.lang.reflect.Field; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; + +import com.nis.domain.DfJitLogEntity; +import com.nis.domain.DfReportEntity; +import com.nis.domain.LogEntity; +import com.nis.domain.Page; +import com.nis.domain.StatLogEntity; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.util.elasticsearch.ElasticsearchSqlDao; + +/** + * 基础日志Service基类 + * + * @author zbc + * @version 2016-09-10 + */ +@SuppressWarnings({ "rawtypes" }) +public abstract class BaseLogService { + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + protected final Logger logger = Logger.getLogger(this.getClass()); + @Autowired + protected ElasticsearchSqlDao elasticsearchSqlDao; + /** + * wx checkCloumnIsExist(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选) + * + * @param clazz + * @param page + * @throws Exception + * void + * @exception @since + * 1.0.0 + */ + public void checkCloumnIsExist(SaveRequestLogThread thread, long start, Class clazz, Page page) throws Exception { + String[] fieldsColoumn = null; + String[] orderByColoumn = null; + String notExistColumn = ""; + String orderByStr = ""; + // 所有字段名 + List columnList = new ArrayList(); + // 所有属性名 + List propertyList = new ArrayList(); + // Map columnMap=new HashMap(); + + if (page != null) { + // 解析Fileds的字段/属性名称 + if (!StringUtil.isBlank(page.getFields())) { + fieldsColoumn = page.getFields().split(","); + } + // 解析orderBy的字段/属性名称 + if (!StringUtil.isBlank(page.getOrderBy())) { + orderByStr = page.getOrderBy().replace(" asc", ""); + orderByStr = orderByStr.replace(" ASC", ""); + orderByStr = orderByStr.replace(" DESC", ""); + orderByStr = orderByStr.replace(" desc", ""); + orderByColoumn = orderByStr.split(","); + } + // 从resultMap中获取字段名称和属性名称 + if (fieldsColoumn != null || orderByColoumn != null) { + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + ResultMap map = sqlSessionFactory.getConfiguration().getResultMap(clazz.getSimpleName() + "Map"); + List mapping = map.getResultMappings(); + for (ResultMapping mapp : mapping) { + columnList.add(mapp.getColumn().toLowerCase()); + propertyList.add(mapp.getProperty()); + } + } + if (fieldsColoumn != null) { + notExistColumn = ""; + for (String column : fieldsColoumn) { + if (!StringUtil.isBlank(column)) { + column = column.trim(); + } else { + break; + } + // 数据库字段不区分大小写,属性区分大小写 + if (!columnList.contains(column.toLowerCase()) && !propertyList.contains(column)) { + notExistColumn += "," + column; + } + } + if (!StringUtil.isBlank(notExistColumn)) { + notExistColumn = notExistColumn.substring(1); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "fields中" + notExistColumn + "的字段不存在!", RestBusinessCode.param_formate_error.getValue()); + } + } + if (orderByColoumn != null) { + notExistColumn = ""; + for (String column : orderByColoumn) { + if (!StringUtil.isBlank(column)) { + column = column.trim(); + } else { + break; + } + // 数据库字段不区分大小写,属性区分大小写 + if (!columnList.contains(column.toLowerCase()) && !propertyList.contains(column)) { + notExistColumn += "," + column; + } + } + if (!StringUtil.isBlank(notExistColumn)) { + notExistColumn = notExistColumn.substring(1); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "orderBy中" + notExistColumn + "的字段不存在!", RestBusinessCode.param_formate_error.getValue()); + } + } + + } + } + + public void queryConditionCheck(SaveRequestLogThread thread,long start,LogEntity entity,Class clazz,Page page) { + logger.info("请求参数校验开始----"+System.currentTimeMillis()); + try { + if (!StringUtil.isBlank(entity.getSearchCfgId())) { + Long.parseLong(entity.getSearchCfgId()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchEntranceId())) { + Long.parseLong(entity.getSearchEntranceId()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchEntranceId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchEntranceId参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchFoundEndTime())) { + sdf.parse(entity.getSearchFoundEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundEndTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundEndTime参数格式格式"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchFoundStartTime())) { + sdf.parse(entity.getSearchFoundStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundStartTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundStartTime参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchServiceType())) { + Integer.parseInt(entity.getSearchServiceType()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchServiceType参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchServiceType参数错误"); + } + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + logger.info("请求参数校验结束----"+System.currentTimeMillis()); + + } + + /** + * wx 报表查询条件检查 + * + * @param className + * 需要检验的实体名称[需要保证resultMap的id命名方式为[className]Map] + * @param page + * 需要校验的page对象 + */ + public void queryConditionCheck(SaveRequestLogThread thread, long start, StatLogEntity entity, Class clazz, + Page page) { + + try { + if (!StringUtil.isBlank(entity.getSearchStatStartTime())) { + sdf.parse(entity.getSearchStatStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchStatEndTime())) { + sdf.parse(entity.getSearchStatEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数错误"); + } + try { + if (!StringUtil.isBlank(entity.getSearchService())) { + Integer.parseInt(entity.getSearchService()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数错误"); + } + + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } + + + /** + * 管控实时统计公共查询字段验证 + * + * @param entity + */ + public void queryConditionCheck(SaveRequestLogThread thread, long start, DfJitLogEntity entity, Class clazz, + Page page) { + try { + if (!StringUtil.isBlank(entity.getSearchReportEndTime())) { + sdf.parse(entity.getSearchReportEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportEndTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportEndTime参数格式格式"); + } + try { + if (!StringUtil.isBlank(entity.getSearchReportStartTime())) { + sdf.parse(entity.getSearchReportStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportStartTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportStartTime参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchService())) { + Integer.parseInt(entity.getSearchService()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数错误"); + } + + try { + String searchAttrType = getSearchField(clazz, entity, "searchAttrType"); + if (!StringUtil.isBlank(searchAttrType)) { + Integer.parseInt(searchAttrType); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchAttrType参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchAttrType参数错误"); + } + try { + String searchLwhh = getSearchField(clazz, entity, "searchLwhh"); + if (!StringUtil.isBlank(searchLwhh)) { + Integer.parseInt(searchLwhh); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchLwhh参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchLwhh参数错误"); + } + + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } + + /** + * 实时统计公共查询字段验证 + * + * @param entity + */ + public void queryConditionCheck(SaveRequestLogThread thread, long start,DfReportEntity entity, Class clazz, Page page) { + try { + if (!StringUtil.isBlank(entity.getSearchReportEndTime())) { + sdf.parse(entity.getSearchReportEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchReportEndTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchReportEndTime参数格式格式"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchReportStartTime())) { + sdf.parse(entity.getSearchReportStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchReportStartTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchReportStartTime参数错误"); + } + + try { + String searchAttrType = getSearchField(clazz, entity, "searchAttrType"); + if (!StringUtil.isBlank(searchAttrType)) { + Integer.parseInt(searchAttrType); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchAttrType参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchAttrType参数错误"); + } + try { + String searchLwhh = getSearchField(clazz, entity, "searchLwhh"); + if (!StringUtil.isBlank(searchLwhh)) { + Integer.parseInt(searchLwhh); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchLwhh参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchLwhh参数错误"); + } + try { + String searchId = getSearchField(clazz, entity, "searchId"); + if (!StringUtil.isBlank(searchId)) { + Integer.parseInt(searchId); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchId参数错误"); + } + + try { + String searchService = getSearchField(clazz, entity, "searchService"); + if (!StringUtil.isBlank(searchService)) { + Integer.parseInt(searchService); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchService参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,start,"searchService参数错误"); + } + + + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,start,"请求参数错误"); + } + + } + + /** + * + * @Title: getJedisKey + * @Description: (日志查询/报表记录,"接口名称+查询条件"作为key,将结果存入redis中) + * @param @param + * request + * @param @param + * bool 查询数据中心缓存还是oracle缓存,false是oracle缓存 + * @param @return + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public String getJedisKey(HttpServletRequest request, boolean bool) { + String key = ""; + String serviceName = ""; + // 获取访问url + String uri = request.getRequestURI(); + serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length()); + Map parapeterMapNew = new HashMap(); + // 获取传入参数 + Map parapeterMap = request.getParameterMap(); + if (parapeterMap == null) { + parapeterMap = new HashMap(); + } + // 将patameterMap内容克隆到一个新的map中 + for (String keyStr : parapeterMap.keySet()) { + parapeterMapNew.put(keyStr, parapeterMap.get(keyStr)); + } + + if (!bool) { + // 判断是否存在pageNo、pageSize,不存在则添加默认的pageNum和pageSize + if (parapeterMapNew.get("pageNo") == null) { + String[] strArr = { "1" }; + parapeterMapNew.put("pageNo", strArr); + } + if (parapeterMapNew.get("pageSize") == null) { + String[] strArr = { "30" }; + parapeterMapNew.put("pageSize", strArr); + } + }else{ + if (parapeterMapNew.get("pageNo") != null) { + parapeterMapNew.remove("pageNo"); + } + if (parapeterMapNew.get("pageSize") != null) { + parapeterMapNew.remove("pageSize"); + } + } + // mapKey排序 + parapeterMapNew.entrySet(); + + // 拼凑查询条件 + for (String keyStr : parapeterMapNew.keySet()) { + if (parapeterMapNew.get(keyStr) != null) { + key += "&" + keyStr + "=" + parapeterMapNew.get(keyStr)[0]; + } else { + key += "&" + keyStr + "="; + } + } + if (!StringUtil.isBlank(key)) { + key = key.substring(1); + } + // 返回serviceName+查询条件 + key = serviceName + "?" + key; + + return key; + } + + protected String getSearchField(Class clazz, + Serializable entity, String fieldName) { + try { + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + return (String) field.get(entity); + } catch (Exception e) { + return null; + } + } +} diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java new file mode 100644 index 0000000..3af041c --- /dev/null +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -0,0 +1,153 @@ +package com.nis.web.service; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.collect.Lists; +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +import com.nis.util.StringUtils; + +/** + * Service基类 + * @author ThinkGem + * @version 2014-05-16 + */ +public abstract class BaseService { + + + + /** + * 日志对象 + */ + protected Logger logger = LoggerFactory.getLogger(getClass()); + + + + /** + * 数据范围过滤 + * @param user 当前用户对象,通过“entity.getCurrentUser()”获取 + * @param officeAlias 机构表别名,多个用“,”逗号隔开。 + * @param userAlias 用户表别名,多个用“,”逗号隔开,传递空,忽略此参数 + * @return 标准连接条件对象 + */ + public static String dataScopeFilter(SysUser user, String officeAlias, String userAlias) { + + + StringBuilder sqlString = new StringBuilder(); + + // 进行权限过滤,多个角色权限范围之间为或者关系。 + List dataScope = Lists.newArrayList(); + + if (StringUtils.isBlank(user.getLoginId())){ + return ""; + } + + // 超级管理员,跳过权限过滤 + if (user.isAdmin()){ + boolean isDataScopeAll = isContainsDataScopeAll(user.getUserRoleList()); + + + + for (SysRole r : user.getUserRoleList()) { + for (String oa : StringUtils.split(officeAlias, ",")){ + if (!dataScope.contains(r.getDataScope()) && StringUtils.isNotBlank(oa)){ + + sqlString.append(createScopeSql(r.getDataScope(),oa,user)); + dataScope.add(r.getDataScope()); + } + } + } + // 如果没有全部数据权限,并设置了用户别名,则当前权限为本人;如果未设置别名,当前无权限为已植入权限 + if (!isDataScopeAll){ + if (StringUtils.isNotBlank(userAlias)){ + for (String ua : StringUtils.split(userAlias, ",")){ + sqlString.append(" OR " + ua + ".id = '" + user.getId() + "'"); + } + }else { + for (String oa : StringUtils.split(officeAlias, ",")){ + //sqlString.append(" OR " + oa + ".id = " + user.getOffice().getId()); + sqlString.append(" OR " + oa + ".id IS NULL"); + } + } + }else{ + // 如果包含全部权限,则去掉之前添加的所有条件,并跳出循环。 + sqlString = new StringBuilder(); + } + } + if (StringUtils.isNotBlank(sqlString.toString())){ + return " AND (" + sqlString.substring(4) + ")"; + } + return ""; + } + + + + + /** + * 测试数据是否包含全集 + * @return + */ + private static boolean isContainsDataScopeAll(List roleList) { + boolean isDataScopeAll = false; + + for(SysRole role : roleList) { + if(SysRole.DATA_SCOPE_ALL.equals(role.getDataScope())){ + isDataScopeAll = true; + break; + } + } + + return isDataScopeAll; + + } + + + /** + * 过滤机构信息 + * @param dataScope 数据范围(1:所有数据;2:所在公司及以下数据;3:所在公司数据;4:所在部门及以下数据;5:所在部门数据;6:所在单位及以下数据;7:所在单位数据) + * @return + */ + private static String createScopeSql(int dataScope,String officeAlias,SysUser user) { + StringBuilder scopeSql = new StringBuilder(1024); + + if (SysRole.DATA_SCOPE_COMPANY_AND_CHILD.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getCompany().getId()); + scopeSql.append(" OR " + officeAlias + ".parent_ids LIKE '" + user.getCompany().getParentIds() + user.getCompany().getId() + ",%'"); + } + else if (SysRole.DATA_SCOPE_COMPANY.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getCompany().getId()); + // 包括本公司下的部门 (type=1:公司;type=2:单位 3.部门) + scopeSql.append(" OR (" + officeAlias + ".parent_id = '" + user.getCompany().getId() + "' AND " + officeAlias + ".type>1)"); + } + else if (SysRole.DATA_SCOPE_OFFICE_AND_CHILD.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getOffice().getId()); + scopeSql.append(" OR " + officeAlias + ".parent_ids LIKE '" + user.getOffice().getParentIds() + user.getOffice().getId() + ",%'"); + } + else if (SysRole.DATA_SCOPE_OFFICE.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getOffice().getId()); + } + else if (SysRole.DATA_SCOPE_ENTITY_AND_CHILD.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getEntity().getId()); + scopeSql.append(" OR " + officeAlias + ".parent_ids LIKE '" + user.getEntity().getParentIds() + user.getEntity().getId() + ",%'"); + + } else if (SysRole.DATA_SCOPE_ENTITY.equals(dataScope)){ + scopeSql.append(" OR " + officeAlias + ".id = " + user.getEntity().getId()); + // 包括本公司下的部门 (type=1:公司;type=2:单位 3.部门) + scopeSql.append(" OR (" + officeAlias + ".parent_id = '" + user.getEntity().getId() + "' AND " + officeAlias + ".type>1)"); + + } + + return scopeSql.toString(); + } + + + + + + + + +} diff --git a/src/main/java/com/nis/web/service/CommonService.java b/src/main/java/com/nis/web/service/CommonService.java new file mode 100644 index 0000000..d268909 --- /dev/null +++ b/src/main/java/com/nis/web/service/CommonService.java @@ -0,0 +1,6 @@ +package com.nis.web.service; + + +public interface CommonService { + +} diff --git a/src/main/java/com/nis/web/service/CrudService.java b/src/main/java/com/nis/web/service/CrudService.java new file mode 100644 index 0000000..d022bac --- /dev/null +++ b/src/main/java/com/nis/web/service/CrudService.java @@ -0,0 +1,180 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.web.service; + +import java.lang.reflect.Field; +import java.util.List; + +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import com.nis.domain.BaseEntity; +import com.nis.domain.Page; +import com.nis.util.Constants; +import com.nis.web.dao.CrudDao; + +/** + * Service基类 + * @author ThinkGem + * @version 2014-05-16 + */ +public abstract class CrudService, T extends BaseEntity> extends BaseService { + + /** + * 持久层对象 + */ + @Autowired + protected D dao; + + /** + * 获取单条数据 + * @param id + * @return + */ + public T get(Long id) { + return dao.get(id); + } + + /** + * 获取单条数据 + * @param entity + * @return + */ + public T get(T entity) { + return dao.get(entity); + } + + /** + * 查询列表数据 + * @param entity + * @return + */ + public List findList(T entity) { + return dao.findList(entity); + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page findPage(Page page, T entity) { + entity.setPage(page); + page.setList(dao.findList(entity)); + return page; + } + + /** + * 保存数据(插入或更新) + * @param entity + */ + public void save(T entity) { + if (entity.getIsNewRecord()){ + dao.insert(entity); + }else{ + dao.update(entity); + } + } + + /** + * 删除数据 + * @param entity + */ + public void delete(T entity) { + dao.delete(entity); + } + /** + * + * saveBatch(批量全部保存数据) + * (这里描述这个方法适用条件 – 可选) + * @param data 数据集合 + * @param mClass 传入的dao.xml里的mapper + * @author wx + * @since 1.0.0 + */ + + @SuppressWarnings("unchecked") + public void saveBatch(List data,@SuppressWarnings("rawtypes")Class mClass) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < data.size();index++){ + T t = data.get(index); + ((CrudDao) batchSqlSession.getMapper(mClass)).insert(t); + } + batchSqlSession.commit(); +// }catch (Exception e){ +// batchSqlSession.rollback(); +// throw e; + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + } + /** + * + * updateBatch(批量更新全部数据) + * (这里描述这个方法适用条件 – 可选) + * @param data 数据集合 + * @param mClass 传入的dao.xml里的mapper + * @author wx + * @since 1.0.0 + */ + @SuppressWarnings("unchecked") + public void updateBatch(List data,@SuppressWarnings("rawtypes") Class mClass) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < data.size();index++){ + T t = data.get(index); + ((CrudDao) batchSqlSession.getMapper(mClass)).update(t); + } + batchSqlSession.commit(); +// }catch (Exception e){ +// batchSqlSession.rollback(); +// throw e; + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + } + + /** + * + * deleteBatch(批量删除全部数据) + * (这里描述这个方法适用条件 – 可选) + * @param data 数据集合 + * @param mClass 传入的dao.xml里的mapper + * @author wx + * @since 1.0.0 + */ + @SuppressWarnings("unchecked") + public void deleteBatch(List data,@SuppressWarnings("rawtypes") Class mClass) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < data.size();index++){ + T t = data.get(index); + ((CrudDao) batchSqlSession.getMapper(mClass)).delete(t); + } + batchSqlSession.commit(); +// }catch (Exception e){ +// batchSqlSession.rollback(); +// throw e; + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + } + +} diff --git a/src/main/java/com/nis/web/service/DictService.java b/src/main/java/com/nis/web/service/DictService.java new file mode 100644 index 0000000..d7cec3d --- /dev/null +++ b/src/main/java/com/nis/web/service/DictService.java @@ -0,0 +1,108 @@ +package com.nis.web.service; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.SysDataDictionaryName; +import com.nis.util.DateUtil; +import com.nis.util.StringUtil; +import com.nis.web.dao.SysDictDao; +import com.nis.web.security.UserUtils; + +@Service +public class DictService extends BaseService { + /**@Resource**/ + @Autowired + private SysDictDao dictDao; + + + public Page findDictList(Page page, SysDataDictionaryName sysDictName) { + // 设置分页参数 + sysDictName.setPage(page); + // 执行分页查询 + page.setList(dictDao.findDictList(sysDictName)); + return page; + } + + + public void saveOrUpdate(SysDataDictionaryName sysDictName) { + + + + if(StringUtil.isEmpty(sysDictName.getId())) {//新增 + + sysDictName.setCreateTime(new Date()); + sysDictName.setModifyTime(new Date()); + sysDictName.setStatus(1); + dictDao.insertDictName(sysDictName); + + List dictItemList = sysDictName.getDictItemList(); + if(!StringUtil.isEmpty(dictItemList) && dictItemList.size()>0) { + for (SysDataDictionaryItem dictItem : dictItemList) { + dictItem.setDictionaryId(sysDictName.getId().intValue()); + dictDao.insertDictItem(dictItem); + } + } + + }else {//修改 + + //累加修改记录 + String newRevision = "用户"+UserUtils.getUser().getName()+",在"+DateUtil.getCurrentDate(DateUtil.YYYY_MM_DD_HH24_MM_SS)+"修改!"; + StringBuilder revisionBuilder = new StringBuilder(newRevision); + String oldRevision = sysDictName.getRevision(); + if(!StringUtil.isBlank(oldRevision)){ + if(oldRevision.split("\\|").length<10){ + revisionBuilder.append("|").append(oldRevision); + }else { + revisionBuilder.append("|").append(oldRevision.substring(0,oldRevision.lastIndexOf("|"))); + } + + } + sysDictName.setRevision(revisionBuilder.toString()); + sysDictName.setModifyTime(new Date()); + sysDictName.setStatus(1); + dictDao.updateDictName(sysDictName); + + + dictDao.deleteDictItem(sysDictName.getId().intValue());//删除所有词条项信息 + + List dictItemList = sysDictName.getDictItemList(); + if(!StringUtil.isEmpty(dictItemList) && dictItemList.size()>0) { + for (SysDataDictionaryItem dictItem : dictItemList) { + dictItem.setDictionaryId(sysDictName.getId().intValue()); + dictDao.insertDictItem(dictItem); + } + } + + + } + + + + + } + + + public void deleteDict(Integer dictId) { + + //删除词典项 + dictDao.deleteDictItem(dictId); + //删除词典标识 + dictDao.deleteDictName(dictId); + + } + + + public SysDataDictionaryName getDictByIdWithRelation(Integer id) { + + return dictDao.getDictById(1,id); + } + + + +} diff --git a/src/main/java/com/nis/web/service/HiveSqlService.java b/src/main/java/com/nis/web/service/HiveSqlService.java new file mode 100644 index 0000000..416b952 --- /dev/null +++ b/src/main/java/com/nis/web/service/HiveSqlService.java @@ -0,0 +1,628 @@ +package com.nis.web.service; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.sql.ResultSet; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.log4j.Logger; + +import com.nis.domain.Page; +import com.nis.util.Configurations; +import com.nis.util.Constants; +import com.nis.util.HiveDataSource; +import com.nis.util.HiveJDBC; +import com.nis.util.StringUtil; +import com.nis.util.redis.SaveRedisThread; + +public class HiveSqlService { + private final static Logger logger = Logger.getLogger(HiveJDBC.class); + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + public static ResultSet getResultSet(Page page, Object bean, String tableName, + Map> col2col, String orderBy, String searchActiveSys) throws Exception { + tableName = tableName.toLowerCase(); + tableName = Configurations.getStringProperty(tableName, "t_" + tableName).trim(); + String showColmun = getFiledsSql(bean.getClass().getSimpleName(), page.getFields()); + StringBuffer sql = new StringBuffer(); + Map filedAndColumnMap = getFiledAndColumnMap(bean.getClass()); + if (null == showColmun || showColmun.equals("")) { + for (String key : filedAndColumnMap.keySet()) { + if (!filedAndColumnMap.get(key).toLowerCase().equals("id")) { + sql.append(filedAndColumnMap.get(key) + ","); + } + } + } else { + sql.append(showColmun); + } + String sqlTrim = sql.toString().trim(); + if (sqlTrim.endsWith(",")) { + sqlTrim = sqlTrim.substring(0, sqlTrim.length() - 1); + } + sql.setLength(0); + sql.append(" select " + sqlTrim + " from " + tableName + " t where 1=1 "); + if (bean != null) { + Class clazz = bean.getClass(); + for (; clazz != Object.class; clazz = clazz.getSuperclass()) { + // 获取所有的字段包括public,private,protected,private + // Field[] fields = bean.getClass().getDeclaredFields(); + Field[] fields = clazz.getDeclaredFields(); + Long foundTimePartStart = null; + Long foundTimePartEnd = null; + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + String key = f.getName();// 获取字段名 + if (f.getType().getName().equals("java.lang.String") && key.startsWith("search")) { + Object value = getFieldValue(bean, key); + if (value != null) { + setFieldValue(bean, key, value.toString().trim()); + if (key.endsWith("Time")) {// 日期开始或结束的字段 + if (col2col.containsKey(key)) { + value = sdf.parse(value.toString().trim()).getTime() / 1000; + if (key.toLowerCase().equals("searchfoundstarttime")) { + foundTimePartStart = Long.parseLong(value.toString()) / 3600; + } + if (key.toLowerCase().equals("searchfoundendtime")) { + foundTimePartEnd = Long.parseLong(value.toString()) / 3600; + } + if (col2col.get(key).get("start") != null) { + // sql.append(" and " + + // filedAndColumnMap.get(col2col.get(key).get("start")) + // + ">=to_date('" + + // value.toString().trim() + // + "','yyyy-mm-dd HH24:mi:ss')"); + sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("start")) + ">=" + + value + "L"); + } else { + // sql.append(" and " + + // filedAndColumnMap.get(col2col.get(key).get("end")) + // + "<=to_date('" + + // value.toString().trim() + // + "','yyyy-mm-dd HH24:mi:ss')"); + sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("end")) + "<" + + value + "L"); + } + } + } else { + if (key.toLowerCase().startsWith("search")) { + key = key.replace("search", ""); + key = key.substring(0, 1).toLowerCase() + key.substring(1); + } + + if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("cfgid") + || key.toLowerCase().equals("entranceid"))) { + sql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("protocol") || key.toLowerCase().equals("serverip") + || key.toLowerCase().equals("clientip") + || key.toLowerCase().equals("url") + || key.toLowerCase().equals("mailfrom") + || key.toLowerCase().equals("mailto") + || key.toLowerCase().equals("encryptmode") + || key.toLowerCase().equals("exprotocol") + || key.toLowerCase().equals("cljip"))) { + sql.append(" and " + filedAndColumnMap.get(key) + "='" + value.toString().trim() + + "'"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && key.toLowerCase().equals("servicetype")) { + sql.append(" and " + filedAndColumnMap.get(key) + "=" + value.toString().trim()); + } + } + } + + } + } + + //if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 + if (null != searchActiveSys){//为A版日志库添加分区字段 + if (null != foundTimePartStart) { + sql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + } + if (null != foundTimePartEnd) { + sql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + } + } + + } + } + Integer startNum = (page.getPageNo() - 1) * page.getPageSize() + 1; + Integer endNum = startNum - 1 + page.getPageSize(); + // sql.append(" order by " + orderBy + " limit 10000) t1) t2 where + // row_Num between " + startNum + " and " + endNum); + sql.append(" limit " + Constants.EVERY_GETHIVEDATANUM); + logger.info("获取数据中心日志sql===================" + sql); + // ResultSet query = HiveJDBC.query(sql.toString()); + ResultSet query = HiveDataSource.query(sql.toString(), searchActiveSys); + logger.info("获取数据中心日志成功"); + return query; + } + + public static Long getHivePageCount(Object bean, String countKey, String tableName, + Map> col2col, String searchActiveSys) throws Exception { + tableName = tableName.toLowerCase(); + tableName = Configurations.getStringProperty(tableName, "t_" + tableName).trim(); + StringBuffer countSql = new StringBuffer(); + Map filedAndColumnMap = getFiledAndColumnMap(bean.getClass()); + countSql.append("select count(1) from " + tableName + " where 1=1 "); + if (bean != null) { + Class clazz = bean.getClass(); + for (; clazz != Object.class; clazz = clazz.getSuperclass()) { + // 获取所有的字段包括public,private,protected,private + // Field[] fields = bean.getClass().getDeclaredFields(); + Field[] fields = clazz.getDeclaredFields(); + Long foundTimePartStart = null; + Long foundTimePartEnd = null; + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + String key = f.getName();// 获取字段名 + if (f.getType().getName().equals("java.lang.String") && key.startsWith("search")) { + Object value = getFieldValue(bean, key); + if (value != null) { + setFieldValue(bean, key, value.toString().trim()); + if (key.endsWith("Time")) {// 日期开始或结束的字段 + if (col2col.containsKey(key)) { + value = sdf.parse(value.toString().trim()).getTime() / 1000; + if (key.toLowerCase().equals("searchfoundstarttime")) { + foundTimePartStart = Long.parseLong(value.toString()) / 3600; + } + if (key.toLowerCase().equals("searchfoundendtime")) { + foundTimePartEnd = Long.parseLong(value.toString()) / 3600; + } + if (col2col.get(key).get("start") != null) { + countSql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("start")) + + ">=" + value + "L"); + } else { + countSql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("end")) + + "<" + value + "L"); + } + } + } else { + if (key.toLowerCase().startsWith("search")) { + key = key.replace("search", ""); + key = key.substring(0, 1).toLowerCase() + key.substring(1); + } + + if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("cfgid") + || key.toLowerCase().equals("entranceid"))) { + countSql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("protocol") || key.toLowerCase().equals("serverip") + || key.toLowerCase().equals("clientip") + || key.toLowerCase().equals("url") + || key.toLowerCase().equals("mailfrom") + || key.toLowerCase().equals("mailto") + || key.toLowerCase().equals("encryptmode") + || key.toLowerCase().equals("exprotocol") + || key.toLowerCase().equals("cljip"))) { + countSql.append(" and " + filedAndColumnMap.get(key) + "='" + + value.toString().trim() + "'"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && key.toLowerCase().equals("servicetype")) { + countSql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim()); + } + } + } + + } + } + //if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 + if (null != searchActiveSys){ + if (null != foundTimePartStart) { + countSql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + } + if (null != foundTimePartEnd) { + countSql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + } + } + } + } + logger.info("获取数据中心日志总条数sql==================" + countSql.toString()); + // ResultSet countRs = HiveJDBC.query(countSql.toString()); + ResultSet countRs = HiveDataSource.query(countSql.toString(), searchActiveSys); + String countStr = null; + while (countRs.next()) { + countStr = countRs.getObject(1).toString(); + break; + } + if (countStr == null || countStr.equals("")) { + logger.info("获取数据中心日志总条数成功总共===================0条配置"); + return 0l; + } + Long count = Long.valueOf(countStr); + logger.info("获取数据中心日志总条数成功总共===================" + count + "条配置"); + // HiveJDBC.closeConn(); + if (Constants.IS_OPEN_REDIS && Constants.DATACENTER_OPEN_REDIS) { + new SaveRedisThread(countKey, count, Constants.HIVE_EXPIRE).start(); + } + return count; + } + + public static ResultSet getResultSet2(Page page, Object bean, String tableName, + Map> col2col, String orderBy, String searchActiveSys) throws Exception { + tableName = tableName.toLowerCase(); + tableName = Configurations.getStringProperty(tableName, "t_" + tableName).trim(); + String showColmun = getFiledsSql(bean.getClass().getSimpleName(), page.getFields()); + StringBuffer sql = new StringBuffer(); + Map filedAndColumnMap = getFiledAndColumnMap(bean.getClass()); + if (null == showColmun || showColmun.equals("")) { + for (String key : filedAndColumnMap.keySet()) { + if (!filedAndColumnMap.get(key).toLowerCase().equals("id")) { + sql.append(filedAndColumnMap.get(key) + ","); + } + } + } else { + sql.append(showColmun); + } + String sqlTrim = sql.toString().trim(); + if (sqlTrim.endsWith(",")) { + sqlTrim = sqlTrim.substring(0, sqlTrim.length() - 1); + } + sql.setLength(0); + sql.append("select " + sqlTrim + " from(select " + sqlTrim + ",row_Num from(select " + sqlTrim + + ",row_number() over() as row_Num from " + tableName + " t where 1=1 "); + if (bean != null) { + Class clazz = bean.getClass(); + for (; clazz != Object.class; clazz = clazz.getSuperclass()) { + // 获取所有的字段包括public,private,protected,private + // Field[] fields = bean.getClass().getDeclaredFields(); + Field[] fields = clazz.getDeclaredFields(); + Long foundTimePartStart = null; + Long foundTimePartEnd = null; + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + String key = f.getName();// 获取字段名 + if (f.getType().getName().equals("java.lang.String") && key.startsWith("search")) { + Object value = getFieldValue(bean, key); + if (value != null) { + setFieldValue(bean, key, value.toString().trim()); + if (key.endsWith("Time")) {// 日期开始或结束的字段 + if (col2col.containsKey(key)) { + value = sdf.parse(value.toString().trim()).getTime() / 1000; + if (key.toLowerCase().equals("searchfoundstarttime")) { + foundTimePartStart = Long.parseLong(value.toString()) / 3600; + } + if (key.toLowerCase().equals("searchfoundendtime")) { + foundTimePartEnd = Long.parseLong(value.toString()) / 3600; + } + if (col2col.get(key).get("start") != null) { + // sql.append(" and " + + // filedAndColumnMap.get(col2col.get(key).get("start")) + // + ">=to_date('" + + // value.toString().trim() + // + "','yyyy-mm-dd HH24:mi:ss')"); + sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("start")) + ">=" + + value + "L"); + } else { + // sql.append(" and " + + // filedAndColumnMap.get(col2col.get(key).get("end")) + // + "<=to_date('" + + // value.toString().trim() + // + "','yyyy-mm-dd HH24:mi:ss')"); + sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("end")) + "<" + + value + "L"); + } + } + } else { + if (key.toLowerCase().startsWith("search")) { + key = key.replace("search", ""); + key = key.substring(0, 1).toLowerCase() + key.substring(1); + } + + if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("cfgid") + || key.toLowerCase().equals("entranceid"))) { + sql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("protocol") || key.toLowerCase().equals("serverip") + || key.toLowerCase().equals("clientip") + || key.toLowerCase().equals("cljip"))) { + sql.append(" and " + filedAndColumnMap.get(key) + "='" + value.toString().trim() + + "'"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && key.toLowerCase().equals("servicetype")) { + sql.append(" and " + filedAndColumnMap.get(key) + "=" + value.toString().trim()); + } + } + } + + } + } + if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 + if (null != foundTimePartStart) { + sql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + } + if (null != foundTimePartEnd) { + sql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + } + } + + } + } + Integer startNum = (page.getPageNo() - 1) * page.getPageSize() + 1; + Integer endNum = startNum - 1 + page.getPageSize(); + sql.append( + " order by " + orderBy + " limit 10000) t1) t2 where row_Num between " + startNum + " and " + endNum); + logger.info("获取数据中心日志sql===================" + sql); + ResultSet query = HiveJDBC.query(sql.toString(), searchActiveSys); + logger.info("获取数据中心日志成功"); + return query; + } + + public static Long getHivePageCount2(Object bean, String tableName, Map> col2col, + String searchActiveSys) throws Exception { + tableName = tableName.toLowerCase(); + tableName = Configurations.getStringProperty(tableName, "t_" + tableName).trim(); + StringBuffer countSql = new StringBuffer(); + Map filedAndColumnMap = getFiledAndColumnMap(bean.getClass()); + countSql.append("select count(1) from " + tableName + " where 1=1 "); + if (bean != null) { + Class clazz = bean.getClass(); + for (; clazz != Object.class; clazz = clazz.getSuperclass()) { + // 获取所有的字段包括public,private,protected,private + // Field[] fields = bean.getClass().getDeclaredFields(); + Field[] fields = clazz.getDeclaredFields(); + Long foundTimePartStart = null; + Long foundTimePartEnd = null; + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + String key = f.getName();// 获取字段名 + if (f.getType().getName().equals("java.lang.String") && key.startsWith("search")) { + Object value = getFieldValue(bean, key); + if (value != null) { + setFieldValue(bean, key, value.toString().trim()); + if (key.endsWith("Time")) {// 日期开始或结束的字段 + if (col2col.containsKey(key)) { + value = sdf.parse(value.toString().trim()).getTime() / 1000; + if (key.toLowerCase().equals("searchfoundstarttime")) { + foundTimePartStart = Long.parseLong(value.toString()) / 3600; + } + if (key.toLowerCase().equals("searchfoundendtime")) { + foundTimePartEnd = Long.parseLong(value.toString()) / 3600; + } + if (col2col.get(key).get("start") != null) { + countSql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("start")) + + ">=" + value + "L"); + } else { + countSql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("end")) + + "<" + value + "L"); + } + } + } else { + if (key.toLowerCase().startsWith("search")) { + key = key.replace("search", ""); + key = key.substring(0, 1).toLowerCase() + key.substring(1); + } + + if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("cfgid") + || key.toLowerCase().equals("entranceid"))) { + countSql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && (key.toLowerCase().equals("protocol") || key.toLowerCase().equals("serverip") + || key.toLowerCase().equals("clientip") + || key.toLowerCase().equals("cljip"))) { + countSql.append(" and " + filedAndColumnMap.get(key) + "='" + + value.toString().trim() + "'"); + } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) + && key.toLowerCase().equals("servicetype")) { + countSql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim()); + } + } + } + + } + } + if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 + if (null != foundTimePartStart) { + countSql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + } + if (null != foundTimePartEnd) { + countSql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + } + } + } + } + logger.info("获取数据中心日志总条数sql==================" + countSql.toString()); + ResultSet countRs = HiveJDBC.query(countSql.toString(), searchActiveSys); + String countStr = null; + while (countRs.next()) { + countStr = countRs.getObject(1).toString(); + break; + } + if (countStr == null || countStr.equals("")) { + logger.info("获取数据中心日志总条数成功总共===================0条配置"); + return 0l; + } + Long count = Long.valueOf(countStr); + logger.info("获取数据中心日志总条数成功总共===================" + count + "条配置"); + HiveJDBC.closeConn(); + return count; + } + + public static String getFiledsSql(String mapName, String fileds) throws Exception { + String[] fieldsColoumn = null; + String orderByStr = ""; + // 所有字段名 + List columnList = new ArrayList(); + // 所有属性名 + List propertyList = new ArrayList(); + // 属性名称为key,字段名称为value + Map columnMap = new HashMap(); + + if (!StringUtil.isBlank(fileds)) { + // 解析Fileds的字段/属性名称 + fieldsColoumn = fileds.split(","); + + // 从resultMap中获取字段名称和属性名称 + if (fieldsColoumn != null) { + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + ResultMap map = sqlSessionFactory.getConfiguration().getResultMap(mapName + "Map"); + List mapping = map.getResultMappings(); + for (ResultMapping mapp : mapping) { + columnList.add(mapp.getColumn().toLowerCase()); + propertyList.add(mapp.getProperty()); + columnMap.put(mapp.getProperty(), mapp.getColumn()); + } + } + if (fieldsColoumn != null) { + fileds = ""; + for (String column : fieldsColoumn) { + if (!StringUtil.isBlank(column)) { + column = column.trim(); + if (columnList.contains(column)) { + fileds += "," + column; + } else if (propertyList.contains(column)) { + fileds += "," + columnMap.get(column).toString(); + } + } + } + if (!StringUtil.isBlank(fileds)) { + fileds = fileds.substring(1); + } + + } + + } + return fileds; + } + + public static Map getFiledAndColumnMap(Class clazz) { + Map map = new HashMap(); + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + ResultMap resultMap = sqlSessionFactory.getConfiguration().getResultMap(clazz.getSimpleName() + "Map"); + List mapping = resultMap.getResultMappings(); + for (ResultMapping mapp : mapping) { + map.put(mapp.getProperty(), mapp.getColumn().toLowerCase()); + } + return map; + + } + + /** + * 利用反射通过get方法获取bean中字段fieldName的值 + * + * @param bean + * @param fieldName + * @return + * @throws Exception + */ + private static Object getFieldValue(Object bean, String fieldName) throws Exception { + StringBuffer result = new StringBuffer(); + String methodName = result.append("get").append(fieldName.substring(0, 1).toUpperCase()) + .append(fieldName.substring(1)).toString(); + + Object rObject = null; + Method method = null; + + @SuppressWarnings("rawtypes") + Class[] classArr = new Class[0]; + method = bean.getClass().getMethod(methodName, classArr); + rObject = method.invoke(bean, new Object[0]); + + return rObject; + } + + /** + * 利用发射调用bean.set方法将value设置到字段 + * + * @param bean + * @param fieldName + * @param value + * @throws Exception + */ + private static void setFieldValue(Object bean, String fieldName, Object value) throws Exception { + StringBuffer result = new StringBuffer(); + String methodName = result.append("set").append(fieldName.substring(0, 1).toUpperCase()) + .append(fieldName.substring(1)).toString(); + /** + * 利用发射调用bean.set方法将value设置到字段 + */ + Class[] classArr = new Class[1]; + classArr[0] = "java.lang.String".getClass(); + Method method = bean.getClass().getMethod(methodName, classArr); + method.invoke(bean, value); + } + + /** + * 比较开始时间或者结束时间是否比当前系统时间早48小时 + * + * @param startTime + * 开始时间 + * @param endTime + * 结束时间 + * @return + * @throws ParseException + */ + public static boolean ifTimeGreaterThan48(String startTime, String endTime) throws Exception { + logger.info("ifTimeGreaterThan48方法开始" + System.currentTimeMillis()); + if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) {// 开始和结束时间都不为空 + Date startDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + if (startDate.getTime() < endDate.getTime()) {// 开始时间比结束时间早 + logger.info("ifTimeGreaterThan48方法结束" + System.currentTimeMillis()); + return gt48(endTime); + } else {// 开始时间比结束时间晚,不符合一般情况 + logger.info("ifTimeGreaterThan48方法结束" + System.currentTimeMillis()); + return false; + } + } else if (null != endTime && !endTime.equals("")) {// 开始时间为空,结束时间不为空 + logger.info("ifTimeGreaterThan48方法结束" + System.currentTimeMillis()); + return gt48(endTime); + } else if (null != startTime && !startTime.equals("")) {// 结束时间为空,开始时间不为空 + logger.info("ifTimeGreaterThan48方法结束" + System.currentTimeMillis()); + return gt48(startTime); + } else {// 开始和结束时间都为空 + logger.info("ifTimeGreaterThan48方法结束" + System.currentTimeMillis()); + return false; + } + + } + + public static boolean gt48(String eqTime) throws ParseException { + logger.info("gt48方法开始" + System.currentTimeMillis()); + Date eqDate = sdf.parse(eqTime); + Long dateNum = eqDate.getTime(); + Long currentDate = new Date().getTime(); + Long time = 0l; + if (dateNum < currentDate) { + time = currentDate - dateNum;// 获取结束时间与当前系统时间的时间差毫秒数 + } else { + logger.info("gt48方法结束" + System.currentTimeMillis()); + return false;// 结束时间比当前系统时间晚,不符合从数据中心查询数据要求(当前日期48小时前数据从数据中心查询) + } + double hours = time.doubleValue() / (1000 * 60 * 60); + Long datacenterTime = Constants.DATACENTER_TIME; + double doubleValue = datacenterTime.doubleValue(); + if (hours > doubleValue) { + logger.info("gt48方法结束" + System.currentTimeMillis()); + return true;// 符合要求 + } else { + logger.info("gt48方法结束" + System.currentTimeMillis()); + return false; + } + + } + + public static void main(String[] args) { + Long datacenterTime = Constants.DATACENTER_TIME; + double doubleValue = datacenterTime.doubleValue(); + System.out.println(doubleValue); + } +} diff --git a/src/main/java/com/nis/web/service/LogService.java b/src/main/java/com/nis/web/service/LogService.java new file mode 100644 index 0000000..b009ecf --- /dev/null +++ b/src/main/java/com/nis/web/service/LogService.java @@ -0,0 +1,27 @@ +package com.nis.web.service; + +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.SysLog; +import com.nis.util.DateUtils; +import com.nis.web.dao.SysLogDao; + +@Service +public class LogService extends CrudService { + +public Page findPage(Page page, SysLog sysLog) { + + // 设置默认时间范围,默认当前月 + if (sysLog.getBeginDate() == null){ + sysLog.setBeginDate(DateUtils.setDays(DateUtils.parseDate(DateUtils.getDate()), 1)); + } + if (sysLog.getEndDate() == null){ + sysLog.setEndDate(DateUtils.addMonths(sysLog.getBeginDate(), 1)); + } + + return super.findPage(page, sysLog); + + } + +} diff --git a/src/main/java/com/nis/web/service/MenuService.java b/src/main/java/com/nis/web/service/MenuService.java new file mode 100644 index 0000000..935b7cc --- /dev/null +++ b/src/main/java/com/nis/web/service/MenuService.java @@ -0,0 +1,97 @@ +package com.nis.web.service; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.SysMenu; +import com.nis.domain.SysUser; +import com.nis.util.CacheUtils; +import com.nis.util.LogUtils; +import com.nis.util.StringUtil; +import com.nis.web.dao.SysMenuDao; +import com.nis.web.security.UserUtils; + +@Service +public class MenuService extends BaseService { + @Autowired + private SysMenuDao menuDao; + + public List findAllMenu() { + return UserUtils.getMenuList(); + } + + public SysMenu getMenu(Long id) { + + return menuDao.get(id); + } + + + public void saveOrUpdateMenu(SysMenu menu) { + + // 获取父节点实体 + menu.setParent(this.getMenu(menu.getParent().getId())); + + // 获取修改前的parentIds,用于更新子节点的parentIds + String oldParentIds = menu.getParentIds(); + + // 设置新的父节点串 + menu.setParentIds(menu.getParent().getParentIds()+menu.getParent().getId()+","); + SysUser user = UserUtils.getUser(); + + // 保存或更新实体 + if (StringUtil.isEmpty(menu.getId())){ + + menu.setUpdateBy(user); + menu.setCreateBy(user); + menu.setCreateDate(new Date()); + menu.setUpdateDate(menu.getCreateDate()); + menu.setDelFlag(1); + menuDao.insert(menu); + }else{ + menu.setUpdateBy(user); + menu.setUpdateDate(new Date()); + menuDao.update(menu); + } + + // 更新子节点 parentIds + SysMenu m = new SysMenu(); + m.setParentIds("%,"+menu.getId()+",%"); + List list = menuDao.findByParentIdsLike(m); + for (SysMenu e : list){ + e.setParentIds(e.getParentIds().replace(oldParentIds, menu.getParentIds())); + menuDao.updateParentIds(e); + } + // 清除用户菜单缓存 + UserUtils.removeCache(UserUtils.CACHE_MENU_LIST); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + // 清除日志相关缓存 + CacheUtils.remove(LogUtils.CACHE_MENU_NAME_PATH_MAP); + } + + public void deleteMenu(SysMenu menu) { + + menuDao.delete(menu); + // 清除用户菜单缓存 + UserUtils.removeCache(UserUtils.CACHE_MENU_LIST); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + // 清除日志相关缓存 + CacheUtils.remove(LogUtils.CACHE_MENU_NAME_PATH_MAP); + + } + + public void updateMenuSort(SysMenu menu) { + menuDao.updateSort(menu); + // 清除用户菜单缓存 + UserUtils.removeCache(UserUtils.CACHE_MENU_LIST); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + // 清除日志相关缓存 + CacheUtils.remove(LogUtils.CACHE_MENU_NAME_PATH_MAP); + } + +} diff --git a/src/main/java/com/nis/web/service/OfficeService.java b/src/main/java/com/nis/web/service/OfficeService.java new file mode 100644 index 0000000..594fabb --- /dev/null +++ b/src/main/java/com/nis/web/service/OfficeService.java @@ -0,0 +1,108 @@ +package com.nis.web.service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.nis.domain.SysOffice; +import com.nis.util.DictUtils; +import com.nis.util.StringUtil; +import com.nis.web.dao.SysOfficeDao; +import com.nis.web.security.UserUtils; +@Service +public class OfficeService extends TreeService{ + + public List findAll() { + return UserUtils.getOfficeList(); + } + + public List findList(Boolean isAll){ + if (isAll != null && isAll){ + return UserUtils.getOfficeAllList(); + }else{ + return UserUtils.getOfficeList(); + } + } + public SysOffice selectByPrimaryKey(Integer id){ + if(id != null){ + + return dao.selectByPrimaryKey(id); + }else{ + return null; + } + } + + public List findAllOfficeList(SysOffice office){ + //office.getSqlMap().put("dsf", dataScopeFilter(UserUtils.getUser(), "a", "")); + if (!StringUtil.isEmpty(office.getId()) && office.getId() != 1l) { + office.setParentIds(office.getParentIds()+office.getId()+","+"%"); + } else { + office.setParentIds(office.getParentIds()+"%"); + } + + return dao.findByParentIdsLike(office); + + } + + public void saveOrUpdate(SysOffice office) { + if (StringUtil.isEmpty(office.getId())) { + office.setCreateTime(new Date()); + office.setDelFlag(1); + } + + this.save(office); + + + if(office.getChildDeptList() != null) { + SysOffice childOffice = null; + for(String id : office.getChildDeptList()){ + childOffice = new SysOffice(); + childOffice.setName(DictUtils.getDictLabel("SYS_OFFICE_COMMON", id, "未知")); + childOffice.setParent(office); + childOffice.setArea(office.getArea()); + childOffice.setType(2); + childOffice.setGrade(office.getGrade()+1); + childOffice.setUseable(1); + childOffice.setCreateTime(new Date()); + childOffice.setDelFlag(1); + this.save(childOffice); + } + } + + + UserUtils.removeCache(UserUtils.CACHE_OFFICE_LIST); + + } + + public void delete(SysOffice office) { + super.delete(office); + UserUtils.removeCache(UserUtils.CACHE_OFFICE_LIST); + } + + public List selectOfficeForDeptment(Map map) { + List sysOfficeList=dao.selectOfficeForDeptment(map); + return sysOfficeList; + } + + public List selectOfficeForLetter(Map hmap) { + List sysOfficeList=dao.selectOfficeForLetter(hmap); + return sysOfficeList; + + } + public List selectLowerDeptement(Map hmap) { + List sysOfficeList=dao.selectLowerDeptement(hmap); + return sysOfficeList; + + } + + public List selectSysOffice(SysOffice sysOffice) { + + return dao.selectSysOffice(sysOffice); + + } + + + +} diff --git a/src/main/java/com/nis/web/service/RoleService.java b/src/main/java/com/nis/web/service/RoleService.java new file mode 100644 index 0000000..bea2c12 --- /dev/null +++ b/src/main/java/com/nis/web/service/RoleService.java @@ -0,0 +1,80 @@ +package com.nis.web.service; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +import com.nis.util.StringUtil; +import com.nis.web.dao.SysRoleDao; +import com.nis.web.security.UserUtils; + +@Service +public class RoleService extends BaseService { + @Autowired + private SysRoleDao roleDao; + + public List findAllRole() { + return UserUtils.getRoleList(); + } + + public SysRole getRole(Long id) { + + return roleDao.get(id); + } + + + public SysRole getRoleByName(String name) { + SysRole r = new SysRole(); + r.setName(name); + return roleDao.getByName(r); + } + + + public void saveOrUpdate(SysRole role) { + if (StringUtil.isEmpty(role.getId())){ + role.setCreateTime(new Date()); + role.setStatus(1); + roleDao.insert(role); + // 同步到Activiti + //saveActivitiGroup(role); + }else{ + roleDao.update(role); + // 更新角色与菜单关联 + roleDao.deleteRoleMenu(role); + } + + if (role.getMenuList().size() > 0){ + roleDao.insertRoleMenu(role); + } + + // 同步到Activiti + //saveActivitiGroup(role); + // 清除用户角色缓存 + UserUtils.removeCache(UserUtils.CACHE_ROLE_LIST); + List userList = roleDao.findUserByRole(role); + for (SysUser user : userList) { + UserUtils.clearCache(user); + } + +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + } + + public void deleteRole(SysRole role) { + roleDao.delete(role); + // 同步到Activiti + //deleteActivitiGroup(role); + // 清除用户角色缓存 + //UserUtils.removeCache(UserUtils.CACHE_ROLE_LIST); + UserUtils.clearCache(); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + } + + + +} diff --git a/src/main/java/com/nis/web/service/SaveRequestLogThread.java b/src/main/java/com/nis/web/service/SaveRequestLogThread.java new file mode 100644 index 0000000..b18af6b --- /dev/null +++ b/src/main/java/com/nis/web/service/SaveRequestLogThread.java @@ -0,0 +1,365 @@ +/** + *@Title: SaveLogThread.java + *@Package com.nis.web.service.logthread + *@Description TODO + *@author dell + *@date 2016年10月14日 下午6:26:41 + *@version 版本号 + */ +package com.nis.web.service; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.log4j.Logger; + +import com.nis.datasource.CustomerContextHolder; + +/** + * @ClassName: SaveLogThread.java + * @Description: TODO + * @author (dell) + * @date 2016年10月14日 下午6:26:41 + * @version V1.0 + */ +public class SaveRequestLogThread implements Runnable { + private Logger logger=Logger.getLogger(SaveRequestLogThread.class); + private ServicesRequestLogService service; + private String remoteAddr; + private String requestURI; + private String queryString; + private String contextPath; + private String operator; + private String version; + private int opAction; + private Date opTime; + private Object content; + private Date requestTime; + private long consumerTime; + private int businessCode; + private String exceptionInfo; + /* (non-Javadoc) + * @see java.lang.Runnable#run() + */ + + @Override + public void run() { + logger.info("线程开始执行!"); + //新开线程切换数据源,不影响action中的数据源 + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_C);//开启数据源C + // TODO Auto-generated method stub + if(service!=null){ + service.saveRequestLog(remoteAddr,requestURI,queryString,contextPath, operator, version, opAction, opTime, content, requestTime, consumerTime,businessCode,exceptionInfo); + }else{ + logger.error("service 为空!"); + } + CustomerContextHolder.clearCustomerType(); + } + public SaveRequestLogThread(){ + super(); + } + /** + * 创建一个新的实例 SaveRequestLogThread. + * + * @param service + * @param requestAddr + * @param requestURI + * @param queryString + * @param contextPath + * @param operator + * @param version + * @param opAction + * @param opTime + * @param content + * @param requestTime + * @param consumerTime + */ + public SaveRequestLogThread(ServicesRequestLogService service, String remoteAddr, String requestURI, + String queryString, String contextPath, String operator, String version, int opAction, Date opTime, + Object content, Date requestTime, long consumerTime,String exceptionInfo) { + super(); + this.service = service; + this.remoteAddr = remoteAddr; + this.requestURI = requestURI; + this.queryString = queryString; + this.contextPath = contextPath; + this.operator = operator; + this.version = version; + this.opAction = opAction; + this.opTime = opTime; + this.content = content; + this.requestTime = requestTime; + this.consumerTime = consumerTime; + this.exceptionInfo=exceptionInfo; + } + public SaveRequestLogThread(ServicesRequestLogService service,String operator, String version, int opAction, Date opTime, + Object content, Date requestTime, long consumerTime,String exceptionInfo) { + super(); + this.service = service; + this.operator = operator; + this.version = version; + this.opAction = opAction; + this.opTime = opTime; + this.content = content; + this.requestTime = requestTime; + this.consumerTime = consumerTime; + this.exceptionInfo=exceptionInfo; + } + + public static SaveRequestLogThread getNewSaveRequestLogThread(HttpServletRequest request){ + SaveRequestLogThread thread=new SaveRequestLogThread(); + thread.setRemoteAddr(request.getRemoteAddr()); + thread.setRequestURI(request.getRequestURI()); + thread.setQueryString(request.getQueryString()); + thread.setContextPath(request.getContextPath()); + thread.setRequestTime(new Date()); + BufferedReader reader=null; + String line=null; + StringBuilder bulider=new StringBuilder(); + try { + reader=request.getReader(); + while((line=reader.readLine())!=null){ + bulider.append(line); + bulider.append("\n"); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally{ + if(reader!=null){ + try { + reader.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + if(bulider.toString().length()>0){ + thread.setContent(bulider.toString()); + } + return thread; + } + /** + * service + * @return service + */ + + public ServicesRequestLogService getService() { + return service; + } + + /** + * @param service the service to set + */ + public void setService(ServicesRequestLogService service) { + this.service = service; + } + + /** + * remoteAddr + * @return remoteAddr + */ + + public String getRemoteAddr() { + return remoteAddr; + } + + /** + * @param remoteAddr the remoteAddr to set + */ + public void setRemoteAddr(String remoteAddr) { + this.remoteAddr = remoteAddr; + } + + /** + * requestURI + * @return requestURI + */ + + public String getRequestURI() { + return requestURI; + } + + /** + * @param requestURI the requestURI to set + */ + public void setRequestURI(String requestURI) { + this.requestURI = requestURI; + } + + /** + * queryString + * @return queryString + */ + + public String getQueryString() { + return queryString; + } + + /** + * @param queryString the queryString to set + */ + public void setQueryString(String queryString) { + this.queryString = queryString; + } + + /** + * contextPath + * @return contextPath + */ + + public String getContextPath() { + return contextPath; + } + + /** + * @param contextPath the contextPath to set + */ + public void setContextPath(String contextPath) { + this.contextPath = contextPath; + } + + /** + * operator + * @return operator + */ + + public String getOperator() { + return operator; + } + + /** + * @param operator the operator to set + */ + public void setOperator(String operator) { + this.operator = operator; + } + + /** + * version + * @return version + */ + + public String getVersion() { + return version; + } + + /** + * @param version the version to set + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * opAction + * @return opAction + */ + + public int getOpAction() { + return opAction; + } + + /** + * @param opAction the opAction to set + */ + public void setOpAction(int opAction) { + this.opAction = opAction; + } + + /** + * opTime + * @return opTime + */ + + public Date getOpTime() { + return opTime; + } + + /** + * @param opTime the opTime to set + */ + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + /** + * content + * @return content + */ + + public Object getContent() { + return content; + } + + /** + * @param content the content to set + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * requestTime + * @return requestTime + */ + + public Date getRequestTime() { + return requestTime; + } + + /** + * @param requestTime the requestTime to set + */ + public void setRequestTime(Date requestTime) { + this.requestTime = requestTime; + } + + /** + * consumerTime + * @return consumerTime + */ + + public long getConsumerTime() { + return consumerTime; + } + + /** + * @param consumerTime the consumerTime to set + */ + public void setConsumerTime(long consumerTime) { + this.consumerTime = consumerTime; + } + /** + * businessCode + * @return businessCode + */ + + public int getBusinessCode() { + return businessCode; + } + /** + * @param businessCode the businessCode to set + */ + public void setBusinessCode(int businessCode) { + this.businessCode = businessCode; + } + /** + * exceptionInfo + * @return exceptionInfo + */ + + public String getExceptionInfo() { + return exceptionInfo; + } + /** + * @param exceptionInfo the exceptionInfo to set + */ + public void setExceptionInfo(String exceptionInfo) { + this.exceptionInfo = exceptionInfo; + } +} diff --git a/src/main/java/com/nis/web/service/ServicesRequestLogService.java b/src/main/java/com/nis/web/service/ServicesRequestLogService.java new file mode 100644 index 0000000..21143e9 --- /dev/null +++ b/src/main/java/com/nis/web/service/ServicesRequestLogService.java @@ -0,0 +1,323 @@ +/** + *@Title: ServicesRequestLogService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service; + +import java.io.StringReader; +import java.lang.reflect.Field; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Date; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.ibatis.mapping.ResultMapping; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.datasource.DynamicDataSource; +import com.nis.domain.Page; +import com.nis.domain.ServicesRequestLog; +import com.nis.domain.restful.ServicesRequestLogBean; +import com.nis.util.Constants; +import com.nis.util.StringUtils; +import com.nis.web.dao.ServicesRequestLogDao; + +/** + * @ClassName: ServicesRequestLogService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class ServicesRequestLogService { + protected final Logger logger = Logger.getLogger(this.getClass()); + @Autowired + public ServicesRequestLogDao servicesRequestLogDao; + + private void saveLog(ServicesRequestLog log) { + servicesRequestLogDao.insert(log); + } + + /** + * + * saveRequestLog(记录请求日志) (这里描述这个方法适用条件 – 可选) + * + * @param requestAddr + * request中的参数 + * @param requestURI + * request中的参数 + * @param queryString + * request中的参数 + * @param contextPath + * request中的参数 + * @param request + * 请求 + * @param response + * 响应 + * @param operator + * 操作人 + * @param version + * 版本 + * @param opAction + * 操作行为 + * @param opTime + * 操作时间 + * @param content + * 请求体 + * @param requestTime + * 请求到达服务器时间 + * @param consumerTime + * 耗时 void + * @throws UnknownHostException + * @exception @since + * 1.0.0 + */ + public void saveRequestLog(String requestAddr, String requestURI, String queryString, String contextPath, + String operator, String version, int opAction, Date opTime, Object content, Date requestTime, + long consumerTime, int businessCode, String exceptionInfo) { + logger.info("开始记录日志---"); + logger.info("请求IP---" + requestAddr); + logger.info("请求路径---" + requestURI); + logger.info("请求内容---" + queryString); + ServicesRequestLog log = new ServicesRequestLog(); + log.setRequestIp(requestAddr); + log.setOperator(operator); + log.setVersion(version); + log.setOpAction(opAction); + log.setVersion(version); + log.setOpTime(opTime); + log.setRequestTime(requestTime); + log.setConsumerTime(consumerTime); + log.setBusinessCode(businessCode); + log.setExceptionInfo(exceptionInfo); + try { + if(Constants.SERVCER_HOST!=null){ + log.setServerIp(Constants.SERVCER_HOST); + }else if(isWindows()){ + Constants.SERVCER_HOST=InetAddress.getLocalHost().getHostAddress(); + log.setServerIp(Constants.SERVCER_HOST); + }else{ + InetAddress ip=null; + boolean bFindIP=false; + Enumeration netInterfaces=(Enumeration) + NetworkInterface.getNetworkInterfaces(); + while(netInterfaces.hasMoreElements()){ + if(bFindIP){ + break; + } + NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement(); + Enumeration ips=ni.getInetAddresses(); + while(ips.hasMoreElements()){ + ip=(InetAddress)ips.nextElement(); + if(ip.isSiteLocalAddress()&&!ip.isLoopbackAddress()&&ip.getHostAddress().indexOf(":")==-1){ + bFindIP=true; + break; + } + } + } + if(null !=ip){ + Constants.SERVCER_HOST=ip.getHostAddress(); + log.setServerIp(ip.getHostAddress()); + } + } + + } catch (UnknownHostException e) { + logger.error("无法获取当前服务器ip"); + e.printStackTrace(); + } catch (SocketException e) { + // TODO Auto-generated catch block + logger.error("无法获取当前服务器ip"); + e.printStackTrace(); + } + String type = null; + Pattern p = Pattern.compile(contextPath + "/service/([^/]+)/([^/]+)/"); + Matcher m = p.matcher(requestURI); + if (m.find()) { + type = m.group(1); + logger.info("请求类型:" + type); + } + if (log.getVersion() == null) + log.setVersion(m.group(2)); + if (opAction == Constants.OPACTION_GET) {// get请求不会携带boby + if ("file".equals(type)) {// 文件下载 + log.setRequestContent(content.toString()); + } else { + if (!StringUtils.isBlank(queryString)) { + log.setRequestContent(queryString); + } + } + } else { + if ("file".equals(type)) {// 文件上传 + log.setRequestContent(content.toString()); + } else { + if (content != null) { + log.setRequestContent(content.toString()); + } + + } + + } + this.saveLog(log); + logger.info("记录日志完成---"); + } + public boolean isWindows(){ + boolean isWindows=false; + if(System.getProperty("os.name").toLowerCase().indexOf("windows")>-1){ + isWindows=true; + } + return isWindows; + } + /** + * 直接从数据源获取connection保存日志的方法,用saveLog()方法就行 save(这里用一句话描述这个方法的作用) + * (这里描述这个方法适用条件 – 可选) + * + * @param data + * @throws IllegalArgumentException + * @throws IllegalAccessException + * void + * @exception @since + * 1.0.0 + */ + public void save(ServicesRequestLog data) throws IllegalArgumentException, IllegalAccessException { + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + // map由于无序,不能用 columnMap生成sql语句 + Map columnMap = new HashMap(); + for (ResultMapping mapp : sqlSessionFactory.getConfiguration() + .getResultMap(data.getClass().getSimpleName() + "Map").getResultMappings()) { + columnMap.put(mapp.getProperty(), mapp.getColumn()); + } + // + DynamicDataSource dataSource = SpringContextHolder.getBean(DynamicDataSource.class); + StringBuffer sql = new StringBuffer(); + String table = StringUtils.toUnderScoreCase(data.getClass().getSimpleName()).toUpperCase(); + sql.append("INSERT INTO "); + sql.append(table); + sql.append("(ID,"); + Field[] fields = data.getClass().getDeclaredFields(); + for (int i = 0; i < fields.length; i++) { + fields[i].setAccessible(true); + String fieldName = fields[i].getName(); + if (!"id".equals(fieldName) && columnMap.containsKey(fieldName) && fields[i].get(data) != null) { + sql.append(columnMap.get(fieldName)); + sql.append(","); + } + } + if (sql.lastIndexOf(",") == sql.toString().length() - 1) { + sql.deleteCharAt(sql.toString().length() - 1); + } + sql.append(") values(SEQ_SERVICES_REQUEST_LOG.Nextval,"); + for (int i = 0; i < fields.length; i++) { + if (columnMap.containsKey(fields[i].getName()) && fields[i].get(data) != null) { + sql.append("?"); + sql.append(","); + } + } + if (sql.lastIndexOf(",") == sql.toString().length() - 1) { + sql.deleteCharAt(sql.toString().length() - 1); + } + sql.append(")"); + logger.info("日志新增sql:" + sql.toString()); + Connection connection = null; + PreparedStatement prepareStatement = null; + StringReader reader = null; + try { + connection = dataSource.getConnection(); + prepareStatement = connection.prepareStatement(sql.toString()); + int i = 1; + for (Field field : fields) { + if (columnMap.containsKey(field.getName())) { + String type = field.getType().getSimpleName(); + if (field.get(data) == null) + continue; + if (type.equals("String")) { + if (field.getName().equals("requestContent")) { + String content = (String) field.get(data); + reader = new StringReader(content); + prepareStatement.setCharacterStream(i, reader, content.length()); + } else + prepareStatement.setString(i, (String) (field.get(data))); + } else if (type.equals("Long")) { + prepareStatement.setLong(i, (Long) (field.get(data))); + } else if (type.equals("Integer")) { + prepareStatement.setInt(i, (Integer) (field.get(data))); + } else if (type.equals("Date")) { + java.sql.Date sqlDate = new java.sql.Date(((Date) field.get(data)).getTime()); + prepareStatement.setDate(i, sqlDate); + } + i++; + } + } + prepareStatement.executeUpdate(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + try { + if (prepareStatement != null) { + prepareStatement.close(); + } + if (connection != null) { + connection.close(); + } + if (reader != null) + reader.close(); + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + } + + try { + if (prepareStatement != null) { + prepareStatement.close(); + } + if (connection != null) { + connection.close(); + } + if (reader != null) + reader.close(); + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + public void deleteById(String id) { + String[] split = id.split(","); + for (String str : split) { + if(!str.equals("")){ + servicesRequestLogDao.deleteById(Long.parseLong(str)); + } + } + } + + public void deleteAll() { + servicesRequestLogDao.deleteAll(); + } + + public Page getAllLog(Page page, + ServicesRequestLogBean requestLog) { + requestLog.setPage(page); + page.setList(servicesRequestLogDao.getAllLog(requestLog)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/SpringContextHolder.java b/src/main/java/com/nis/web/service/SpringContextHolder.java new file mode 100644 index 0000000..12b1c2f --- /dev/null +++ b/src/main/java/com/nis/web/service/SpringContextHolder.java @@ -0,0 +1,88 @@ +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.web.service; + + +import org.apache.commons.lang3.Validate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + + +/** + * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext. + * + * @author Zaric + * @date 2013-5-29 下午1:25:40 + */ +@Service +@Lazy(false) +public class SpringContextHolder implements ApplicationContextAware, DisposableBean { + + private static ApplicationContext applicationContext = null; + + private static Logger logger = LoggerFactory.getLogger(SpringContextHolder.class); + + /** + * 取得存储在静态变量中的ApplicationContext. + */ + public static ApplicationContext getApplicationContext() { + assertContextInjected(); + return applicationContext; + } + + /** + * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) { + assertContextInjected(); + return (T) applicationContext.getBean(name); + } + + /** + * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + public static T getBean(Class requiredType) { + assertContextInjected(); + return applicationContext.getBean(requiredType); + } + + /** + * 清除SpringContextHolder中的ApplicationContext为Null. + */ + public static void clearHolder() { + if (logger.isDebugEnabled()){ + logger.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext); + } + applicationContext = null; + } + + /** + * 实现ApplicationContextAware接口, 注入Context到静态变量中. + */ + @Override + public void setApplicationContext(ApplicationContext applicationContext) { + SpringContextHolder.applicationContext = applicationContext; + } + + /** + * 实现DisposableBean接口, 在Context关闭时清理静态变量. + */ + @Override + public void destroy() throws Exception { + SpringContextHolder.clearHolder(); + } + + /** + * 检查ApplicationContext不为空. + */ + private static void assertContextInjected() { + Validate.validState(applicationContext != null, "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder."); + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/SystemService.java b/src/main/java/com/nis/web/service/SystemService.java new file mode 100644 index 0000000..c478395 --- /dev/null +++ b/src/main/java/com/nis/web/service/SystemService.java @@ -0,0 +1,355 @@ +package com.nis.web.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.xml.namespace.QName; + +import org.apache.axiom.om.OMAbstractFactory; +import org.apache.axiom.om.OMElement; +import org.apache.axiom.om.OMFactory; +import org.apache.axiom.om.OMNamespace; +import org.apache.axiom.om.impl.OMNamespaceImpl; +import org.apache.axis2.AxisFault; +import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.client.Options; +import org.apache.axis2.client.ServiceClient; +import org.apache.axis2.rpc.client.RPCServiceClient; +import org.apache.commons.io.FileUtils; +import org.apache.shiro.session.Session; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.SrcIp; +import com.nis.domain.SysRole; +import com.nis.domain.SysUser; +import com.nis.domain.WebServiceClient; +import com.nis.util.Configurations; +import com.nis.util.DateUtils; +import com.nis.util.IpUtil; +import com.nis.util.StringUtil; +import com.nis.util.TimeConstants; +import com.nis.web.dao.SrcIpDao; +import com.nis.web.dao.SysOfficeDao; +import com.nis.web.dao.UserDao; +import com.nis.web.security.Servlets; +import com.nis.web.security.SessionDAO; +import com.nis.web.security.UserUtils; + +@Service +public class SystemService extends BaseService{ + + @Autowired + private SessionDAO sessionDao; + + @Autowired + private UserDao userDao; + + @Autowired + private SysOfficeDao sysOfficeDao; + + @Autowired + private SrcIpDao srcIpDao; + + + public Collection getActiveSessions(boolean includeLeave) { + return sessionDao.getActiveSessions(includeLeave); + } + + + public Collection getActiveSessions(boolean includeLeave, Object principal, Session filterSession) { + return sessionDao.getActiveSessions(includeLeave, principal, filterSession); + } + + public void deleteSession(Session session) { + sessionDao.delete(session); + } + + + public SysUser getUserByLoginName(String loginName) { + return UserUtils.getByLoginName(loginName); + } + + public List ipLookUp(String ip) { + return srcIpDao.getIpInfo(IpUtil.getIpHostDesimal(ip)); + } + + + public SysUser assignUserToRole(SysRole role, SysUser user) { + if (user == null){ + return null; + } + List roleIds = user.getRoleIdList(); + if (roleIds.contains(role.getId())) { + return null; + } + user.getUserRoleList().clear(); + user.getUserRoleList().add(role); + userDao.insertUserRole(user); + UserUtils.clearCache(user); + return user; + } + + public Boolean outUserInRole(SysRole role, SysUser user) { + List roles = user.getUserRoleList(); + for (SysRole e : roles){ + if (e.getId().equals(role.getId())){ + roles.remove(e); + userDao.removeUserInRole(user.getId(),role.getId()); + return true; + } + } + return false; + } + + public boolean officeIsValid(Long officeId, Long companyId) { + return userDao.officeIsExistOfCompany(officeId, companyId) >0 ? true : false; + } + + + + + /** + * 用户机构 + * @param client + * @return + */ + private String getOAServiceData(WebServiceClient client) { + ServiceClient sender = null; + String result = ""; + try { + sender = new ServiceClient(); + EndpointReference endpointReference = new EndpointReference(client.getEndPoint()); + Options options = new Options(); + options.setAction(client.getNs()+"/"+client.getMethodName()); + options.setTo(endpointReference); + sender.setOptions(options); + //添加soapheader验证消息头 + sender.addHeader(setHeader(client.getNs(), client.getRid(), client.getSid())); + OMFactory fac = OMAbstractFactory.getOMFactory(); + // 设置命名空间 + OMNamespace omNs = fac.createOMNamespace(client.getNs(), ""); + //OMElement data = fac.createOMElement("服务输入接口", omNs); + OMElement data = fac.createOMElement(client.getMethodName(),client.getNs(),""); + // 对应参数的节点 + //String[] strs = new String[] { "pageSize","currentPage","param" }; + String[] strs = client.getOpArgs(); + // 参数值 + String[] vals = client.getOpVals(); + for (int i = 0; i < strs.length; i++) { + OMElement inner = fac.createOMElement(strs[i],"",""); + inner.setText(vals[i]); + data.addChild(inner); + } + // 发送数据,返回结果 + OMElement resultE = sender.sendReceive(data); + result = resultE.toString(); + result = result.replaceAll("<", "<"); + result = result.replaceAll(">", ">"); + result = result.substring( result.indexOf(""), result.indexOf("")+13); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally{ + try { + sender.cleanupTransport(); + } catch (AxisFault e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return result; + + } + + /** + * + * @param client webservice 客户端对象 + * @return + */ + private String getOAServiceData_old(WebServiceClient client) throws Exception { + String result = null; + RPCServiceClient serviceClient = null; + try { + serviceClient = new RPCServiceClient(); + Options options = serviceClient.getOptions(); + options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CONNECTION_TIMEOUT, client.getConnectionTimeOut()*1000); + EndpointReference targetEPR = new EndpointReference(client.getEndPoint()); + + // ====================新增 添加header ========================start + serviceClient.addHeader(setHeader(client.getNs(), client.getRid(), client.getSid())); + // ====================新增 添加header ========================end + + // 原有业务逻辑不动 + options.setTo(targetEPR); + QName opAddEntry = new QName(client.getNs(), client.getMethodName()); + + Class[] returnTypes = new Class[] { String.class }; + String[] opVals = new String[]{String.valueOf(client.getPageSize()),String.valueOf(client.getCurrentPage()),"", "MB_HR_CY_JSSF"}; + // 调用plus方法并输出该方法的返回值 + result =serviceClient.invokeBlocking(opAddEntry,client.getOpVals(), returnTypes)[0].toString(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("get OA data error :"+e); + } finally { + serviceClient.cleanupTransport(); + } + + //result = getTestFormXml(); + return result; + } + + + /** + * 结果信息存入文件 + * @param result + * @throws IOException + */ + private void saveToFile(String prefixName, String result) throws IOException{ + String flieName = prefixName + DateUtils.formatDate(new Date(), TimeConstants.YYYYMMDDHH24MMSS); + String filePath = Servlets.getRequest().getServletContext().getRealPath(Configurations.getStringProperty("userfiles.basedir", "")) + File.separator + + "upload" + File.separator + flieName + ".txt"; + FileUtils.writeStringToFile(new File(filePath), result, false); + + } + + /** + * 新增设置header信息,需要修改里面rid、sid对应的值、sid为服务唯一标识、 rid为请求者唯一标识 + */ + private static OMElement setHeader(String ns, String rid, String sid) { + OMFactory fac = OMAbstractFactory.getOMFactory(); + // OMNamespace指定此SOAP文档名称空间。 + OMNamespaceImpl omNs = (OMNamespaceImpl) fac.createOMNamespace(ns, "ns1"); + // 创建header元素,并指定其在omNs指代的名称空间中,header名称固定为CyberpoliceSBReqHeader。 + OMElement method = fac.createOMElement("CyberpoliceSBReqHeader", omNs); + + // 指定元素的文本内容。 + OMElement ridE = fac.createOMElement("rid", omNs); + // TODO将下面的值修改为请求者在系统中的唯一标识 + ridE.setText(rid); + method.addChild(ridE); + + OMElement sidE = fac.createOMElement("sid", omNs); + // TODO将下面的值修改要请求服务的唯一标识 + sidE.setText(sid); + method.addChild(sidE); + + OMElement timeoutE = fac.createOMElement("timeout", omNs); + // TODO将下面的值修改为请求的超时时间,单位秒 + timeoutE.setText(Configurations.getStringProperty("webservice.request.timeout", "60")); + method.addChild(timeoutE); + + OMElement secE = fac.createOMElement("sec", omNs); + // TODO将下面的值修改为请求密码,如果使用其他加密方式,则根据要求统一修改即可 + secE.setText(""); + method.addChild(secE); + return method; + } + + + + /** + * 获取数据字典信息 + * @param method + * @param date + * @return + * @throws Exception + */ + public String syncDataDict(String method) throws Exception { + + String methodName = null; + String ns = Configurations.getStringProperty("webservice.data.dict.service.url", ""); + String rid = Configurations.getStringProperty("webservice.rid", ""); + String sid = Configurations.getStringProperty("webservice.data.dict.sid", ""); + if (method.equals("QL")) { + methodName = Configurations.getStringProperty("webservice.method.name.ql", ""); + } + WebServiceClient webServiceClient = new WebServiceClient(ns, methodName, rid, sid, null); + + + Map resultMap = new HashMap(); + resultMap.put("dataCount", 0); + resultMap.put("insertCount", 0); + resultMap.put("updateCount", 0); + resultMap.put("deleteCount", 0); + resultMap.put("invalid", 0); + Date syncTime = null; + try{ + + while(true) { + String result = getOAServiceData(webServiceClient); + if (StringUtil.isBlank(result)) { + break; + } + logger.info(result); + webServiceClient.incrementPage();//next page + } + + logger.info("同步用户数据总计:"+resultMap.get("dataCount")); + + //saveDataResult(resultMap.get("dataCount"),resultMap.get("insertCount"), + //resultMap.get("updateCount"),resultMap.get("deleteCount"),resultMap.get("invalid"),Constants.SYNC_YH,methodName.equals("getData")?Constants.SYNC_QL:Constants.SYNC_ZL,syncTime); + }catch(Exception e){ + e.printStackTrace(); + return "同步失败,获取数据异常!"+e; + } + + return "同步完成! 数据总数量:" + resultMap.get("dataCount") +"; 插入数量:" +resultMap.get("insertCount")+"; 更新数量:" + +resultMap.get("updateCount") +"; 删除数量:" +resultMap.get("deleteCount")+"; 无效数量"+resultMap.get("invalid"); + + } + + public String syncDataDictBM(String method) throws Exception{ + String methodName = null; + String ns = Configurations.getStringProperty("webservice.data.dict.bm.url", ""); + String rid = Configurations.getStringProperty("webservice.rid", ""); + String sid = Configurations.getStringProperty("webservice.data.dict.bm.sid", ""); + if (method.equals("QL")) { + methodName = Configurations.getStringProperty("webservice.method.name.ql", ""); + } + WebServiceClient webServiceClient = new WebServiceClient(ns, methodName, rid, sid, null); + String result = null; + try { + result = getOAServiceData(webServiceClient); + } catch (Exception e) { + return "同步失败,获取数据异常!"+e; + } + return result ; + } + + + public String syncDataDictCode(String method) throws Exception{ + String methodName = null; + String ns = Configurations.getStringProperty("webservice.data.code.url", ""); + String rid = Configurations.getStringProperty("webservice.rid", ""); + String sid = Configurations.getStringProperty("webservice.data.dict.code.sid", ""); + if (method.equals("QL")) { + methodName = Configurations.getStringProperty("webservice.method.name.ql", ""); + } + WebServiceClient webServiceClient = new WebServiceClient(ns, methodName, rid, sid, null); + String result = null; + try { + result = getOAServiceData(webServiceClient); + saveToFile("DataDictCode", result); + } catch (Exception e) { + return "同步失败,获取数据异常!"+e; + } + return result ; + } + + + + + + + + +} diff --git a/src/main/java/com/nis/web/service/TreeService.java b/src/main/java/com/nis/web/service/TreeService.java new file mode 100644 index 0000000..d78b54c --- /dev/null +++ b/src/main/java/com/nis/web/service/TreeService.java @@ -0,0 +1,81 @@ + +package com.nis.web.service; + +import java.util.List; + +import org.springframework.transaction.annotation.Transactional; + +import com.nis.domain.TreeEntity; +import com.nis.exceptions.ServiceException; +import com.nis.util.Reflections; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.web.dao.TreeDao; + +/** + * Service基类 + * @author ThinkGem + * @version 2014-05-16 + */ +public abstract class TreeService, T extends TreeEntity> extends CrudService { + + public void save(T entity) { + + @SuppressWarnings("unchecked") + Class entityClass = Reflections.getClassGenricType(getClass(), 1); + + // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体 + if (entity.getParent() == null || StringUtil.isEmpty(entity.getParentId()) + || "0".equals(entity.getParentId())){ + entity.setParent(null); + }else{ + entity.setParent(super.get(entity.getParentId())); + } + if (entity.getParent() == null){ + T parentEntity = null; + try { + parentEntity = entityClass.getConstructor(Long.class).newInstance(0l); + } catch (Exception e) { + throw new ServiceException(e); + } + entity.setParent(parentEntity); + entity.getParent().setParentIds(StringUtils.EMPTY); + } + + // 获取修改前的parentIds,用于更新子节点的parentIds + String oldParentIds = entity.getParentIds(); + + // 设置新的父节点串 + entity.setParentIds(entity.getParent().getParentIds()+entity.getParent().getId()+","); + + // 保存或更新实体 + super.save(entity); + + // 更新子节点 parentIds + T o = null; + try { + o = entityClass.newInstance(); + } catch (Exception e) { + throw new ServiceException(e); + } + o.setParentIds("%,"+entity.getId()+",%"); + List list = dao.findByParentIdsLike(o); + for (T e : list){ + if (e.getParentIds() != null && oldParentIds != null){ + e.setParentIds(e.getParentIds().replace(oldParentIds, entity.getParentIds())); + preUpdateChild(entity, e); + dao.updateParentIds(e); + } + } + + } + + /** + * 预留接口,用户更新子节前调用 + * @param childEntity + */ + protected void preUpdateChild(T entity, T childEntity) { + + } + +} diff --git a/src/main/java/com/nis/web/service/UserService.java b/src/main/java/com/nis/web/service/UserService.java new file mode 100644 index 0000000..7f444d0 --- /dev/null +++ b/src/main/java/com/nis/web/service/UserService.java @@ -0,0 +1,162 @@ +package com.nis.web.service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.SysUser; +import com.nis.exceptions.ServiceException; +import com.nis.util.CacheUtils; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.web.dao.UserDao; +import com.nis.web.security.UserUtils; + +@Service +public class UserService extends BaseService { + /**@Resource**/ + @Autowired + private UserDao userDao; + + + /** + * 获取用户 + * @param id + * @return + */ + public SysUser getUser(String id) { + return UserUtils.get(id); + } + + + + public Page findUser(Page page, SysUser user) { + // 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL) + user.getSqlMap().put("dsf", dataScopeFilter(user.getCurrentUser(), "o", "u")); + // 设置分页参数 + user.setPage(page); + // 执行分页查询 + page.setList(userDao.findList(user)); + return page; + } + + + + public SysUser getUserById(Long id) { + return userDao.getUserById(id); + } + + public SysUser getUserByLoginName(String loginName) { + return userDao.getUserByLoginName(loginName); + } + + + public SysUser getUserByIdWithRelation(Long userId) { + return userDao.getUserWithRelation(new SysUser(userId, null)); + } + + + + + public void saveOrUpdate(SysUser user) { + + if (StringUtil.isEmpty(user.getId())) { + user.setCreateTime(new Date()); + user.setStatus(1); + userDao.insert(user); + } else { + SysUser oldUser = userDao.getUserWithRelation(user); + // 清除原用户机构用户缓存 + if (!StringUtil.isEmpty(oldUser.getOffice())) { + CacheUtils.remove(UserUtils.USER_CACHE, UserUtils.USER_CACHE_LIST_BY_OFFICE_ID_ + oldUser.getOffice().getId()); + } + + userDao.update(user); + userDao.deleteUserRole(user.getId()); + + //userDao.deleteUserOffice(user.getId()); + + } + + + /*if (!StringUtil.isEmpty(user.getOffice())) { + user.addOffice(user.getOffice()); + userDao.insertUserOffice(user); + }else { + throw new ServiceException(user.getLoginId() + "没有设置部门!"); + }*/ + + if (!StringUtil.isEmpty(user.getUserRoleList())) { + userDao.insertUserRole(user); + } else { + throw new ServiceException(user.getLoginId() + "没有设置角色!"); + } + + // 将当前用户同步到Activiti + //saveActivitiUser(user); + UserUtils.clearCache(user); + // 清除权限缓存 + //systemRealm.clearAllCachedAuthorizationInfo(); + + + + + } + + + public void deleteUser(SysUser user) { + userDao.delete(user); + // 同步到Activiti + //deleteActivitiUser(user); + // 清除用户缓存 + UserUtils.clearCache(user); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + } + + + public void updatePasswordById(Long id, String loginId, String newPassword) { + SysUser user = new SysUser(id,loginId); + user.setPassword(StringUtils.entryptPassword(newPassword)); + userDao.updatePasswordById(user); + UserUtils.clearCache(user); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + } + + + + + public List findUserByRoleId(Long id) { + return userDao.findUserByRoleId(id); + } + + + + public List findUserByOfficeId(Long id) { + return userDao.findUserByOfficeId(id); + } + + + + public void updateUserInfo(SysUser user) { + userDao.updateUserInfo(user); + // 清除用户缓存 + UserUtils.clearCache(user); +// // 清除权限缓存 +// systemRealm.clearAllCachedAuthorizationInfo(); + + + } + + public List findDeptLeader(Integer DeptementId){ + return userDao.findDeptLeader(DeptementId); + } + + +} diff --git a/src/main/java/com/nis/web/service/restful/ConfigPzIdService.java b/src/main/java/com/nis/web/service/restful/ConfigPzIdService.java new file mode 100644 index 0000000..8be0358 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/ConfigPzIdService.java @@ -0,0 +1,43 @@ +/** + * + */ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.ConfigPzIdSource; +import com.nis.web.dao.ConfigPzIdDao; +import com.nis.web.service.BaseLogService; + +/** + * @ClassName:ConfigPzIdService + * @Description:TODO(这里用一句话描述这个类的作用) + * @author (zdx) + * @date 2017年9月20日 上午10:43:36 + * @version V1.0 + */ +@Service +public class ConfigPzIdService extends BaseLogService { + + protected final Logger logger = Logger.getLogger(this.getClass()); + /** + * 持久层对象 + */ + @Autowired + protected ConfigPzIdDao dao; + + public ConfigPzIdSource getConfigPzIdList(ConfigPzIdSource entity){ + List pzIdList = new ArrayList(); + entity.setSourceName(entity.getSourceName().toUpperCase()); + for (int i = 0; i < entity.getNum(); i++) { + pzIdList.add(dao.getConfigPzIdList(entity)); + } + entity.setPzIdList(pzIdList); + return entity; + } +} diff --git a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java new file mode 100644 index 0000000..78f06ab --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java @@ -0,0 +1,2007 @@ +package com.nis.web.service.restful; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; + +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigCompileTest; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; +import com.nis.restful.CompileJudgeCode; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.CompileVal; +import com.nis.util.Configurations; +import com.nis.util.OracleErrorCodeUtil; +import com.nis.util.StringUtil; +import com.nis.util.StringUtils; +import com.nis.web.dao.ConfigCompileDao; +import com.nis.web.dao.ConfigGroupRelationDao; +import com.nis.web.dao.IpRegionDao; +import com.nis.web.dao.NumRegionDao; +import com.nis.web.dao.StrRegionDao; +import com.nis.web.service.BaseService; +import com.nis.web.service.SaveRequestLogThread; +import com.nis.web.service.SpringContextHolder; + +/** + * @ClassName: ControlService + * @Description: TODO(编译配置持久化) + * @author (zx) + * @date 2016年9月6日 下午1:08:12 + * @version V1.0 + */ +@Service +public class ConfigSourcesService extends BaseService { + /** + * 存放多线程异常信息 + */ + private static List msgList = new ArrayList(); + + public static List getMsgList() { + return msgList; + } + + public static void setMsgList(List msgList) { + ConfigSourcesService.msgList = msgList; + } + + protected final Logger logger1 = Logger.getLogger(this.getClass()); + private Map> map; + @Autowired + private ConfigCompileDao configCompileDao; + + @Autowired + private IpRegionDao ipRegionDao; + @Autowired + private NumRegionDao numRegionDao; + + @Autowired + private ConfigGroupRelationDao configGroupRelationDao; + @Autowired + private StrRegionDao strRegionDao; + + public static Map> getTableRelation() { + Map> tableMap = new HashMap>(); + Map typeMap = new HashMap(); + typeMap.put("DF_IP_PORT", "ip"); + tableMap.put(1, typeMap); + + typeMap = new HashMap(); + typeMap.put("FX_IP_PORT", "ip"); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + tableMap.put(2, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_HTTP_REQ_HDR", "str"); + typeMap.put("DF_HTTP_URL", "str"); + tableMap.put(3, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_HTTP_RES_HDR", "str"); + tableMap.put(4, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_HTTP_REQ_BODY", "str"); + typeMap.put("DF_HTTP_RES_BODY", "str"); + tableMap.put(5, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_MAIL_HDR", "str"); + typeMap.put("DF_MAIL_BODY", "str"); + tableMap.put(13, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_DNS_REGION", "str"); + tableMap.put(6, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_FTP_URL", "str"); + tableMap.put(14, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + tableMap.put(7, typeMap); + tableMap.put(8, typeMap); + tableMap.put(9, typeMap); + tableMap.put(10, typeMap); + tableMap.put(11, typeMap); + typeMap.put("DF_SSL_REGION", "str"); + tableMap.put(12, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("FX_HTTP_REQ_HDR", "str"); + typeMap.put("FX_HTTP_URL", "str"); + tableMap.put(15, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("FX_DNS_REGION", "str"); + tableMap.put(16, typeMap); + + typeMap = new HashMap(); + typeMap.put("DJ_IP_PORT", "ip"); + typeMap.put("DJ_IP_PKT_BIN", "str"); + tableMap.put(48, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_HTTP_REQ_HDR", "str"); + typeMap.put("DJ_HTTP_URL", "str"); + tableMap.put(49, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_HTTP_RES_HDR", "str"); + tableMap.put(50, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_HTTP_REQ_BODY", "str"); + typeMap.put("DJ_HTTP_RES_BODY", "str"); + tableMap.put(51, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_MAIL_HDR", "str"); + typeMap.put("DJ_MAIL_BODY", "str"); + tableMap.put(60, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_DNS_RES_REGION", "str"); + typeMap.put("DJ_DNS_REQ_REGION", "str"); + tableMap.put(52, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_FTP_URL", "str"); + tableMap.put(53, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + tableMap.put(54, typeMap); + tableMap.put(55, typeMap); + tableMap.put(56, typeMap); + tableMap.put(57, typeMap); + tableMap.put(58, typeMap); + typeMap.put("DJ_SSL_REGION", "str"); + tableMap.put(59, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_L2TP_URL", "str"); + tableMap.put(32, typeMap); + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_PPTP_URL", "str"); + tableMap.put(33, typeMap); + + // 20161109新增业务类型 + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_HTTP_REQ_HDR", "str"); + typeMap.put("DF_HTTP_REQ_BODY", "str"); + typeMap.put("DF_HTTP_URL", "str"); + tableMap.put(17, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DF_HTTP_RES_HDR", "str"); + typeMap.put("DF_HTTP_RES_BODY", "str"); + typeMap.put("DF_HTTP_URL", "str"); + tableMap.put(18, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_HTTP_REQ_HDR", "str"); + typeMap.put("DJ_HTTP_REQ_BODY", "str"); + typeMap.put("DJ_HTTP_URL", "str"); + tableMap.put(61, typeMap); + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + typeMap.put("DJ_HTTP_RES_HDR", "str"); + typeMap.put("DJ_HTTP_RES_BODY", "str"); + typeMap.put("DJ_HTTP_URL", "str"); + tableMap.put(62, typeMap); + + + typeMap = new HashMap(); + typeMap.put("UNIVERSAL_PROTO_TYPE", "num"); + typeMap.put("UNIVERSAL_IP", "ip"); + tableMap.put(35, typeMap); + tableMap.put(36, typeMap); + tableMap.put(37, typeMap); + return tableMap; + } + + /** + * 批量(mybatis方式)修改配置业务逻辑-->1:先进行基础配置验证传过来的json串是否符合格式(配置分组关系前端不能设置为无效,程序会根据传过来的编译配置和域配置等信息自动设置为无效). + * 符合要求调用updateConfigCompile方法继续验证 + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param compileList + * 编译配置集合 + * @return + * @throws Exception + */ + public void updateConfigSource(SaveRequestLogThread thread, long start, List configSource, + Date opTime, StringBuffer sb) { + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try { + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + if (null != configSource && configSource.size() > 0) { + for (ConfigCompile config : configSource) { + String msg = CompileVal.compileIsOk(config, true, sb); + if (msg != CompileJudgeCode.CompileIsOk.getErrorReason()) { + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + updateConfigCompile(thread, start, config, batchSqlSession, opTime, sb); + } + + } else { + thread.setExceptionInfo("编译配置不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置不能为空" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + logger1.info("数据保存到数据库提交事务开始"); + batchSqlSession.commit(); + logger1.info("数据保存到数据库成功"); + } catch (RestServiceException e) { + logger1.error(e); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause() + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, e.getMessage() + sb.toString(), + e.getErrorCode()); + } catch (Exception e) { + + logger1.error(e); + String errorCode = OracleErrorCodeUtil.getOraCode(e); + if (!StringUtils.isEmpty(errorCode)) { + logger1.error("数据更新发生异常!"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause() + sb.toString()); + OracleErrorCodeUtil.throwExceptionInfo(thread, System.currentTimeMillis() - start, errorCode); + } else { + thread.setExceptionInfo("数据更新发生异常" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "数据更新发生异常" + sb.toString(), + RestBusinessCode.unknow_error.getValue()); + } + } finally { + if (batchSqlSession != null) { + batchSqlSession.close(); + } + } + + } + + /** + * 批量(mybatis方式)修改配置业务逻辑-->2:判断配置在数据库中是否已经是无效了如果是无效则提示不能修改无效的配置为有效(因为如果数据库中的编译配置与配置分组关系以及域配置均是无效,传过来的数据是编译配置和配置分组关系是有效,域配置是无效,这样会将数据库中无效的编译配置置为有效,这是不允许的) + * 3:如果编译配置置为无效将所有的配置分组关系置为无效,不修改域配置状态(分组复用考虑,域可能被其他的组引用) + * 4:如果编译配置为有效,域配置为无效,则先获取该编译配置下各个配置分组关系下的所有有效的域配置信息和所有无效的域配置信息,如果数据库中有效的域配置信息和前端传过来置为无效的的域配置信息个数,id都相等,则将对应域配置,配置分组关系,编译配置均置为无效 + * + * 20161124讨论暂时先去掉2步骤,因为界面目前传过来的数据编译配置,配置分组关系,域配置均是无效,所以就不执行第2步骤了影响性能(方法内注释的代码,如果以后业务需要调整打开下面代码即可) + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param compileList + * 编译配置集合 + * @return + * @throws Exception + */ + + public void updateConfigCompile(SaveRequestLogThread thread, long start, ConfigCompile config, + SqlSession batchSqlSession, Date opTime, StringBuffer sb) throws Exception { + List ipRegionList = config.getIpRegionList(); + List strRegionList = config.getStrRegionList(); + List numRegionList = config.getNumRegionList(); + List groupRelationList = config.getGroupRelationList(); + if (config.getIsValid() == 1) { + if (groupRelationList == null || groupRelationList.size() == 0) { + thread.setExceptionInfo("配置分组数量不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "配置分组数量不能为空" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + if ((ipRegionList == null || ipRegionList.size() == 0) + && (strRegionList == null || strRegionList.size() == 0) + && (numRegionList == null || numRegionList.size() == 0)) { + thread.setExceptionInfo("域配置数量不能全部为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "域配置数量不能全部为空" + sb.toString(), RestBusinessCode.config_integrity_error.getValue()); + } + } + + // ConfigCompile configCompile = + // configCompileDao.queryConfigCompileById(config.getCompileId());// + // 先判断该条编译配置数据库中状态是否为无效,如果无效则提示用户不能将无效状态改为有效状态 + // if (configCompile.getIsValid() == 1) {// 数据库中编译配置为有效状态才可以进行修改操作 + /** + * 1:编译配置置为无效,需要将其下所有配置分组置为无效,如果数据中将域配置置为了无效则将域配置置为无效,否则不修改域配置是否生效标志 + * 2:编译配置置为有效,不修改编译配置状态(编译配置不能从无效变有效,只能从有效变无效)仅修改编译配置其他属性, + */ + + List queryCompileGroupByPID = configGroupRelationDao + .queryCompileGroupByPID(config.getCompileId()); + + if (null == queryCompileGroupByPID || queryCompileGroupByPID.size() == 0) { + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "配置id为" + config.getCompileId() + "的配置在数据库中找不到对应的配置分组关系,请检查json串是否正确" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + if (config.getIsValid() == 0) {// 编译配置修改为无效,需要将所有的配置分组置为无效 + if (null != queryCompileGroupByPID && queryCompileGroupByPID.size() > 0) { + for (ConfigGroupRelation configGroupRelation : queryCompileGroupByPID) { + configGroupRelation.setIsValid(0); + configGroupRelation.setOpTime(opTime); + + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(ConfigGroupRelationDao.class) + .updateConfigGroupRelation(configGroupRelation); + } + } + } + config.setLastUpdate(new Date()); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(ConfigCompileDao.class).updateConfigCompile(config); + } + + } else { + regionUpdate(thread, start, config, queryCompileGroupByPID, batchSqlSession, opTime, sb); + } + + // } else {// 数据库中编译配置为无效状态不能进行操作 + // throw new RestServiceException(thread, System.currentTimeMillis() - + // start, "不能修改无效的编译配置信息", + // RestBusinessCode.missing_args.getValue()); + // } + + } + + /** + * 获取编译配置下所有的配置分组关系对应的有效,无效域配置id + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param config + * 编译配置对象 + * @param queryCompileGroupByPID + * 当前编译下所有的配置分组关系 + * @return + */ + public void regionUpdate(SaveRequestLogThread thread, long start, ConfigCompile config, + List queryCompileGroupByPID, SqlSession batchSqlSession, Date opTime, StringBuffer sb) + throws Exception { + Map>> regionMap = getRegionList(thread, System.currentTimeMillis() - start, config, + queryCompileGroupByPID, batchSqlSession, sb); + Map> validMap = regionMap.get("validMap");// 获取该编译配置下所有的配置分组关系及组下有效的域配置id + Map> noValidMap = regionMap.get("noValidMap");// 获取该编译配置下所有的配置分组关系及组下无效的域配置id + List ipRegionList = config.getIpRegionList();// 获取编译下所有ip类域配置(要修改的数据) + List strRegionList = config.getStrRegionList();// 获取编译下所有字符串类域配置(要修改的数据 + List numRegionList = config.getNumRegionList();// 获取编译下所有数值类域配置(要修改的数据 + int num = 0; + for (Long regionId : validMap.keySet()) {// 遍历配置分组 + List validList = validMap.get(regionId);// 获取配置分组下有效的域配置id + List noValidList = noValidMap.get(regionId);// 获取配置分组下无效的域配置id + int count = 0; + if (null != ipRegionList && ipRegionList.size() > 0) { + List tableList = new ArrayList(); + for (IpRegion ipRegion : ipRegionList) { + if (ipRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(ipRegion.getRegionId())) { + if (ipRegion.getIsValid() == 0) { + ipRegion.setOpTime(opTime); + ipRegion.setLastUpdate(new Date()); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(IpRegionDao.class).updateIpRegion(ipRegion); + } + count++; + if (!tableList.contains(ipRegion.getTableName())) { + tableList.add(ipRegion.getTableName()); + } + } + } else if (null != noValidList && noValidList.contains(ipRegion.getRegionId())) { + String msg = "不能修改无效的ip类域配置compile为" + config.getCompileId() + "regionid为" + + ipRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } else { + String msg = "找不到对应的的ip类域配置compile为" + config.getCompileId() + "regionid为" + + ipRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } + } + } + + } + + if (null != strRegionList && strRegionList.size() > 0) { + List tableList = new ArrayList(); + for (StrRegion strRegion : strRegionList) { + if (strRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(strRegion.getRegionId())) { + if (strRegion.getIsValid() == 0) { + strRegion.setOpTime(opTime); + strRegion.setLastUpdate(new Date()); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(StrRegionDao.class).updateStrRegion(strRegion); + } + count++; + if (!tableList.contains(strRegion.getTableName())) { + tableList.add(strRegion.getTableName()); + } + } + } else if (null != noValidList && noValidList.contains(strRegion.getRegionId())) { + String msg = "不能修改无效的字符串类域配置compile为" + config.getCompileId() + "regionid为" + + strRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } else { + String msg = "找不到对应的的字符串类域配置compile为" + config.getCompileId() + "regionid为" + + strRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } + } + } + + } + if (null != numRegionList && numRegionList.size() > 0) { + List tableList = new ArrayList(); + for (NumRegion numRegion : numRegionList) { + if (numRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(numRegion.getRegionId())) { + if (numRegion.getIsValid() == 0) { + numRegion.setOpTime(opTime); + numRegion.setLastUpdate(new Date()); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(NumRegionDao.class).updateNumRegion(numRegion); + } + count++; + if (!tableList.contains(numRegion.getTableName())) { + tableList.add(numRegion.getTableName()); + } + + } + } else if (null != noValidList && noValidList.contains(numRegion.getRegionId())) { + String msg = "不能修改无效的数值类域配置compile为" + config.getCompileId() + "regionid为" + + numRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } else { + String msg = "找不到对应的的数值类域配置compile为" + config.getCompileId() + "regionid为" + + numRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(msg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg, + RestBusinessCode.missing_args.getValue()); + } + } + } + + } + if (count == validList.size()) {// 数据库中当前配置分组下有效的域配置,均被修改为无效,所以要将该配置分组置为无效 + List groupRelationList = config.getGroupRelationList(); + for (ConfigGroupRelation configGroupRelation : groupRelationList) { + if (configGroupRelation.getGroupId().equals(regionId)) { + num++; + configGroupRelation.setIsValid(0); + configGroupRelation.setOpTime(opTime); + configGroupRelation.setLastUpdate(new Date()); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(ConfigGroupRelationDao.class) + .updateConfigGroupRelation(configGroupRelation); + } + } + } + + } + } + + if (num == validMap.size()) {// 所有的域均是无效的所有的组均是无效,需要将编译配置置为无效 + config.setIsValid(0); + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + batchSqlSession.getMapper(ConfigCompileDao.class).updateConfigCompile(config); + } + } + } + + public Map>> getRegionList(SaveRequestLogThread thread, long start, + ConfigCompile config, List queryCompileGroupByPID, SqlSession batchSqlSession, + StringBuffer sb) { + Map>> map = new HashMap>>(); + Map> tableRelationMap = getTableRelation(); + Map updateTableMap = tableRelationMap.get(config.getService().intValue());// 根据service获取需要操作的域配置表 + if (null == updateTableMap) { + thread.setExceptionInfo("找不到编译对应的service" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "找不到编译对应的service" + sb.toString(), RestBusinessCode.missing_args.getValue()); + } + + Long[] groupId = new Long[queryCompileGroupByPID.size()]; + for (int i = 0; i < queryCompileGroupByPID.size(); i++) { + groupId[i] = queryCompileGroupByPID.get(i).getGroupId(); + } + // 获取当前编译下所有的域配置信息 + List ipRegionExistList = new ArrayList(); + List strRegionExistList = new ArrayList(); + List numRegionExistList = new ArrayList(); + for (String tableName : updateTableMap.keySet()) { + if (updateTableMap.get(tableName).equals("ip")) { + List queryIpRegionByGroupId = ipRegionDao.queryIpRegionByGroupId(tableName, groupId); + ipRegionExistList.addAll(queryIpRegionByGroupId); + } + if (updateTableMap.get(tableName).equals("num")) { + numRegionExistList.addAll(numRegionDao.queryNumRegionByGroupId(tableName, groupId)); + } + if (updateTableMap.get(tableName).equals("str")) { + strRegionExistList.addAll(strRegionDao.queryStrRegionByGroupId(tableName, groupId)); + } + } + + Map> validMap = new HashMap>();// 获取当前编译下所有的组,及每个组下面的有效域配置 + Map> noValidMap = new HashMap>();// 获取当前编译下所有的组,及每个组下面的无效域配置 + for (IpRegion ipRegion : ipRegionExistList) { + if (ipRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(ipRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + validRegionList.add(ipRegion.getRegionId()); + validMap.put(ipRegion.getGroupId(), validRegionList); + } else { + validRegionList = validMap.get(ipRegion.getGroupId()); + // if (!validRegionList.contains(ipRegion.getRegionId())) { + validRegionList.add(ipRegion.getRegionId()); + validMap.put(ipRegion.getGroupId(), validRegionList); + // } + } + } + if (ipRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(ipRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(ipRegion.getRegionId()); + noValidMap.put(ipRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(ipRegion.getGroupId()); + // if (!noValidRegionList.contains(ipRegion.getRegionId())) + // { + noValidRegionList.add(ipRegion.getRegionId()); + noValidMap.put(ipRegion.getGroupId(), noValidRegionList); + // } + } + } + } + + for (StrRegion strRegion : strRegionExistList) { + if (strRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(strRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + + validRegionList.add(strRegion.getRegionId()); + + validMap.put(strRegion.getGroupId(), validRegionList); + } else { + validRegionList = validMap.get(strRegion.getGroupId()); + // if (!validRegionList.contains(strRegion.getRegionId())) { + validRegionList.add(strRegion.getRegionId()); + validMap.put(strRegion.getGroupId(), validRegionList); + + // } + } + } + if (strRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(strRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(strRegion.getRegionId()); + noValidMap.put(strRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(strRegion.getGroupId()); + // if (!noValidRegionList.contains(strRegion.getRegionId())) + // { + noValidRegionList.add(strRegion.getRegionId()); + noValidMap.put(strRegion.getGroupId(), noValidRegionList); + // } + } + } + } + for (NumRegion numRegion : numRegionExistList) { + if (numRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(numRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + validRegionList.add(numRegion.getRegionId()); + validMap.put(numRegion.getGroupId(), validRegionList); + + } else { + validRegionList = validMap.get(numRegion.getGroupId()); + // if (!validRegionList.contains(numRegion.getRegionId())) { + validRegionList.add(numRegion.getRegionId()); + validMap.put(numRegion.getGroupId(), validRegionList); + // } + + } + } + if (numRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(numRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(numRegion.getRegionId()); + noValidMap.put(numRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(numRegion.getGroupId()); + // if (!noValidRegionList.contains(numRegion.getRegionId())) + // { + noValidRegionList.add(numRegion.getRegionId()); + noValidMap.put(numRegion.getGroupId(), noValidRegionList); + // } + } + } + } + + map.put("noValidMap", noValidMap); + map.put("validMap", validMap); + return map; + + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /** + * 批量插入配置编译数据在数据库中循环 + * + * @param configSource + * @throws Exception + */ + public void insertConfigSourceData(SaveRequestLogThread thread, long _start, List configSource, + StringBuffer sb) { + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try { + // batchSqlSession = + // sqlSessionFactory.openSession(ExecutorType.SIMPLE, false); + batchSqlSession = sqlSessionFactory.openSession(); + int index = 150; + int count = configSource.size() % index == 0 ? configSource.size() / index + : configSource.size() / index + 1; + for (int i = 0; i < count; i++) { + int start = i * index; + int end = i * index + index; + if (end > configSource.size()) { + end = configSource.size(); + } + List compileList = configSource.subList(start, end); + insertConfigComLileData(thread, _start, compileList, sb); + // logger1.info(insertConfigComLile); + } + + logger1.info("数据保存到数据库提交事务开始"); + batchSqlSession.commit(); + logger1.info("数据保存到数据库成功"); + + } catch (RestServiceException e) { + logger1.error(e); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause() + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - _start, e.getMessage() + sb.toString(), + e.getErrorCode()); + + } catch (Exception e) { + logger1.error(e); + String errorCode = OracleErrorCodeUtil.getOraCode(e); + if (!StringUtils.isEmpty(errorCode)) { + thread.setExceptionInfo("数据保存发生异常" + sb.toString()); + OracleErrorCodeUtil.throwExceptionInfo(thread, System.currentTimeMillis() - _start, errorCode); + } else { + thread.setExceptionInfo("数据保存发生异常" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - _start, "数据保存发生异常" + sb.toString(), + RestBusinessCode.unknow_error.getValue()); + } + + } finally { + if (batchSqlSession != null) { + batchSqlSession.close(); + } + } + + } + + /** + * 验证数据是否符合要求 插入编译配置数据 验证分组配置数据 验证域配置数据 方法二 数据库中循环 + * + * @param configCompileList + * @param batchSqlSession + * @return + * @throws Exception + */ + private String insertConfigComLileData(SaveRequestLogThread thread, long start, + List configCompileList, StringBuffer sb) throws Exception { + + List groupRelationList = new ArrayList(); + Map> strRegionMap = new HashMap>(); + Map> strStongRegionMap = new HashMap>(); + Map> ipRegionMap = new HashMap>(); + Map> numRegionMap = new HashMap>(); + + for (ConfigCompile configCompile : configCompileList) { + String msg = CompileVal.compileIsOk(configCompile, false, sb); + if (msg != CompileJudgeCode.CompileIsOk.getErrorReason()) { + logger1.error(msg); + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + if (null != configCompile.getGroupRelationList() && configCompile.getGroupRelationList().size() > 0) { + groupRelationList.addAll(configCompile.getGroupRelationList()); + } else { + logger1.error("配置分组数量不能为空" + sb.toString()); + thread.setExceptionInfo("配置分组数量不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "配置分组数量不能为空" + sb.toString(), + RestBusinessCode.missing_args.getValue()); + } + if (null != configCompile.getStrRegionList() && configCompile.getStrRegionList().size() > 0) { + for (StrRegion strRegion : configCompile.getStrRegionList()) { + if (!isStrStrongRegion(strRegion.getTableName())) { + if (strRegion.getRegionId() == null) { + String errorMsg = "字符类域配置id不能为空 ,表名---" + strRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + if (strRegionMap.containsKey(strRegion.getTableName())) { + strRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strRegionList = new ArrayList(); + strRegionList.add(strRegion); + strRegionMap.put(strRegion.getTableName(), strRegionList); + } + } else { + if (strRegion.getRegionId() == null) { + String errorMsg = "增强字符类域配置id不能为空 ,表名---" + strRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + if (strStongRegionMap.containsKey(strRegion.getTableName())) { + strStongRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strStrongRegionList = new ArrayList(); + strStrongRegionList.add(strRegion); + strStongRegionMap.put(strRegion.getTableName(), strStrongRegionList); + } + + } + } + } + + if (null != configCompile.getIpRegionList() && configCompile.getIpRegionList().size() > 0) { + for (IpRegion ipRegion : configCompile.getIpRegionList()) { + if (!ipRegion.getTableName().toUpperCase().equals("DJ_IP_PORT")) { + ipRegion.setProtocol(0); + } + + if (ipRegion.getRegionId() == null) { + String errorMsg = "ip类域配置id不能为空 ,表名---" + ipRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + + if (ipRegionMap.containsKey(ipRegion.getTableName())) { + ipRegionMap.get(ipRegion.getTableName()).add(ipRegion); + } else { + List ipRegionList = new ArrayList(); + ipRegionList.add(ipRegion); + ipRegionMap.put(ipRegion.getTableName(), ipRegionList); + } + } + } + + if (null != configCompile.getNumRegionList() && configCompile.getNumRegionList().size() > 0) { + for (NumRegion numRegion : configCompile.getNumRegionList()) { + if (numRegion.getRegionId() == null) { + String errorMsg = "数值类域配置id不能为空 ,表名---" + numRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + + if (numRegionMap.containsKey(numRegion.getTableName())) { + numRegionMap.get(numRegion.getTableName()).add(numRegion); + } else { + List numRegionList = new ArrayList(); + numRegionList.add(numRegion); + numRegionMap.put(numRegion.getTableName(), numRegionList); + } + } + } + } + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + configCompileDao.saveCompileBatch(configCompileList); + if (groupRelationList.size() > 0) { + for (ConfigGroupRelation group : groupRelationList) { + configGroupRelationDao.saveConfigGroupRelation(group); + } + } + for (String str : strRegionMap.keySet()) { + strRegionDao.saveStrRegionBatch(strRegionMap.get(str).get(0).getTableName(), strRegionMap.get(str)); + } + for (String strStrong : strStongRegionMap.keySet()) { + strRegionDao.saveStrStrongRegionBatch(strStongRegionMap.get(strStrong).get(0).getTableName(), + strStongRegionMap.get(strStrong)); + } + for (String ip : ipRegionMap.keySet()) { + ipRegionDao.saveIpRegionBatch(ipRegionMap.get(ip).get(0).getTableName(), ipRegionMap.get(ip)); + } + for (String num : numRegionMap.keySet()) { + numRegionDao.saveNumRegionBatch(numRegionMap.get(num).get(0).getTableName(), numRegionMap.get(num)); + } + } + return "编译配置数据验证成功"; + + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public Page queryAllCompile(Page page, ConfigCompileTest entity) + throws SQLException { + entity.setPage(page); + page.setList(configCompileDao.queryAllCompile(entity.getSearchEndTime(), entity.getSearchStartTime(), + entity.getService(), entity.getCompileId())); + return page; + } + + public List queryAllCompile(ConfigCompileTest entity) { + return configCompileDao.queryAllCompile(entity.getSearchEndTime(), entity.getSearchStartTime(), + entity.getService(), entity.getCompileId()); + } + + public List queryConfigCompileByIdArr(String compileIdArr) { + return configCompileDao.queryConfigCompileByIdArr(compileIdArr); + } + + public List getGroupByCompile(long compileId) { + return configGroupRelationDao.queryCompileGroupByPID(compileId); + } + + public List getStrRegionByGId(List tableList, Long[] groupId) { + List strRegionList = new ArrayList(); + if (null != tableList && tableList.size() > 0) { + for (String tableName : tableList) { + List queryStrRegionByGroupId = null; + if (isStrStrongRegion(tableName)) { + queryStrRegionByGroupId = strRegionDao.queryStrStrongRegionByGroupId(tableName, groupId); + } else { + queryStrRegionByGroupId = strRegionDao.queryStrRegionByGroupId(tableName, groupId); + } + + if (null != queryStrRegionByGroupId && queryStrRegionByGroupId.size() > 0) { + for (StrRegion strRegion : queryStrRegionByGroupId) { + strRegion.setTableName(tableName); + strRegionList.add(strRegion); + } + } + + } + } + + return strRegionList; + } + + public List getIpRegionByGId(String table, Long[] groupId) { + List queryIpRegionByGroupId = ipRegionDao.queryIpRegionByGroupId(table, groupId); + for (IpRegion ipRegion : queryIpRegionByGroupId) { + ipRegion.setTableName(table); + } + return queryIpRegionByGroupId; + } + + public List getNumRegionByGId(String table, Long[] groupId) { + List queryNumRegionByGroupId = numRegionDao.queryNumRegionByGroupId(table, groupId); + for (NumRegion numRegion : queryNumRegionByGroupId) { + numRegion.setTableName(table); + } + return queryNumRegionByGroupId; + } + + public static boolean isStrStrongRegion(String tableName) { + if (null != tableName && !tableName.equals("")) { + tableName = tableName.toUpperCase(); + List tableList = new ArrayList(); + tableList.add("DF_HTTP_REQ_HDR"); + tableList.add("FX_HTTP_REQ_HDR"); + tableList.add("DF_HTTP_RES_HDR"); + tableList.add("DF_DNS_REGION"); + tableList.add("FX_DNS_REGION"); + tableList.add("DF_SSL_REGION"); + tableList.add("DF_MAIL_HDR"); + tableList.add("DF_MAIL_BODY"); + + tableList.add("DJ_HTTP_REQ_HDR"); + tableList.add("DJ_HTTP_RES_HDR"); + tableList.add("DJ_DNS_REQ_REGION"); + tableList.add("DJ_DNS_RES_REGION"); + tableList.add("DJ_SSL_REGION"); + tableList.add("DJ_MAIL_HDR"); + tableList.add("DJ_MAIL_BODY"); + // tableList.add("DF_L2TP_URL");//20161021数据库中该表改为普通字符串表 + // tableList.add("DF_PPTP_URL");//20161021数据库中该表改为普通字符串表 + if (tableList.contains(tableName)) { + return true; + } else { + return false; + } + } else { + return false; + } + + } + + public Map getTableMap(Integer service) { + if (map == null || map.size() == 0) { + map = getTableRelation(); + } + return map.get(service); + } + + public Map> getMap() { + return map; + } + + public void setMap(Map> map) { + this.map = map; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /** + * jdbc方式添加和修改 + */ + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + public String saveByJDBCThread(SaveRequestLogThread thread, long start, List configCompileList, + StringBuffer sb) { + List groupRelationList = new ArrayList(); + Map> strRegionMap = new HashMap>(); + Map> strStongRegionMap = new HashMap>(); + Map> ipRegionMap = new HashMap>(); + Map> numRegionMap = new HashMap>(); + + for (ConfigCompile configCompile : configCompileList) { + String msg = CompileVal.compileIsOk(configCompile, false, sb); + if (msg != CompileJudgeCode.CompileIsOk.getErrorReason()) { + logger1.error(msg); + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + if (null != configCompile.getGroupRelationList() && configCompile.getGroupRelationList().size() > 0) { + groupRelationList.addAll(configCompile.getGroupRelationList()); + } else { + logger1.error("配置分组数量不能为空" + sb.toString()); + thread.setExceptionInfo("配置分组数量不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "配置分组数量不能为空" + sb.toString(), + RestBusinessCode.missing_args.getValue()); + } + if (null != configCompile.getStrRegionList() && configCompile.getStrRegionList().size() > 0) { + for (StrRegion strRegion : configCompile.getStrRegionList()) { + if (!isStrStrongRegion(strRegion.getTableName())) { + if (strRegion.getRegionId() == null) { + String errorMsg = "字符类域配置id不能为空 ,表名---" + strRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + if (strRegionMap.containsKey(strRegion.getTableName())) { + strRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strRegionList = new ArrayList(); + strRegionList.add(strRegion); + strRegionMap.put(strRegion.getTableName(), strRegionList); + } + } else { + if (strRegion.getRegionId() == null) { + String errorMsg = "增强字符类域配置id不能为空 ,表名---" + strRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + if (strStongRegionMap.containsKey(strRegion.getTableName())) { + strStongRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strStrongRegionList = new ArrayList(); + strStrongRegionList.add(strRegion); + strStongRegionMap.put(strRegion.getTableName(), strStrongRegionList); + } + + } + } + } + + if (null != configCompile.getIpRegionList() && configCompile.getIpRegionList().size() > 0) { + for (IpRegion ipRegion : configCompile.getIpRegionList()) { + if (!ipRegion.getTableName().toUpperCase().equals("DJ_IP_PORT")) { + ipRegion.setProtocol(0); + } + + if (ipRegion.getRegionId() == null) { + String errorMsg = "ip类域配置id不能为空 ,表名---" + ipRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + + if (ipRegionMap.containsKey(ipRegion.getTableName())) { + ipRegionMap.get(ipRegion.getTableName()).add(ipRegion); + } else { + List ipRegionList = new ArrayList(); + ipRegionList.add(ipRegion); + ipRegionMap.put(ipRegion.getTableName(), ipRegionList); + } + } + } + + if (null != configCompile.getNumRegionList() && configCompile.getNumRegionList().size() > 0) { + for (NumRegion numRegion : configCompile.getNumRegionList()) { + if (numRegion.getRegionId() == null) { + String errorMsg = "数值类域配置id不能为空 ,表名---" + numRegion.getTableName() + "" + sb.toString(); + logger1.error(errorMsg); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, errorMsg, + RestBusinessCode.missing_args.getValue()); + } + + if (numRegionMap.containsKey(numRegion.getTableName())) { + numRegionMap.get(numRegion.getTableName()).add(numRegion); + } else { + List numRegionList = new ArrayList(); + numRegionList.add(numRegion); + numRegionMap.put(numRegion.getTableName(), numRegionList); + } + } + } + } + + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + int count = 0; + if (null != configCompileList && configCompileList.size() > 0) { + count += 1; + } + if (null != groupRelationList && groupRelationList.size() > 0) { + count += 1; + } + if (null != strRegionMap && strRegionMap.size() > 0) { + count += strRegionMap.size(); + } + if (null != strStongRegionMap && strStongRegionMap.size() > 0) { + count += strStongRegionMap.size(); + } + if (null != ipRegionMap && ipRegionMap.size() > 0) { + count += ipRegionMap.size(); + } + if (null != numRegionMap && numRegionMap.size() > 0) { + count += numRegionMap.size(); + } + + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + Connection conn = sqlSessionFactory.openSession().getConnection(); + + CountDownLatch latch = new CountDownLatch(count); + SaveCompileByJDBCThread compile = new SaveCompileByJDBCThread(conn, latch, start); + compile.setCompileList(configCompileList); + Thread compileThread = new Thread(compile); + compileThread.start(); + if (groupRelationList.size() > 0) { + + SaveCompileByJDBCThread group = new SaveCompileByJDBCThread(conn, latch, start); + group.setGroupList(groupRelationList); + + Thread groupThread = new Thread(group); + groupThread.start(); + + } + if (strRegionMap.size() > 0) { + for (String str : strRegionMap.keySet()) { + + SaveCompileByJDBCThread strRegion = new SaveCompileByJDBCThread(false, str, conn, latch, start); + strRegion.setStrRegionList(strRegionMap.get(str)); + Thread strThread = new Thread(strRegion); + strThread.start(); + + } + } + if (strStongRegionMap.size() > 0) { + for (String strStrong : strStongRegionMap.keySet()) { + SaveCompileByJDBCThread strongRegion = new SaveCompileByJDBCThread(true, strStrong, conn, latch, + start); + strongRegion.setStrRegionList(strStongRegionMap.get(strStrong)); + Thread strongStrThread = new Thread(strongRegion); + strongStrThread.start(); + + } + } + if (ipRegionMap.size() > 0) { + for (String ip : ipRegionMap.keySet()) { + SaveCompileByJDBCThread ipRegion = new SaveCompileByJDBCThread(ip, conn, latch, start); + ipRegion.setIpRegionList(ipRegionMap.get(ip)); + Thread ipThread = new Thread(ipRegion); + ipThread.start(); + + } + } + if (numRegionMap.size() > 0) { + for (String num : numRegionMap.keySet()) { + SaveCompileByJDBCThread numRegion = new SaveCompileByJDBCThread(num, conn, latch, start); + numRegion.setNumRegionList(numRegionMap.get(num)); + Thread numThread = new Thread(numRegion); + numThread.start(); + + } + } + try { + latch.await(); + if (msgList.size() > 0) { + conn.rollback(); + return "error"; + } else { + conn.commit(); + } + } catch (Exception e) { + thread.setExceptionInfo(e.toString()); + e.printStackTrace(); + logger1.error(e); + if (!(e instanceof RestServiceException)) { + e = new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置数据插入失败", + RestBusinessCode.unknow_error.getValue()); + } + throw ((RestServiceException) e); + } + } + return "ok"; + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /** + * 批量(jdbc多线程方式)修改配置业务逻辑-->1:先进行基础配置验证传过来的json串是否符合格式(配置分组关系前端不能设置为无效,程序会根据传过来的编译配置和域配置等信息自动设置为无效). + * 2:判断配置在数据库中是否已经是无效了如果是无效则提示不能修改无效的配置为有效(因为如果数据库中的编译配置与配置分组关系以及域配置均是无效,传过来的数据是编译配置和配置分组关系是有效,域配置是无效,这样会将数据库中无效的编译配置置为有效,这是不允许的) + * 3:如果编译配置置为无效将所有的配置分组关系置为无效,不修改域配置状态(分组复用考虑,域可能被其他的组引用) + * 4:如果编译配置为有效,域配置为无效,则先获取该编译配置下各个配置分组关系下的所有有效的域配置信息和所有无效的域配置信息,如果数据库中有效的域配置信息和前端传过来置为无效的的域配置信息个数,id都相等,则将对应域配置,配置分组关系,编译配置均置为无效 + * + * + * + * 20161124讨论暂时先去掉2步骤,因为界面目前传过来的数据编译配置,配置分组关系,域配置均是无效,所以就不执行第2步骤了影响性能(方法内注释的代码,如果以后业务需要调整打开下面代码即可) + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param compileList + * 编译配置集合 + * @return + * @throws Exception + */ + public String updateByJDBCThread(SaveRequestLogThread thread, long start, List compileList, + Date opTime, StringBuffer sb) { + List compileAllList = new ArrayList(); + List groupRelationAllList = new ArrayList(); + Map> strRegionMap = new HashMap>(); + Map> ipRegionMap = new HashMap>(); + Map> numRegionMap = new HashMap>(); + if (null != compileList && compileList.size() > 0) { + for (ConfigCompile config : compileList) { + String msg = CompileVal.compileIsOk(config, true, sb); + if (msg != CompileJudgeCode.CompileIsOk.getErrorReason()) { + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + List ipRegionList = config.getIpRegionList();// 获取编译下所有ip类域配置(要修改的数据) + List strRegionList = config.getStrRegionList();// 获取编译下所有字符串类域配置(要修改的数据 + List numRegionList = config.getNumRegionList();// 获取编译下所有数值类域配置(要修改的数据 + List groupRelationList = config.getGroupRelationList(); + if (config.getIsValid() == 1) { + if (groupRelationList == null || groupRelationList.size() == 0) { + thread.setExceptionInfo("配置分组数量不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "配置分组数量不能为空" + sb.toString(), RestBusinessCode.config_integrity_error.getValue()); + } + if ((ipRegionList == null || ipRegionList.size() == 0) + && (strRegionList == null || strRegionList.size() == 0) + && (numRegionList == null || numRegionList.size() == 0)) { + thread.setExceptionInfo("域配置数量不能全部为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "域配置数量不能全部为空" + sb.toString(), RestBusinessCode.config_integrity_error.getValue()); + } + } + + // ConfigCompile configCompile = + // configCompileDao.queryConfigCompileById(config.getCompileId());// + // 先判断该条编译配置数据库中状态是否为无效,如果无效则提示用户不能将无效状态改为有效状态 + // if (configCompile.getIsValid() == 1) {// + // 数据库中编译配置为有效状态才可以进行修改操作 + /** + * 1:编译配置置为无效,需要将其下所有配置分组置为无效,如果数据中将域配置置为了无效则将域配置置为无效,否则不修改域配置是否生效标志 + * 2:编译配置置为有效,不修改编译配置状态(编译配置不能从无效变有效,只能从有效变无效)仅修改编译配置其他属性, + */ + List queryCompileGroupByPID = configGroupRelationDao + .queryCompileGroupByPID(config.getCompileId()); + + if (null == queryCompileGroupByPID || queryCompileGroupByPID.size() == 0) { + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "配置id为" + config.getCompileId() + "的配置在数据库中找不到对应的配置分组关系,请检查json串是否正确" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + + if (config.getIsValid() == 0) {// 编译配置修改为无效,需要将所有的配置分组置为无效 + if (null != queryCompileGroupByPID && queryCompileGroupByPID.size() > 0) { + for (ConfigGroupRelation configGroupRelation : queryCompileGroupByPID) { + configGroupRelation.setIsValid(0); + + groupRelationAllList.add(configGroupRelation); + } + + } + } else { + + Map>> regionMap = getRegionList(thread, + System.currentTimeMillis() - start, config, queryCompileGroupByPID, sb); + Map> validMap = regionMap.get("validMap");// 获取该编译配置下所有的配置分组关系及组下有效的域配置id + Map> noValidMap = regionMap.get("noValidMap");// 获取该编译配置下所有的配置分组关系及组下无效的域配置id + + int num = 0; + for (Long regionId : validMap.keySet()) {// 遍历配置分组 + List validList = validMap.get(regionId);// 获取配置分组下有效的域配置id + List noValidList = noValidMap.get(regionId);// 获取配置分组下无效的域配置id + int count = 0; + if (null != ipRegionList && ipRegionList.size() > 0) { + for (IpRegion ipRegion : ipRegionList) { + if (ipRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(ipRegion.getRegionId())) { + if (ipRegion.getIsValid() == 0) { + ipRegion.setLastUpdate(new Date()); + if (ipRegionMap.containsKey(ipRegion.getTableName())) { + ipRegionMap.get(ipRegion.getTableName()).add(ipRegion); + } else { + List ipList = new ArrayList(); + ipList.add(ipRegion); + ipRegionMap.put(ipRegion.getTableName(), ipList); + } + count++; + } + } else if (null != noValidList && noValidList.contains(ipRegion.getRegionId())) { + String errorMsg = "不能修改无效的ip类域配置compile为" + config.getCompileId() + "regionid为" + + ipRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } else { + String errorMsg = "找不到对应的的ip类域配置compile为" + config.getCompileId() + "regionid为" + + ipRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } + } + } + + } + + if (null != strRegionList && strRegionList.size() > 0) { + for (StrRegion strRegion : strRegionList) { + if (strRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(strRegion.getRegionId())) { + if (strRegion.getIsValid() == 0) { + + strRegion.setLastUpdate(new Date()); + if (strRegionMap.containsKey(strRegion.getTableName())) { + strRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strList = new ArrayList(); + strList.add(strRegion); + strRegionMap.put(strRegion.getTableName(), strList); + } + count++; + } + } else if (null != noValidList && noValidList.contains(strRegion.getRegionId())) { + String errorMsg = "不能修改无效的字符串类域配置compile为" + config.getCompileId() + "regionid为" + + strRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } else { + String errorMsg = "找不到对应的的字符串类域配置compile为" + config.getCompileId() + "regionid为" + + strRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } + } + } + + } + if (null != numRegionList && numRegionList.size() > 0) { + for (NumRegion numRegion : numRegionList) { + if (numRegion.getGroupId().equals(regionId)) { + if (null != validList && validList.contains(numRegion.getRegionId())) { + if (numRegion.getIsValid() == 0) { + + numRegion.setLastUpdate(new Date()); + if (numRegionMap.containsKey(numRegion.getTableName())) { + numRegionMap.get(numRegion.getTableName()).add(numRegion); + } else { + List numList = new ArrayList(); + numList.add(numRegion); + numRegionMap.put(numRegion.getTableName(), numList); + } + count++; + + } + } else if (null != noValidList && noValidList.contains(numRegion.getRegionId())) { + String errorMsg = "不能修改无效的数值类域配置compile为" + config.getCompileId() + "regionid为" + + numRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } else { + String errorMsg = "找不到对应的的数值类域配置compile为" + config.getCompileId() + "regionid为" + + numRegion.getRegionId() + sb.toString(); + thread.setExceptionInfo(errorMsg); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + errorMsg, RestBusinessCode.missing_args.getValue()); + } + } + } + } + if (count == validList.size()) {// 数据库中当前配置分组下有效的域配置,均被修改为无效,所以要将该配置分组置为无效 + for (ConfigGroupRelation configGroupRelation : groupRelationList) { + if (configGroupRelation.getGroupId().equals(regionId)) { + num++; + configGroupRelation.setIsValid(0); + + configGroupRelation.setLastUpdate(new Date()); + groupRelationAllList.add(configGroupRelation); + } + } + + } + } + if (num == validMap.size()) {// 所有的域均是无效的所有的组均是无效,需要将编译配置置为无效 + config.setIsValid(0); + } + } + + // } else {// 数据库中编译配置为无效状态不能进行操作 + // throw new RestServiceException(thread, + // System.currentTimeMillis() - start,"不能修改无效的编译配置信息,配置id为" + + // configCompile.getCompileId(),RestBusinessCode.missing_args.getValue()); + // } + compileAllList.add(config); + } + + } else { + thread.setExceptionInfo("编译配置不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置不能为空" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + // 程序是否入库,测试分析数据的时间 + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + int count = 0; + if (null != compileAllList && compileAllList.size() > 0) { + count += 1; + } + if (null != groupRelationAllList && groupRelationAllList.size() > 0) { + count += 1; + } + if (null != strRegionMap && strRegionMap.size() > 0) { + count += strRegionMap.size(); + } + if (null != ipRegionMap && ipRegionMap.size() > 0) { + count += ipRegionMap.size(); + } + if (null != numRegionMap && numRegionMap.size() > 0) { + count += numRegionMap.size(); + } + + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + Connection conn = sqlSessionFactory.openSession().getConnection(); + CountDownLatch latch = new CountDownLatch(count); + UpdateCompileByJDBCThread compileThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + compileThread.setCompileList(compileAllList); + Thread compile = new Thread(compileThread); + compile.start(); + + if (null != groupRelationAllList && groupRelationAllList.size() > 0) { + UpdateCompileByJDBCThread groupThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + groupThread.setGroupList(groupRelationAllList); + Thread group = new Thread(groupThread); + group.start(); + + } + if (null != strRegionMap && strRegionMap.size() > 0) { + for (String str : strRegionMap.keySet()) { + UpdateCompileByJDBCThread strRegion = new UpdateCompileByJDBCThread(str, conn, latch, start, + opTime); + strRegion.setStrRegionList(strRegionMap.get(str)); + Thread strThread = new Thread(strRegion); + strThread.start(); + } + } + + if (null != ipRegionMap && ipRegionMap.size() > 0) { + for (String ip : ipRegionMap.keySet()) { + UpdateCompileByJDBCThread ipRegion = new UpdateCompileByJDBCThread(ip, conn, latch, start, opTime); + ipRegion.setIpRegionList(ipRegionMap.get(ip)); + Thread ipThread = new Thread(ipRegion); + ipThread.start(); + + } + } + if (null != numRegionMap && numRegionMap.size() > 0) { + for (String num : numRegionMap.keySet()) { + UpdateCompileByJDBCThread numRegion = new UpdateCompileByJDBCThread(num, conn, latch, start, + opTime); + numRegion.setNumRegionList(numRegionMap.get(num)); + Thread numThread = new Thread(numRegion); + numThread.start(); + } + } + + try { + latch.await(); + if (msgList.size() > 0) { + conn.rollback(); + return "error"; + } else { + conn.commit(); + } + } catch (Exception e) { + thread.setExceptionInfo(e.toString()); + e.printStackTrace(); + logger1.error(e); + if (!(e instanceof RestServiceException)) { + e = new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置数据修改失败", + RestBusinessCode.unknow_error.getValue()); + } + throw ((RestServiceException) e); + } + + } + return "ok"; + } + + /** + * 批量(jdbc多线程方式)修改配置业务逻辑-->1:先进行基础配置验证传过来的json串是否符合格式(配置分组关系前端不能设置为无效,程序会根据传过来的编译配置和域配置等信息自动设置为无效). + * 2:判断配置在数据库中是否已经是无效了如果是无效则提示不能修改无效的配置为有效(因为如果数据库中的编译配置与配置分组关系以及域配置均是无效,传过来的数据是编译配置和配置分组关系是有效,域配置是无效,这样会将数据库中无效的编译配置置为有效,这是不允许的) + * 3:如果编译配置置为无效将所有的配置分组关系置为无效,不修改域配置状态(分组复用考虑,域可能被其他的组引用) + * 4:如果编译配置为有效,域配置为无效,则先获取该编译配置下各个配置分组关系下的所有有效的域配置信息和所有无效的域配置信息,如果数据库中有效的域配置信息和前端传过来置为无效的的域配置信息个数,id都相等,则将对应域配置,配置分组关系,编译配置均置为无效 + * + * + * + * 20161124讨论暂时先去掉2步骤,因为界面目前传过来的数据编译配置,配置分组关系,域配置均是无效,所以就不执行第2步骤了影响性能(方法内注释的代码,如果以后业务需要调整打开下面代码即可) + * + * + * + * 20161215讨论确定修改时前端发过来的配置都是无效的不会存在即有无效又有有效的情况,且配置中的个数与添加时保持一致,即添加时插入了1条编译配置2条配置分组关系3条域配置,在修改时也会传过来1条编译配置2条配置分组关系3条域配置,不会多或者少配置 + * + * + * + * + * 2017-1-16:和杨老师讨论确定存在分组复用情况,当编译配置置为无效,需要将其下所有配置分组置为无效,如果数据中将域配置置为了无效则将域配置置为无效,否则不修改域配置是否生效标志 + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param compileList + * 编译配置集合 + * @return + * @throws Exception + */ + public String updateByJDBCThread12(SaveRequestLogThread thread, long start, List compileList, + Date opTime, StringBuffer sb) { + List compileAllList = new ArrayList(); + List groupRelationAllList = new ArrayList(); + Map> strRegionMap = new HashMap>(); + Map> ipRegionMap = new HashMap>(); + Map> numRegionMap = new HashMap>(); + if (null != compileList && compileList.size() > 0) { + for (ConfigCompile config : compileList) { + String msg = CompileVal.compileIsOk(config, true, sb); + if (msg != CompileJudgeCode.CompileIsOk.getErrorReason()) { + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + + /** + * 1:编译配置置为无效,需要将其下所有配置分组置为无效,如果数据中将域配置置为了无效则将域配置置为无效,否则不修改域配置是否生效标志 + * 2:编译配置置为有效,不修改编译配置状态(编译配置不能从无效变有效,只能从有效变无效)仅修改编译配置其他属性, + */ + List groupRelationList = config.getGroupRelationList(); + if (config.getIsValid() == 0) {// 编译配置修改为无效,需要将所有的配置分组置为无效 + if (null != groupRelationList && groupRelationList.size() > 0) { + for (ConfigGroupRelation configGroupRelation : groupRelationList) { + configGroupRelation.setIsValid(0); + groupRelationAllList.add(configGroupRelation); + } + } + List ipRegionList = config.getIpRegionList();// 获取编译下所有ip类域配置(要修改的数据) + if (null != ipRegionList && ipRegionList.size() > 0) { + for (IpRegion ipRegion : ipRegionList) { + if (ipRegion.getIsValid() == 0) { + if (ipRegionMap.containsKey(ipRegion.getTableName())) { + ipRegionMap.get(ipRegion.getTableName()).add(ipRegion); + } else { + List ipList = new ArrayList(); + ipList.add(ipRegion); + ipRegionMap.put(ipRegion.getTableName(), ipList); + } + } + } + } + List strRegionList = config.getStrRegionList();// 获取编译下所有字符串类域配置(要修改的数据 + if (null != strRegionList && strRegionList.size() > 0) { + for (StrRegion strRegion : strRegionList) { + if (strRegion.getIsValid() == 0) { + if (strRegionMap.containsKey(strRegion.getTableName())) { + strRegionMap.get(strRegion.getTableName()).add(strRegion); + } else { + List strList = new ArrayList(); + strList.add(strRegion); + strRegionMap.put(strRegion.getTableName(), strList); + } + } + } + } + List numRegionList = config.getNumRegionList();// 获取编译下所有数值类域配置(要修改的数据 + if (null != numRegionList && numRegionList.size() > 0) { + for (NumRegion numRegion : numRegionList) { + if (numRegion.getIsValid() == 0) { + if (numRegionMap.containsKey(numRegion.getTableName())) { + numRegionMap.get(numRegion.getTableName()).add(numRegion); + } else { + List numList = new ArrayList(); + numList.add(numRegion); + numRegionMap.put(numRegion.getTableName(), numList); + } + } + } + } + compileAllList.add(config); + } + } + + } else { + thread.setExceptionInfo("编译配置不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置不能为空" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + // 程序是否入库,测试分析数据的时间 + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + int count = 0; + if (null != compileAllList && compileAllList.size() > 0) { + count += 1; + } + if (null != groupRelationAllList && groupRelationAllList.size() > 0) { + count += 1; + } + if (null != strRegionMap && strRegionMap.size() > 0) { + count += strRegionMap.size(); + } + if (null != ipRegionMap && ipRegionMap.size() > 0) { + count += ipRegionMap.size(); + } + if (null != numRegionMap && numRegionMap.size() > 0) { + count += numRegionMap.size(); + } + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + Connection conn = sqlSessionFactory.openSession().getConnection(); + CountDownLatch latch = new CountDownLatch(count); + UpdateCompileByJDBCThread compileThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + compileThread.setCompileList(compileAllList); + Thread compile = new Thread(compileThread); + compile.start(); + + if (null != groupRelationAllList && groupRelationAllList.size() > 0) { + UpdateCompileByJDBCThread groupThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + groupThread.setGroupList(groupRelationAllList); + Thread group = new Thread(groupThread); + group.start(); + + } + if (null != strRegionMap && strRegionMap.size() > 0) { + for (String str : strRegionMap.keySet()) { + UpdateCompileByJDBCThread strRegion = new UpdateCompileByJDBCThread(str, conn, latch, start, + opTime); + strRegion.setStrRegionList(strRegionMap.get(str)); + Thread strThread = new Thread(strRegion); + strThread.start(); + } + } + + if (null != ipRegionMap && ipRegionMap.size() > 0) { + for (String ip : ipRegionMap.keySet()) { + UpdateCompileByJDBCThread ipRegion = new UpdateCompileByJDBCThread(ip, conn, latch, start, opTime); + ipRegion.setIpRegionList(ipRegionMap.get(ip)); + Thread ipThread = new Thread(ipRegion); + ipThread.start(); + + } + } + if (null != numRegionMap && numRegionMap.size() > 0) { + for (String num : numRegionMap.keySet()) { + UpdateCompileByJDBCThread numRegion = new UpdateCompileByJDBCThread(num, conn, latch, start, + opTime); + numRegion.setNumRegionList(numRegionMap.get(num)); + Thread numThread = new Thread(numRegion); + numThread.start(); + } + } + + try { + latch.await(); + if (msgList.size() > 0) { + conn.rollback(); + return "error"; + } else { + conn.commit(); + } + } catch (Exception e) { + thread.setExceptionInfo(e.toString()); + e.printStackTrace(); + logger1.error(e); + if (!(e instanceof RestServiceException)) { + e = new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置数据修改失败", + RestBusinessCode.unknow_error.getValue()); + } + throw ((RestServiceException) e); + } + + } + return "ok"; + } + + /** + * + * @Description:只填写compile信息,根据compileId对compile以及与Group的对应关系进行配置状态更新操作 + * @author (zdx) + * @date 2017年8月16日 上午11:21:53 + * @param thread + * @param start + * @param compileList + * @param opTime + * @param sb + * @return + */ + public String updateByJDBCThread3(SaveRequestLogThread thread, long start, List compileList, + Date opTime, StringBuffer sb) { + List compileAllList = new ArrayList(); + if (null != compileList && compileList.size() > 0) { + for (ConfigCompile config : compileList) { + String msg = checkCompileOptForUpdate(config); + + if (!msg.equals("ok")) { + thread.setExceptionInfo(msg + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, msg + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + + compileAllList.add(config); + } + + } else { + thread.setExceptionInfo("编译配置不能为空" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置不能为空" + sb.toString(), + RestBusinessCode.config_integrity_error.getValue()); + } + // 程序是否入库,测试分析数据的时间 + if (Configurations.getStringProperty("isCommit", "false").equals("true")) { + int count = 0; + if (null != compileAllList && compileAllList.size() > 0) { + count += 1; + count += 1; //将所有compile与Group的对应关系都置为失效 zdx20170814 + } + + SqlSessionFactory sqlSessionFactory = SpringContextHolder.getBean(SqlSessionFactory.class); + Connection conn = sqlSessionFactory.openSession().getConnection(); + CountDownLatch latch = new CountDownLatch(count); + + UpdateCompileByJDBCThread compileThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + compileThread.setCompileList(compileAllList); + Thread compile = new Thread(compileThread); + compile.start(); + + + UpdateCompileByJDBCThread groupThread = new UpdateCompileByJDBCThread(conn, latch, start, opTime); + groupThread.setCompileList(compileAllList); + //仅用做判定线程执行时选择执行方法 zdx20170816 + groupThread.setGroupList(new ArrayList()); + Thread group = new Thread(groupThread); + group.start(); + + try { + latch.await(); + if (msgList.size() > 0) { + conn.rollback(); + return "error"; + } else { + conn.commit(); + } + } catch (Exception e) { + thread.setExceptionInfo(e.toString()); + e.printStackTrace(); + logger1.error(e); + if (!(e instanceof RestServiceException)) { + e = new RestServiceException(thread, System.currentTimeMillis() - start, "编译配置数据修改失败", + RestBusinessCode.unknow_error.getValue()); + } + throw ((RestServiceException) e); + } + + } + return "ok"; + } + + /** + * + * @Description:验证compileId+isValid + * @author (zdx) + * @date 2017年8月16日 上午11:48:46 + * @param config + * @return + */ + private String checkCompileOptForUpdate(ConfigCompile config) { + if (StringUtil.isEmpty(config.getCompileId())) { + return "compileId字段不能为空"; + } + if (StringUtil.isEmpty(config.getIsValid())) { + return "编译配置id为" + config.getCompileId()+"的IsValid字段不能为空"; + } + if (config.getIsValid() != 0) { + return "编译配置id为" + config.getCompileId() + "的配置在修改时不能为有效"; + } + + return "ok"; + } + + /** + * 获取编译配置下所有的配置分组关系对应的有效,无效域配置id + * + * @param thread + * 保存异常信息入库对象 + * @param start + * 进入controller的时间 + * @param config + * 编译配置对象 + * @param queryCompileGroupByPID + * 当前编译下所有的配置分组关系 + * @return + */ + public Map>> getRegionList(SaveRequestLogThread thread, long start, + ConfigCompile config, List queryCompileGroupByPID, StringBuffer sb) { + Map>> map = new HashMap>>(); + Map> tableRelationMap = getTableRelation(); + + Map updateTableMap = tableRelationMap.get(config.getService().intValue());// 根据service获取需要操作的域配置表 + if (null == updateTableMap || updateTableMap.size() == 0) { + thread.setExceptionInfo("找不到编译对应的service" + sb.toString()); + throw new RestServiceException(thread, System.currentTimeMillis() - start, + "找不到编译对应的service" + sb.toString(), RestBusinessCode.missing_args.getValue()); + } + + Long[] groupId = new Long[queryCompileGroupByPID.size()]; + for (int i = 0; i < queryCompileGroupByPID.size(); i++) { + groupId[i] = queryCompileGroupByPID.get(i).getGroupId(); + } + // 获取当前编译下所有的域配置信息 + List ipRegionExistList = new ArrayList(); + List strRegionExistList = new ArrayList(); + List numRegionExistList = new ArrayList(); + for (String tableName : updateTableMap.keySet()) { + if (updateTableMap.get(tableName).equals("ip")) { + ipRegionExistList.addAll(ipRegionDao.queryIpRegionByGroupId(tableName, groupId)); + } + if (updateTableMap.get(tableName).equals("num")) { + numRegionExistList.addAll(numRegionDao.queryNumRegionByGroupId(tableName, groupId)); + } + if (updateTableMap.get(tableName).equals("str")) { + strRegionExistList.addAll(strRegionDao.queryStrRegionByGroupId(tableName, groupId)); + } + } + + Map> validMap = new HashMap>();// 获取当前编译下所有的组,及每个组下面的有效域配置 + Map> noValidMap = new HashMap>();// 获取当前编译下所有的组,及每个组下面的无效域配置 + for (IpRegion ipRegion : ipRegionExistList) { + if (ipRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(ipRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + validRegionList.add(ipRegion.getRegionId()); + validMap.put(ipRegion.getGroupId(), validRegionList); + } else { + validRegionList = validMap.get(ipRegion.getGroupId()); + // if (!validRegionList.contains(ipRegion.getRegionId())) { + validRegionList.add(ipRegion.getRegionId()); + validMap.put(ipRegion.getGroupId(), validRegionList); + // } + } + } + if (ipRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(ipRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(ipRegion.getRegionId()); + noValidMap.put(ipRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(ipRegion.getGroupId()); + // if (!noValidRegionList.contains(ipRegion.getRegionId())) + // { + noValidRegionList.add(ipRegion.getRegionId()); + noValidMap.put(ipRegion.getGroupId(), noValidRegionList); + // } + } + } + } + + for (StrRegion strRegion : strRegionExistList) { + if (strRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(strRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + + validRegionList.add(strRegion.getRegionId()); + + validMap.put(strRegion.getGroupId(), validRegionList); + } else { + validRegionList = validMap.get(strRegion.getGroupId()); + // if (!validRegionList.contains(strRegion.getRegionId())) { + validRegionList.add(strRegion.getRegionId()); + validMap.put(strRegion.getGroupId(), validRegionList); + + // } + } + } + if (strRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(strRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(strRegion.getRegionId()); + noValidMap.put(strRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(strRegion.getGroupId()); + // if (!noValidRegionList.contains(strRegion.getRegionId())) + // { + noValidRegionList.add(strRegion.getRegionId()); + noValidMap.put(strRegion.getGroupId(), noValidRegionList); + // } + } + } + } + for (NumRegion numRegion : numRegionExistList) { + if (numRegion.getIsValid() == 1) { + List validRegionList = null; + if (validMap.get(numRegion.getGroupId()) == null) { + validRegionList = new ArrayList(); + validRegionList.add(numRegion.getRegionId()); + validMap.put(numRegion.getGroupId(), validRegionList); + + } else { + validRegionList = validMap.get(numRegion.getGroupId()); + // if (!validRegionList.contains(numRegion.getRegionId())) { + validRegionList.add(numRegion.getRegionId()); + validMap.put(numRegion.getGroupId(), validRegionList); + // } + + } + } + if (numRegion.getIsValid() == 0) { + List noValidRegionList = null; + if (noValidMap.get(numRegion.getGroupId()) == null) { + noValidRegionList = new ArrayList(); + noValidRegionList.add(numRegion.getRegionId()); + noValidMap.put(numRegion.getGroupId(), noValidRegionList); + } else { + noValidRegionList = noValidMap.get(numRegion.getGroupId()); + // if (!noValidRegionList.contains(numRegion.getRegionId())) + // { + noValidRegionList.add(numRegion.getRegionId()); + noValidMap.put(numRegion.getGroupId(), noValidRegionList); + // } + } + } + } + map.put("noValidMap", noValidMap); + map.put("validMap", validMap); + return map; + + } + + ////////////////////////////////////////////////////////////////////////////// + + public String configModifySources(List configCompileList) throws Exception { + + for (ConfigCompile configCompile : configCompileList) { + Long compileId = configCompile.getCompileId(); + if (null != compileId) { + configCompileDao.updateConfigCompile(configCompile); + } else { + return "idIsNull"; + } + } + return "ok"; + } + + public String setCompileInvalid(ConfigCompile configCompile) throws Exception { + configCompileDao.setCompileInvalid(configCompile.getCompileId(), 0); + return "ok"; + } + + public String setCompileValid(ConfigCompile configCompile) throws Exception { + configCompileDao.setCompileInvalid(configCompile.getCompileId(), 1); + return "ok"; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/ControlLogService.java b/src/main/java/com/nis/web/service/restful/ControlLogService.java new file mode 100644 index 0000000..782dd0e --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/ControlLogService.java @@ -0,0 +1,48 @@ +/** +* @Title: ControlService.java +* @Package com.nis.web.service.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (darnell) +* @date 2016年8月15日 下午4:08:12 +* @version V1.0 +*/ +package com.nis.web.service.restful; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.ControlLog; +import com.nis.domain.Page; +import com.nis.web.dao.ControlLogDao; +import com.nis.web.service.CrudService; + +/** +* @ClassName: ControlService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (darnell) +* @date 2016年8月15日 下午4:08:12 +* @version V1.0 +*/ +@Service +public class ControlLogService extends CrudService{ + + @Autowired + public ControlLogDao logDao; + + public Page getLogInfo(Page page, ControlLog log) { + return findPage(page, log); + } + + public ControlLog findById(long id) { + return get(id); + } + + public void createControlLog(ControlLog log) { + logDao.saveControlLog(log); + } + + public void deleteControlLog(long id) { + logDao.removeControlLog(id); + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DataDictionaryService.java b/src/main/java/com/nis/web/service/restful/DataDictionaryService.java new file mode 100644 index 0000000..4e53238 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DataDictionaryService.java @@ -0,0 +1,133 @@ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.nis.domain.Page; +import com.nis.domain.restful.DataDictionaryName; +import com.nis.domain.restful.DataDictionaryValue; +import com.nis.web.dao.DataDictionaryDao; + +@Service +public class DataDictionaryService { + protected final Logger logger1 = Logger.getLogger(this.getClass()); + @Autowired + private DataDictionaryDao dataDictionaryDao; + + public Map> getAllDataDict() { + Map> map = new HashMap>(); + List allDictName = dataDictionaryDao.getAllDictName(new DataDictionaryValue()); + for (DataDictionaryValue dictVal : allDictName) { + if (map.containsKey(dictVal.getDataDictName())) { + map.get(dictVal.getDataDictName()).add(dictVal); + } else { + List list = new ArrayList(); + list.add(dictVal); + map.put(dictVal.getDataDictName(), list); + } + } + return map; + } + + public Page getDataDictList(Page page, DataDictionaryValue entity) { + entity.setPage(page); + page.setList(dataDictionaryDao.getAllDictName(entity)); + return page; + } + + public List getDataDictList() { + return dataDictionaryDao.selAllDictName(); + } + + public String saveDataDict(String dataDictId, String addDictName, String dictVal, String option) { + if (null != option && option.equals("addName")) { + DataDictionaryName dataDictionaryName = new DataDictionaryName(addDictName); + dataDictionaryDao.addDictName(dataDictionaryName); + return "ok"; + } else if (null != option && option.equals("addValue")) { + String[] split = dictVal.split(","); + for (int i = 0; i < split.length; i++) { + dataDictionaryDao.addDictValue(new DataDictionaryValue(Long.parseLong(dataDictId), split[i])); + } + return "ok"; + } else if (null != option && option.equals("addNameAndValue")) { + DataDictionaryName dataDictionaryName = new DataDictionaryName(addDictName); + dataDictionaryDao.addDictName(dataDictionaryName); + Long dictNameId = dataDictionaryName.getDictNameId(); + String[] split = dictVal.split(","); + for (int i = 0; i < split.length; i++) { + dataDictionaryDao.addDictValue(new DataDictionaryValue(dictNameId, split[i])); + } + return "ok"; + } else { + return "error"; + } + } + + public String delDictVal(String id) { + if (id.contains(",")) { + id = id.replace("[", "").replace("]", ""); + String[] idArr = id.split(","); + for (String str : idArr) { + if (null != str && !str.equals("")) { + dataDictionaryDao.updateDictValue(new DataDictionaryValue(Long.parseLong(str), 0l)); + } + } + return "ok"; + } else { + return "error"; + } + } + + public String delDictName(String id) { + if (id.contains(",")) { + id = id.replace("[", "").replace("]", ""); + String[] idArr = id.split(","); + for (String str : idArr) { + if (null != str && !str.equals("")) { + dataDictionaryDao.updateDictName(new DataDictionaryName(Long.parseLong(str), 0l)); + DataDictionaryValue dictVal = new DataDictionaryValue(); + dictVal.setDictNameId(Long.parseLong(str)); + dictVal.setIsValid(0l); + dataDictionaryDao.updateDictValue(dictVal); + } + } + return "ok"; + } else { + return "error"; + } + } + + public DataDictionaryValue getDict(String id) { + Long dictId = null; + if (id.contains(",")) { + id = id.replace("[", "").replace("]", ""); + String[] idArr = id.split(","); + for (String str : idArr) { + if (null != str && !str.equals("")) { + dictId = Long.parseLong(str); + } + } + if (null == dictId) { + return null; + } + List allDictName = dataDictionaryDao.getAllDictName(new DataDictionaryValue(dictId)); + return allDictName.get(0); + } else { + return null; + } + } + + public String updateDataDict(String dictVal, String dictId, String option) { + if (null != option && option.equals("updateVal")) {// 修改值 + dataDictionaryDao.updateDictValue(new DataDictionaryValue(Long.parseLong(dictId), null, dictVal)); + return "ok"; + } else { + return "error"; + } + } +} diff --git a/src/main/java/com/nis/web/service/restful/DfDjNestLogService.java b/src/main/java/com/nis/web/service/restful/DfDjNestLogService.java new file mode 100644 index 0000000..e70cef5 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfDjNestLogService.java @@ -0,0 +1,57 @@ +package com.nis.web.service.restful; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfDjNestLog; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DfDjNestLogDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: DfDjNestLogService + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (zbc) + * @date 2016年11月11日 下午4:40:00 + * @version V1.0 + */ +@Service +public class DfDjNestLogService extends BaseLogService { + protected final Logger logger = Logger.getLogger(this.getClass()); + + @Autowired + protected DfDjNestLogDao dao; + + + public Page findDfDjNestLogPage(Page page, DfDjNestLog entity) { + entity.setPage(page); + page.setList(dao.findDfDjNestLogPage(entity)); + return page; + } + + public void queryConditionCheck(SaveRequestLogThread thread, long start, DfDjNestLog entity, Class clazz, Page page) { + + if(StringUtil.isBlank(entity.getSearchLayerId())) { + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchLayerId查询参数不能为空", + RestBusinessCode.missing_args.getValue()); + } + + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfIpPortUdpService.java b/src/main/java/com/nis/web/service/restful/DfIpPortUdpService.java new file mode 100644 index 0000000..7d1b005 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfIpPortUdpService.java @@ -0,0 +1,46 @@ +/** + *@Title: DfIpPortUdpService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfIpPortUdp; +import com.nis.web.dao.DfIpPortUdpDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DfIpPortUdpService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DfIpPortUdpService extends CrudService { + @Autowired + public DfIpPortUdpDao dfIpPortUdpDao; + public void saveDfIpPortUdpBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,DfIpPortUdpDao.class); + } + public void updateDfIpPortUdpBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, DfIpPortUdpDao.class); + } + public void removeDfIpPortUdp(long id) { + dfIpPortUdpDao.delete(id); + } + public void removeDfIpPortUdpBatch(List entity) { + super.deleteBatch(entity, DfIpPortUdpDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/DfJitLogSearchService.java b/src/main/java/com/nis/web/service/restful/DfJitLogSearchService.java new file mode 100644 index 0000000..dc8059f --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfJitLogSearchService.java @@ -0,0 +1,144 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfJitAffairDestReport; +import com.nis.domain.restful.DfJitAffairSrcReport; +import com.nis.domain.restful.DfJitFlDestReport; +import com.nis.domain.restful.DfJitFlSrcReport; +import com.nis.domain.restful.DfJitGuaranteeDestReport; +import com.nis.domain.restful.DfJitGuaranteeSrcReport; +import com.nis.domain.restful.DfJitIdDestReport; +import com.nis.domain.restful.DfJitIdSrcReport; +import com.nis.domain.restful.DfJitMissionDestReport; +import com.nis.domain.restful.DfJitMissionSrcReport; +import com.nis.domain.restful.DfJitTagDestReport; +import com.nis.domain.restful.DfJitTagSrcReport; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DfJitLogSearchDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +@Service +public class DfJitLogSearchService extends BaseLogService { + + @Autowired + private DfJitLogSearchDao dfJitLogSearchDao; + + public Page findDfJitFlSrcReport(Page page, DfJitFlSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitFlSrcReport(entity)); + return page; + } + + public Page findDfJitFlDestReport(Page page, DfJitFlDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitFlDestReport(entity)); + return page; + } + + public Page findDfJitAffairSrcReport(Page page, + DfJitAffairSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitAffairSrcReport(entity)); + return page; + } + + public Page findDfJitAffairDestReport(Page page, + DfJitAffairDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitAffairDestReport(entity)); + return page; + } + + + public Page findDfJitMissionSrcReport(Page page, + DfJitMissionSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitMissionSrcReport(entity)); + return page; + } + + public Page findDfJitMissionDestReport(Page page, + DfJitMissionDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitMissionDestReport(entity)); + return page; + } + + public Page findDfJitGuaranteeSrcReport(Page page, + DfJitGuaranteeSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitGuaranteeSrcReport(entity)); + return page; + } + + public Page findDfJitGuaranteeDestReport(Page page, + DfJitGuaranteeDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitGuaranteeDestReport(entity)); + return page; + } + + public Page findDfJitTagSrcReport(Page page, DfJitTagSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitTagSrcReport(entity)); + return page; + } + + public Page findDfJitTagDestReport(Page page, DfJitTagDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitTagDestReport(entity)); + return page; + } + + public Page findDfJitIdSrcReport(Page page, DfJitIdSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitIdSrcReport(entity)); + return page; + } + + public Page findDfJitIdDestReport(Page page, DfJitIdDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dfJitLogSearchDao.findDfJitIdDestReport(entity)); + return page; + } + + public void queryDfJitFlCheck(SaveRequestLogThread thread,long start,String searchFl, String searchXz) { + try { + if (!StringUtil.isBlank(searchFl)) { + Integer.parseInt(searchFl); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchFl参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchFl参数错误"); + } + try { + if (!StringUtil.isBlank(searchXz)) { + Integer.parseInt(searchXz); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchXz参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchXz参数错误"); + } + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfKeyConvertUrlService.java b/src/main/java/com/nis/web/service/restful/DfKeyConvertUrlService.java new file mode 100644 index 0000000..0d31f9c --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfKeyConvertUrlService.java @@ -0,0 +1,114 @@ +package com.nis.web.service.restful; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfKeyConvertUrl; +import com.nis.domain.restful.DfKeyMailAdd; +import com.nis.domain.restful.DjFlowControlStop; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DfKeyConvertUrlDao; +import com.nis.web.dao.IntervalTimeSearchDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +/** +* @ClassName: DfKeyConvertUrlService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (DDM) +* @date 2016年9月27日上午10:12:58 +* @version V1.0 +*/ +@Service +public class DfKeyConvertUrlService extends BaseLogService { + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + protected final Logger logger = Logger.getLogger(this.getClass()); + /** + * 持久层对象 + */ + @Autowired + protected DfKeyConvertUrlDao dao; + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page findFlowControlStopPage(Page page, + DfKeyConvertUrl entity) { + entity.setPage(page); + page.setList(dao.findDfKeyConvertUrlPage(entity)); + return page; + } + + /** + * 关键字业务转换url查询条件检查 + * wx + * @param entity + */ + public void queryConditionCheck(SaveRequestLogThread thread,long start,DfKeyConvertUrl entity,Page page) { + + try { + if (!StringUtil.isBlank(entity.getSearchId())) { + Long.parseLong(entity.getSearchId()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchId参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getOptStartTime())) { + sdf.parse(entity.getOptStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误"); + } + + try { + if (!StringUtil.isBlank(entity.getOptEndTime())) { + sdf.parse(entity.getOptEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数错误"); + } + + try { + checkCloumnIsExist(thread,start,DfKeyConvertUrl.class, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } +} diff --git a/src/main/java/com/nis/web/service/restful/DfKeyMailAddService.java b/src/main/java/com/nis/web/service/restful/DfKeyMailAddService.java new file mode 100644 index 0000000..84ba943 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfKeyMailAddService.java @@ -0,0 +1,107 @@ +package com.nis.web.service.restful; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfKeyMailAdd; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DfKeyMailAddDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: DfKeyMailAddService + * @Description: TODO(这里用一句话描述这个类的作用) + * @author (ZBC) + * @date 2016年11月09日 下午02:25:00 + * @version V1.0 + */ + +@Service +@SuppressWarnings({ "rawtypes" }) +public class DfKeyMailAddService extends BaseLogService { + protected final Logger logger = Logger.getLogger(this.getClass()); + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + protected DfKeyMailAddDao dao; + + public Page findDfKeyMailAddPage(Page page, DfKeyMailAdd entity) { + entity.setPage(page); + page.setList(dao.findDfKeyMailAddPage(entity)); + return page; + } + + + /** + * 查询条件检查 + */ + public void queryConditionCheck(SaveRequestLogThread thread, long start, DfKeyMailAdd entity, Page page) { + try { + if (!StringUtil.isBlank(entity.getSearchId())) { + Long.parseLong(entity.getSearchId()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchId参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getOptStartTime())) { + sdf.parse(entity.getOptStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误"); + } + + try { + if (!StringUtil.isBlank(entity.getOptEndTime())) { + sdf.parse(entity.getOptEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数错误"); + } + + try { + checkCloumnIsExist(thread,start,DfKeyMailAdd.class, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } + + + + + +} diff --git a/src/main/java/com/nis/web/service/restful/DfLogSearchService.java b/src/main/java/com/nis/web/service/restful/DfLogSearchService.java new file mode 100644 index 0000000..a524215 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfLogSearchService.java @@ -0,0 +1,556 @@ +/** +* @Title: DfLogSearchService.java +* @Package com.nis.web.service.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月15日 下午2:08:12 +* @version V1.0 +*/ +package com.nis.web.service.restful; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.text.ParseException; +import java.util.List; + +import org.apache.log4j.Logger; + +import org.apache.http.client.ClientProtocolException; +import org.json.JSONException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.LogEntity; +import com.nis.domain.Page; +import com.nis.domain.restful.DfDnsLog; +import com.nis.domain.restful.DfFtpLog; +import com.nis.domain.restful.DfHttpKeywordLog; +import com.nis.domain.restful.DfHttpReqLog; +import com.nis.domain.restful.DfHttpResLog; +import com.nis.domain.restful.DfIpPortLog; +import com.nis.domain.restful.DfIpsecLog; +import com.nis.domain.restful.DfL2tpLog; +import com.nis.domain.restful.DfMailLog; +import com.nis.domain.restful.DfOpenvpnLog; +import com.nis.domain.restful.DfPptpLog; +import com.nis.domain.restful.DfSshLog; +import com.nis.domain.restful.DfSslLog; +import com.nis.domain.restful.DfTunnelRandomLog; +//import com.nis.util.MysqlJDBC; +import com.nis.util.Constants; +import com.nis.web.dao.DfLogSearchDao; +import com.nis.web.dao.DfLogSearchDaoCluster; +import com.nis.web.service.BaseLogService; + +/** +* @ClassName: DfLogSearchService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月5日 下午2:08:12 +* @version V1.0 +*/ +@Service +public class DfLogSearchService extends BaseLogService{ + protected final Logger logger = Logger.getLogger(this.getClass()); + /** + * 持久层对象 + */ + @Autowired + protected DfLogSearchDao dao; + @Autowired + protected DfLogSearchDaoCluster daoCluster; + + /** + * 获取单条数据 + * @param id + * @return + */ + public LogEntity get(Long id) { + return dao.get(id); + } + + /** + * 获取单条数据 + * @param entity + * @return + */ + public LogEntity get(LogEntity entity) { + return dao.get(entity); + } + + /** + * 查询列表数据 + * @param entity + * @return + */ + public List findList(LogEntity entity) { + return dao.findList(entity); + } + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findIpPortPage(Page page, DfIpPortLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findIpPortLogs(entity)); + } + + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpReqPage(Page page, DfHttpReqLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpReqLogs(entity)); + } + /*if(type.equals("jdbc")){ + logger.info("**********oralce JDBC数据查询开始时间"+System.currentTimeMillis()); + page.setList(MysqlJDBC.queryByCondition(page, entity)); + logger.info("**********oralce JDBC数据查询结束时间"+System.currentTimeMillis()); + }else if(type.equals("es")){ + logger.info("**********es数据查询开始时间"+System.currentTimeMillis()); + List dfHttpReqLogs=new ArrayList(); + elasticsearchSqlDao.findLogs(dfHttpReqLogs, entity); + page.setList(dfHttpReqLogs); + logger.info("**********es数据查询开始时间"+System.currentTimeMillis()); + }else{ + logger.info("**********oralce Mybatis数据查询开始时间"+System.currentTimeMillis()); + page.setList(dao.findHttpReqLogs(entity)); + logger.info("**********oralce Mybatis数据查询开始结束"+System.currentTimeMillis()); + }*/ + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpResPage(Page page, DfHttpResLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpResLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpKeywordPage(Page page, DfHttpKeywordLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpKeywordLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @throws Exception + */ + public Page findHttpMultiPartPage(Page page, DfHttpKeywordLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpKeywordLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findMailPage(Page page, DfMailLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findMailLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findDnsPage(Page page, DfDnsLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findDnsLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findFtpPage(Page page, DfFtpLog entity,String activeSys) throws SQLException, IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findFtpLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findPptpPage(Page page, DfPptpLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findPptpLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findL2tpPage(Page page, DfL2tpLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findL2tpLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findIpsecPage(Page page, DfIpsecLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findIpsecLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findOpenvpnPage(Page page, DfOpenvpnLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findOpenvpnLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findSshPage(Page page, DfSshLog entity,String activeSys) throws Exception { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findSshLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findSslPage(Page page, DfSslLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findSslLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findTunnelRandomPage(Page page, DfTunnelRandomLog entity,String activeSys) throws Exception{ + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findTunnelRandomLogs(entity)); + } + return page; + } + + + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findIpPortPageCluster(Page page, DfIpPortLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findIpPortLogsCluster(entity)); + + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpReqPageCluster(Page page, DfHttpReqLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findHttpReqLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpResPageCluster(Page page, DfHttpResLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findHttpResLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findHttpKeywordPageCluster(Page page, DfHttpKeywordLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findHttpKeywordLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @throws Exception + */ + public Page findHttpMultiPartPageCluster(Page page, DfHttpKeywordLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findHttpKeywordLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findMailPageCluster(Page page, DfMailLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findMailLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findDnsPageCluster(Page page, DfDnsLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findDnsLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findFtpPageCluster(Page page, DfFtpLog entity,String activeSys) throws SQLException, IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + page.setList(daoCluster.findFtpLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findPptpPageCluster(Page page, DfPptpLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findPptpLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findL2tpPageCluster(Page page, DfL2tpLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findL2tpLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findIpsecPageCluster(Page page, DfIpsecLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findIpsecLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findOpenvpnPageCluster(Page page, DfOpenvpnLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findOpenvpnLogsCluster(entity)); + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findSshPageCluster(Page page, DfSshLog entity,String activeSys) throws Exception { + entity.setPage(page); + page.setList(daoCluster.findSshLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findSslPageCluster(Page page, DfSslLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findSslLogsCluster(entity)); + return page; + } + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws Exception + */ + public Page findTunnelRandomPageCluster(Page page, DfTunnelRandomLog entity,String activeSys) throws Exception{ + entity.setPage(page); + page.setList(daoCluster.findTunnelRandomLogsCluster(entity)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfMultiDimensionalReportService.java b/src/main/java/com/nis/web/service/restful/DfMultiDimensionalReportService.java new file mode 100644 index 0000000..6bf5e0a --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfMultiDimensionalReportService.java @@ -0,0 +1,122 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfAttrTypeReport; +import com.nis.domain.restful.DfDestIpCountryReport; +import com.nis.domain.restful.DfDestIpReport; +import com.nis.domain.restful.DfEntranceReport; +import com.nis.domain.restful.DfLwhhAttrReport; +import com.nis.domain.restful.DfLwhhReport; +import com.nis.domain.restful.DfLwhhTagReport; +import com.nis.domain.restful.DfPzReport; +import com.nis.domain.restful.DfPzReportStat; +import com.nis.domain.restful.DfServiceReport; +import com.nis.domain.restful.DfSrcIpAttrReport; +import com.nis.domain.restful.DfSrcIpDomeSticReport; +import com.nis.domain.restful.DfSrcIpReport; +import com.nis.domain.restful.DfSrcIpTagReport; +import com.nis.domain.restful.DfTagReport; +import com.nis.web.dao.DfMultiDimensionalReportDao; +import com.nis.web.dao.DfReportDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DfMultiDimensionsReportService + * @Description: TODO(df多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午3:14:07 + * @version V1.0 + */ +@Service +public class DfMultiDimensionalReportService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DfMultiDimensionalReportDao dao; + + + public Page findDfLwhhAttrReportPage(Page page, DfLwhhAttrReport entity) throws SQLException { + entity.setPage(page); + List dfLwhhAttrReports = dao.findDfLwhhAttrReport(entity); + if (null != dfLwhhAttrReports && dfLwhhAttrReports.size() > 0) { + for (DfLwhhAttrReport dfLwhhAttrReport : dfLwhhAttrReports) { + if (null != dfLwhhAttrReport.getAsum() && dfLwhhAttrReport.getAsum() != 0) { + dfLwhhAttrReport.setAbsum(dfLwhhAttrReport.getAsum()); + } else if ((null == dfLwhhAttrReport.getAsum() || dfLwhhAttrReport.getAsum() == 0) + && (null != dfLwhhAttrReport.getBsum() && dfLwhhAttrReport.getBsum() != 0)) { + dfLwhhAttrReport.setAbsum(dfLwhhAttrReport.getBsum()); + } else { + dfLwhhAttrReport.setAbsum(0l); + } + } + } + page.setList(dfLwhhAttrReports); + return page; + } + + public Page findDfLwhhTagReportPage(Page page, DfLwhhTagReport entity) throws SQLException { + entity.setPage(page); + List dfLwhhTagReports = dao.findDfLwhhTagReportPage(entity); + if (null != dfLwhhTagReports && dfLwhhTagReports.size() > 0) { + for (DfLwhhTagReport dfLwhhTagReport : dfLwhhTagReports) { + if (null != dfLwhhTagReport.getAsum() && dfLwhhTagReport.getAsum() != 0) { + dfLwhhTagReport.setAbsum(dfLwhhTagReport.getAsum()); + } else if ((null == dfLwhhTagReport.getAsum() || dfLwhhTagReport.getAsum() == 0) + && (null != dfLwhhTagReport.getBsum() && dfLwhhTagReport.getBsum() != 0)) { + dfLwhhTagReport.setAbsum(dfLwhhTagReport.getBsum()); + } else { + dfLwhhTagReport.setAbsum(0l); + } + } + } + page.setList(dfLwhhTagReports); + return page; + } + + public Page findDfSrcIpAttrReportPage(Page page, DfSrcIpAttrReport entity) throws SQLException { + entity.setPage(page); + List dfSrcIpAttrReports = dao.findDfSrcIpAttrReportPage(entity); + if (null != dfSrcIpAttrReports && dfSrcIpAttrReports.size() > 0) { + for (DfSrcIpAttrReport dfSrcIpAttrReport : dfSrcIpAttrReports) { + if (null != dfSrcIpAttrReport.getAsum() && dfSrcIpAttrReport.getAsum() != 0) { + dfSrcIpAttrReport.setAbsum(dfSrcIpAttrReport.getAsum()); + } else if ((null == dfSrcIpAttrReport.getAsum() || dfSrcIpAttrReport.getAsum() == 0) + && (null != dfSrcIpAttrReport.getBsum() && dfSrcIpAttrReport.getBsum() != 0)) { + dfSrcIpAttrReport.setAbsum(dfSrcIpAttrReport.getBsum()); + } else { + dfSrcIpAttrReport.setAbsum(0l); + } + } + } + page.setList(dfSrcIpAttrReports); + return page; + } + + public Page findDfSrcIpTagReportPage(Page page, DfSrcIpTagReport entity) throws SQLException { + entity.setPage(page); + List dfSrcIpTagReports = dao.findDfSrcIpTagReportPage(entity); + if (null != dfSrcIpTagReports && dfSrcIpTagReports.size() > 0) { + for (DfSrcIpTagReport dfSrcIpTagReport : dfSrcIpTagReports) { + if (null != dfSrcIpTagReport.getAsum() && dfSrcIpTagReport.getAsum() != 0) { + dfSrcIpTagReport.setAbsum(dfSrcIpTagReport.getAsum()); + } else if ((null == dfSrcIpTagReport.getAsum() || dfSrcIpTagReport.getAsum() == 0) + && (null != dfSrcIpTagReport.getBsum() && dfSrcIpTagReport.getBsum() != 0)) { + dfSrcIpTagReport.setAbsum(dfSrcIpTagReport.getBsum()); + } else { + dfSrcIpTagReport.setAbsum(0l); + } + } + } + page.setList(dfSrcIpTagReports); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfMultiDimensionalStatLogService.java b/src/main/java/com/nis/web/service/restful/DfMultiDimensionalStatLogService.java new file mode 100644 index 0000000..cd3310c --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfMultiDimensionalStatLogService.java @@ -0,0 +1,83 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfLwhhAttrDaily; +import com.nis.domain.restful.DfLwhhAttrMonth; +import com.nis.domain.restful.DfLwhhTagDaily; +import com.nis.domain.restful.DfLwhhTagMonth; +import com.nis.domain.restful.DfSrcIpAttrDaily; +import com.nis.domain.restful.DfSrcIpAttrMonth; +import com.nis.domain.restful.DfSrcIpTagDaily; +import com.nis.domain.restful.DfSrcIpTagMonth; +import com.nis.web.dao.DfMultiDimensionalStatLogDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DfMultiDimensionsReportService + * @Description: TODO(df多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午3:14:07 + * @version V1.0 + */ +@Service +public class DfMultiDimensionalStatLogService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DfMultiDimensionalStatLogDao dao; + + public Page dfLwhhAttrDaily(Page page, DfLwhhAttrDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhAttrDaily(entity)); + return page; + } + public Page dfLwhhAttrMonth(Page page, DfLwhhAttrMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhAttrMonth(entity)); + return page; + } + + + public Page dfLwhhTagDaily(Page page, DfLwhhTagDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhTagDaily(entity)); + return page; + } + public Page dfLwhhTagMonth(Page page, DfLwhhTagMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhTagMonth(entity)); + return page; + } + + + public Page dfSrcIpAttrDaily(Page page, DfSrcIpAttrDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpAttrDaily(entity)); + return page; + } + public Page dfSrcIpAttrMonth(Page page, DfSrcIpAttrMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpAttrMonth(entity)); + return page; + } + + + public Page dfSrcIpTagDaily(Page page, DfSrcIpTagDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpTagDaily(entity)); + return page; + } + public Page dfSrcIpTagMonth(Page page, DfSrcIpTagMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpTagMonth(entity)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfReportService.java b/src/main/java/com/nis/web/service/restful/DfReportService.java new file mode 100644 index 0000000..f58f1c9 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfReportService.java @@ -0,0 +1,277 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfAttrTypeReport; +import com.nis.domain.restful.DfDestIpCountryReport; +import com.nis.domain.restful.DfDestIpReport; +import com.nis.domain.restful.DfEntranceReport; +import com.nis.domain.restful.DfLwhhReport; +import com.nis.domain.restful.DfPzReport; +import com.nis.domain.restful.DfPzReportStat; +import com.nis.domain.restful.DfServiceReport; +import com.nis.domain.restful.DfSrcIpDomeSticReport; +import com.nis.domain.restful.DfSrcIpReport; +import com.nis.domain.restful.DfTagReport; +import com.nis.web.dao.DfReportDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DfReportService + * @Description: TODO(一句话描述这个类) + * @author (DDM) + * @date 2016年10月31日上午11:54:46 + * @version V1.0 + */ +@Service +public class DfReportService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DfReportDao dao; + + /** + * + * + * @Title: findDfPzReportPage + * @Description: TODO(这里用一句话描述这个方法的作用) + * @param @param + * page + * @param @param + * entity + * @param @return + * @param @throws + * SQLException + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public Page findDfPzReportPage(Page page, DfPzReport entity) throws SQLException { + entity.setPage(page); + page.setList(dao.findDfPzReport(entity)); + return page; + } + + public Page findAttrTypeReport(Page page, DfAttrTypeReport entity) + throws SQLException { + entity.setPage(page); + List findAttrTypeReport = dao.findAttrTypeReport(entity); + page.setList(findAttrTypeReport); + return page; + } + + public Page findSrcIpDomeSticReport(Page page, + DfSrcIpDomeSticReport entity) throws SQLException { + entity.setPage(page); + List findSrcIpDomeSticReport = dao.findSrcIpDomeSticReport(entity); + if (null != findSrcIpDomeSticReport && findSrcIpDomeSticReport.size() > 0) { + for (DfSrcIpDomeSticReport dfSrcIpDomeSticReport : findSrcIpDomeSticReport) { + if (null != dfSrcIpDomeSticReport.getAsum() && dfSrcIpDomeSticReport.getAsum() != 0) { + dfSrcIpDomeSticReport.setAbsum(dfSrcIpDomeSticReport.getAsum()); + } else if ((null == dfSrcIpDomeSticReport.getAsum() || dfSrcIpDomeSticReport.getAsum() == 0) + && (null != dfSrcIpDomeSticReport.getBsum() && dfSrcIpDomeSticReport.getBsum() != 0)) { + dfSrcIpDomeSticReport.setAbsum(dfSrcIpDomeSticReport.getBsum()); + } else { + dfSrcIpDomeSticReport.setAbsum(0l); + } + } + } + page.setList(findSrcIpDomeSticReport); + return page; + } + + public Page findDestIpCountryReport(Page page, + DfDestIpCountryReport entity) throws SQLException { + entity.setPage(page); + List destIpCountryReport = dao.findDestIpCountryReport(entity); + if (null != destIpCountryReport && destIpCountryReport.size() > 0) { + for (DfDestIpCountryReport dfDestIpCountryReport : destIpCountryReport) { + if (null != dfDestIpCountryReport.getAsum() && dfDestIpCountryReport.getAsum() != 0) { + dfDestIpCountryReport.setAbsum(dfDestIpCountryReport.getAsum()); + } else if ((null == dfDestIpCountryReport.getAsum() || dfDestIpCountryReport.getAsum() == 0) + && (null != dfDestIpCountryReport.getBsum() && dfDestIpCountryReport.getBsum() != 0)) { + dfDestIpCountryReport.setAbsum(dfDestIpCountryReport.getBsum()); + } else { + dfDestIpCountryReport.setAbsum(0l); + } + } + } + page.setList(destIpCountryReport); + return page; + } + + public Page findDfEntranceReport(Page page, DfEntranceReport entity) + throws SQLException { + entity.setPage(page); + List findDfEntranceReport = dao.findDfEntranceReport(entity); + if (null != findDfEntranceReport && findDfEntranceReport.size() > 0) { + for (DfEntranceReport dfEntranceReport : findDfEntranceReport) { + if (null != dfEntranceReport.getAsum() && dfEntranceReport.getAsum() != 0) { + dfEntranceReport.setAbsum(dfEntranceReport.getAsum()); + } else if ((null == dfEntranceReport.getAsum() || dfEntranceReport.getAsum() == 0) + && (null != dfEntranceReport.getBsum() && dfEntranceReport.getBsum() != 0)) { + dfEntranceReport.setAbsum(dfEntranceReport.getBsum()); + } else { + dfEntranceReport.setAbsum(0l); + } + } + } + page.setList(findDfEntranceReport); + return page; + } + + public Page findDfLwhhReport(Page page, DfLwhhReport entity) throws SQLException { + entity.setPage(page); + List findDfLwhhReport = dao.findDfLwhhReport(entity); + if (null != findDfLwhhReport && findDfLwhhReport.size() > 0) { + for (DfLwhhReport dfLwhhReport : findDfLwhhReport) { + if (null != dfLwhhReport.getAsum() && dfLwhhReport.getAsum() != 0) { + dfLwhhReport.setAbsum(dfLwhhReport.getAsum()); + } else if ((null == dfLwhhReport.getAsum() || dfLwhhReport.getAsum() == 0) + && (null != dfLwhhReport.getBsum() && dfLwhhReport.getBsum() != 0)) { + dfLwhhReport.setAbsum(dfLwhhReport.getBsum()); + } else { + dfLwhhReport.setAbsum(0l); + } + } + } + page.setList(findDfLwhhReport); + return page; + } + + public Page findDfTagReport(Page page, DfTagReport entity) throws SQLException { + entity.setPage(page); + List findDfTagReport = dao.findDfTagReport(entity); + page.setList(findDfTagReport); + return page; + } + + public Page findDfPriTagReport(Page page, DfPzReport entity) throws SQLException { + entity.setPage(page); + List findDfPzReport = dao.findDfPzReport(entity); + if (null != findDfPzReport && findDfPzReport.size() > 0) { + for (DfPzReport dfPzReport : findDfPzReport) { + if (null != dfPzReport.getAsum() && dfPzReport.getAsum() != 0) { + dfPzReport.setAbsum(dfPzReport.getAsum()); + } else if ((null == dfPzReport.getAsum() || dfPzReport.getAsum() == 0) + && (null != dfPzReport.getBsum() && dfPzReport.getBsum() != 0)) { + dfPzReport.setAbsum(dfPzReport.getBsum()); + } else { + dfPzReport.setAbsum(0l); + } + } + } + page.setList(findDfPzReport); + return page; + } + + public Page findDfPzReportStatPage(Page page, DfPzReportStat entity) + throws SQLException { + entity.setPage(page); + page.setList(dao.findDfPzReportStat(entity)); + return page; + } + public Page findDfPzReportStatMinutesPage(Page page, DfPzReportStat entity) + throws SQLException { + entity.setPage(page); + page.setList(dao.findDfPzReportStatMinutes(entity)); + return page; + } + + public Long findDfPzReportSumStat(Page page, DfPzReportStat entity) throws SQLException { + return dao.findDfPzReportSum(entity); + } + + /** + * @Title: findDfSrcIpReport + * @Description: TODO(这里用一句话描述这个方法的作用) + * @param @param + * page + * @param @param + * entity + * @param @return + * @param @throws + * SQLException + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public Page findDfSrcIpReport(Page page, DfSrcIpReport entity) { + entity.setPage(page); + page.setList(dao.findDfSrcIpReport(entity)); + return page; + } + + /** + * @Title: findDfDestIpReport + * @Description: TODO(这里用一句话描述这个方法的作用) + * @param @param + * page + * @param @param + * entity + * @param @return + * @param @throws + * SQLException + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public Page findDfDestIpReport(Page page, DfDestIpReport entity) { + entity.setPage(page); + page.setList(dao.findDfDestIpReport(entity)); + return page; + } + + /** + * + * + * @Title: findDfServiceReportPage + * @Description: TODO(这里用一句话描述这个方法的作用) + * @param @param + * page + * @param @param + * entity + * @param @return + * @param @throws + * SQLException + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public Page findDfServiceReportPage(Page page, DfServiceReport entity) + throws SQLException { + entity.setPage(page); + page.setList(dao.findDfServiceReport(entity)); + return page; + } + + /** + * @Title: findDfTagReportPage + * @Description: TODO(这里用一句话描述这个方法的作用) + * @param @param + * page + * @param @param + * entity + * @param @return + * @param @throws + * SQLException + * @return Map 返回类型 + * @author (DDM) + * @version V1.0 + */ + public Page findDfTagReportPage(Page page, DfTagReport entity) throws SQLException { + entity.setPage(page); + + List findDfTagReportPage = dao.findDfTagReportPage(entity); + page.setList(findDfTagReportPage); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfStatLogService.java b/src/main/java/com/nis/web/service/restful/DfStatLogService.java new file mode 100644 index 0000000..78c9af5 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfStatLogService.java @@ -0,0 +1,203 @@ +/** +* @Title: DfStatLogService.java +* @Package com.nis.web.service.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:50:12 +* @version V1.0 +*/ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfAttrStatLogDaily; +import com.nis.domain.restful.DfAttrStatLogMonth; +import com.nis.domain.restful.DfDestIpCounrtyStatLogDaily; +import com.nis.domain.restful.DfDestIpCounrtyStatLogMonth; +import com.nis.domain.restful.DfEntrStatLogDaily; +import com.nis.domain.restful.DfEntrStatLogMonth; +import com.nis.domain.restful.DfLwhhStatLogDaily; +import com.nis.domain.restful.DfLwhhStatLogMonth; +import com.nis.domain.restful.DfSrcIpDomesticStatLogDaily; +import com.nis.domain.restful.DfSrcIpDomesticStatLogMonth; +import com.nis.domain.restful.DfStatLogDaily; +import com.nis.domain.restful.DfStatLogMonth; +import com.nis.domain.restful.DfTagStatLogDaily; +import com.nis.domain.restful.DfTagStatLogMonth; +import com.nis.web.dao.DfStatLogDao; +import com.nis.web.service.BaseLogService; + +/** +* @ClassName: DfStatLogService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月13日 上午11:50:12 +* @version V1.0 +*/ +@Service +public class DfStatLogService extends BaseLogService{ + /** + * 持久层对象 + */ + @Autowired + protected DfStatLogDao dao; + + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfStatLogDaily(Page page, DfStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfStatLogDaily(entity)); + return page; + } + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfStatLogMonth(Page page, DfStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfStatLogMonth(entity)); + return page; + } + /** + * 查询标签日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfTagStatLogDaily(Page page, DfTagStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfTagStatLogDaily(entity)); + return page; + } + /** + * 查询标签月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfTagStatLogMonth(Page page, DfTagStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfTagStatLogMonth(entity)); + return page; + } + /** + * 查询性质日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfAttrStatLogDaily(Page page, DfAttrStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfAttrStatLogDaily(entity)); + return page; + } + /** + * 查询性质月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfAttrStatLogMonth(Page page, DfAttrStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfAttrStatLogMonth(entity)); + return page; + } + /** + * 查询局点日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfEntrStatLogDaily(Page page, DfEntrStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfEntrStatLogDaily(entity)); + return page; + } + /** + * 查询局点月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfEntrStatLogMonth(Page page, DfEntrStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfEntrStatLogMonth(entity)); + return page; + } + /** + * 查询来文函号日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfLwhhStatLogDaily(Page page, DfLwhhStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhStatLogDaily(entity)); + return page; + } + /** + * 查询来文函号月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfLwhhStatLogMonth(Page page, DfLwhhStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfLwhhStatLogMonth(entity)); + return page; + } + /** + * 查询境内源ip日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfSrcIpDomesticStatLogDaily(Page page, DfSrcIpDomesticStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpDomesticStatLogDaily(entity)); + return page; + } + /** + * 查询境内源ip月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfSrcIpDomesticStatLogMonth(Page page, DfSrcIpDomesticStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfSrcIpDomesticStatLogMonth(entity)); + return page; + } + /** + * 查询国家目的ip日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfDestIpCounrtyStatLogDaily(Page page, DfDestIpCounrtyStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfDestIpCounrtyStatLogDaily(entity)); + return page; + } + /** + * 查询国家目的ip月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page dfDestIpCounrtyStatLogMonth(Page page, DfDestIpCounrtyStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.dfDestIpCounrtyStatLogMonth(entity)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DfdjLogStatService.java b/src/main/java/com/nis/web/service/restful/DfdjLogStatService.java new file mode 100644 index 0000000..40e5c06 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DfdjLogStatService.java @@ -0,0 +1,122 @@ +package com.nis.web.service.restful; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.StatLogEntity; +import com.nis.domain.restful.DfDjLogStatistics; +import com.nis.domain.restful.DfDjPzLogStatistics; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DfDjLogStatDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: DfdjLogStatService + * @Description: 封堵/监测日志统计查询 + * @author (zbc) + * @date 2016年11月14日 下午4:00:00 + * @version V1.0 + */ +@Service +@SuppressWarnings({ "rawtypes" }) +public class DfdjLogStatService extends BaseLogService { + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + protected DfDjLogStatDao dao; + + + public DfDjLogStatistics findDfLogStatistics(DfDjLogStatistics entity) { + List list = dao.findDfLogStatistics(entity); + return entity; + } + + public Page findDfPzLogStatistics(Page page, DfDjPzLogStatistics entity) { + entity.setPage(page); + page.setList(dao.findDfPzLogStatistics(entity)); + return page; + } + + + public DfDjLogStatistics findDjLogStatistics(DfDjLogStatistics entity) { + List list = dao.findDjLogStatistics(entity); + return entity; + } + + public Page findDjPzLogStatistics(Page page, DfDjPzLogStatistics entity) { + entity.setPage(page); + page.setList(dao.findDjPzLogStatistics(entity)); + return page; + } + + + @Override + public void queryConditionCheck(SaveRequestLogThread thread, long start, StatLogEntity entity, Class clazz, Page page) { + /* + * searchConfigId为多条件格式 + */ + try { + if (!StringUtil.isBlank(entity.getSearchStatStartTime())) { + sdf.parse(entity.getSearchStatStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchStatEndTime())) { + sdf.parse(entity.getSearchStatEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数错误"); + } + + try { + if (!StringUtil.isBlank(entity.getSearchService())) { + Integer.parseInt(entity.getSearchService()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数错误"); + } + + try { + checkCloumnIsExist(thread,start,clazz, page); + } catch (RestServiceException e) { + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + } +} diff --git a/src/main/java/com/nis/web/service/restful/DjJitLogSearchService.java b/src/main/java/com/nis/web/service/restful/DjJitLogSearchService.java new file mode 100644 index 0000000..ea5ee1e --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjJitLogSearchService.java @@ -0,0 +1,150 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjCkStatLog; +import com.nis.domain.restful.DjJitAffairDestReport; +import com.nis.domain.restful.DjJitAffairSrcReport; +import com.nis.domain.restful.DjJitFlDestReport; +import com.nis.domain.restful.DjJitFlSrcReport; +import com.nis.domain.restful.DjJitGuaranteeDestReport; +import com.nis.domain.restful.DjJitGuaranteeSrcReport; +import com.nis.domain.restful.DjJitIdDestReport; +import com.nis.domain.restful.DjJitIdSrcReport; +import com.nis.domain.restful.DjJitMissionDestReport; +import com.nis.domain.restful.DjJitMissionSrcReport; +import com.nis.domain.restful.DjJitTagDestReport; +import com.nis.domain.restful.DjJitTagSrcReport; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.DjJitLogSearchDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +@Service +public class DjJitLogSearchService extends BaseLogService { + + @Autowired + private DjJitLogSearchDao djJitLogSearchDao; + + public Page findDjJitFlSrcReport(Page page, DjJitFlSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitFlSrcReport(entity)); + return page; + } + + public Page findDjJitFlDestReport(Page page, DjJitFlDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitFlDestReport(entity)); + return page; + } + + public Page findDjJitAffairSrcReport(Page page, + DjJitAffairSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitAffairSrcReport(entity)); + return page; + } + + public Page findDjJitAffairDestReport(Page page, + DjJitAffairDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitAffairDestReport(entity)); + return page; + } + + public Page findDjJitMissionSrcReport(Page page, + DjJitMissionSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitMissionSrcReport(entity)); + return page; + } + + public Page findDjJitMissionDestReport(Page page, + DjJitMissionDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitMissionDestReport(entity)); + return page; + } + + public Page findDjJitGuaranteeSrcReport(Page page, + DjJitGuaranteeSrcReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitGuaranteeSrcReport(entity)); + return page; + } + + public Page findDjJitGuaranteeDestReport(Page page, + DjJitGuaranteeDestReport entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitGuaranteeDestReport(entity)); + return page; + } + + public Page findDjJitTagSrcReport(Page page, DjJitTagSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitTagSrcReport(entity)); + return page; + } + + public Page findDjJitTagDestReport(Page page, DjJitTagDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitTagDestReport(entity)); + return page; + } + + public Page findDjJitIdSrcReport(Page page, DjJitIdSrcReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitIdSrcReport(entity)); + return page; + } + + public Page findDjJitIdDestReport(Page page, DjJitIdDestReport entity) + throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjJitIdDestReport(entity)); + return page; + } + + public Page findDjCkStatLog(Page page, DjCkStatLog entity) throws SQLException { + entity.setPage(page); + page.setList(djJitLogSearchDao.findDjCkStatLog(entity)); + return page; + } + + public void queryDjJitFlCheck(SaveRequestLogThread thread,long start,String searchFl, String searchXz) { + try { + if (!StringUtil.isBlank(searchFl)) { + Integer.parseInt(searchFl); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchFl参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchFl参数错误"); + } + try { + if (!StringUtil.isBlank(searchXz)) { + Integer.parseInt(searchXz); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchXz参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"searchXz参数错误"); + } + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DjLogSearchService.java b/src/main/java/com/nis/web/service/restful/DjLogSearchService.java new file mode 100644 index 0000000..23516fb --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjLogSearchService.java @@ -0,0 +1,379 @@ +package com.nis.web.service.restful; + +import java.io.IOException; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.http.client.ClientProtocolException; +import org.json.JSONException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjDnsLog; +import com.nis.domain.restful.DjFtpLog; +import com.nis.domain.restful.DjHttpKeywordLog; +import com.nis.domain.restful.DjHttpReqLog; +import com.nis.domain.restful.DjHttpResLog; +import com.nis.domain.restful.DjIpPortLog; +import com.nis.domain.restful.DjIpsecLog; +import com.nis.domain.restful.DjL2tpLog; +import com.nis.domain.restful.DjMailLog; +import com.nis.domain.restful.DjOpenvpnLog; +import com.nis.domain.restful.DjPptpLog; +import com.nis.domain.restful.DjSshLog; +import com.nis.domain.restful.DjSslLog; +import com.nis.util.Constants; +import com.nis.web.dao.DjLogSearchDao; +import com.nis.web.service.BaseLogService; + +/** +* @ClassName: DjLogSearchService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (zbc) +* @date 2016年9月7日 上午11:15:12 +* @version V1.0 +*/ +@Service +public class DjLogSearchService extends BaseLogService { + + /** + * 持久层对象 + */ + @Autowired + protected DjLogSearchDao dao; + + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findIpPortPage(Page page, DjIpPortLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findIpPortLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findHttpResPage(Page page, DjHttpResLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpResLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param httpReqLog + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findHttpReqPage(Page page, DjHttpReqLog httpReqLog,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + httpReqLog.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, httpReqLog,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpReqLogs(httpReqLog)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findHttpKeywordPage(Page page, DjHttpKeywordLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpKeywordLogs(entity)); + } + return page; + } + /** + * 查询分页数据 + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findHttpMultiPartPage(Page page, DjHttpKeywordLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findHttpKeywordLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findMailPage(Page page, DjMailLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findMailLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findDnsPage(Page page, DjDnsLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findDnsLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findFtpPage(Page page, DjFtpLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findFtpLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findPptpPage(Page page, DjPptpLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findPptpLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findL2tpPage(Page page, DjL2tpLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findL2tpLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findIpsecPage(Page page, DjIpsecLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findIpsecLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findOpenvpnPage(Page page, DjOpenvpnLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findOpenvpnLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findSshPage(Page page, DjSshLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findSshLogs(entity)); + } + return page; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + * @throws IOException + * @throws JSONException + * @throws ParseException + * @throws ClientProtocolException + * @throws IllegalAccessException + * @throws IllegalArgumentException + */ + public Page findSslPage(Page page, DjSslLog entity,String activeSys) throws IllegalArgumentException, IllegalAccessException, ClientProtocolException, ParseException, JSONException, IOException { + entity.setPage(page); + if(Constants.IS_USE_ES){ + List resultList=new ArrayList<>(); + elasticsearchSqlDao.findLogs(resultList, entity,activeSys); + page.setList(resultList); + }else{ + page.setList(dao.findSslLogs(entity)); + } + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DjMultiDimensionalReportService.java b/src/main/java/com/nis/web/service/restful/DjMultiDimensionalReportService.java new file mode 100644 index 0000000..380add5 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjMultiDimensionalReportService.java @@ -0,0 +1,112 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjLwhhAttrReport; +import com.nis.domain.restful.DjLwhhReport; +import com.nis.domain.restful.DjLwhhTagReport; +import com.nis.domain.restful.DjSrcIpAttrReport; +import com.nis.domain.restful.DjSrcIpTagReport; +import com.nis.web.dao.DjMultiDimensionalReportDao; +import com.nis.web.dao.DjReportDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DjMultiDimensionsReportService + * @Description: TODO(dj多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午3:14:07 + * @version V1.0 + */ +@Service +public class DjMultiDimensionalReportService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DjMultiDimensionalReportDao dao; + + + public Page findDjLwhhAttrReportPage(Page page, DjLwhhAttrReport entity) throws SQLException { + entity.setPage(page); + List djLwhhAttrReports = dao.findDjLwhhAttrReport(entity); + if (null != djLwhhAttrReports && djLwhhAttrReports.size() > 0) { + for (DjLwhhAttrReport djLwhhAttrReport : djLwhhAttrReports) { + if (null != djLwhhAttrReport.getAsum() && djLwhhAttrReport.getAsum() != 0) { + djLwhhAttrReport.setAbsum(djLwhhAttrReport.getAsum()); + } else if ((null == djLwhhAttrReport.getAsum() || djLwhhAttrReport.getAsum() == 0) + && (null != djLwhhAttrReport.getBsum() && djLwhhAttrReport.getBsum() != 0)) { + djLwhhAttrReport.setAbsum(djLwhhAttrReport.getBsum()); + } else { + djLwhhAttrReport.setAbsum(0l); + } + } + } + page.setList(djLwhhAttrReports); + return page; + } + + public Page findDjLwhhTagReportPage(Page page, DjLwhhTagReport entity) throws SQLException { + entity.setPage(page); + List djLwhhTagReports = dao.findDjLwhhTagReportPage(entity); + if (null != djLwhhTagReports && djLwhhTagReports.size() > 0) { + for (DjLwhhTagReport djLwhhTagReport : djLwhhTagReports) { + if (null != djLwhhTagReport.getAsum() && djLwhhTagReport.getAsum() != 0) { + djLwhhTagReport.setAbsum(djLwhhTagReport.getAsum()); + } else if ((null == djLwhhTagReport.getAsum() || djLwhhTagReport.getAsum() == 0) + && (null != djLwhhTagReport.getBsum() && djLwhhTagReport.getBsum() != 0)) { + djLwhhTagReport.setAbsum(djLwhhTagReport.getBsum()); + } else { + djLwhhTagReport.setAbsum(0l); + } + } + } + page.setList(djLwhhTagReports); + return page; + } + + public Page findDjSrcIpAttrReportPage(Page page, DjSrcIpAttrReport entity) throws SQLException { + entity.setPage(page); + List djSrcIpAttrReports = dao.findDjSrcIpAttrReportPage(entity); + if (null != djSrcIpAttrReports && djSrcIpAttrReports.size() > 0) { + for (DjSrcIpAttrReport djSrcIpAttrReport : djSrcIpAttrReports) { + if (null != djSrcIpAttrReport.getAsum() && djSrcIpAttrReport.getAsum() != 0) { + djSrcIpAttrReport.setAbsum(djSrcIpAttrReport.getAsum()); + } else if ((null == djSrcIpAttrReport.getAsum() || djSrcIpAttrReport.getAsum() == 0) + && (null != djSrcIpAttrReport.getBsum() && djSrcIpAttrReport.getBsum() != 0)) { + djSrcIpAttrReport.setAbsum(djSrcIpAttrReport.getBsum()); + } else { + djSrcIpAttrReport.setAbsum(0l); + } + } + } + page.setList(djSrcIpAttrReports); + return page; + } + + public Page findDjSrcIpTagReportPage(Page page, DjSrcIpTagReport entity) throws SQLException { + entity.setPage(page); + List djSrcIpTagReports = dao.findDjSrcIpTagReportPage(entity); + if (null != djSrcIpTagReports && djSrcIpTagReports.size() > 0) { + for (DjSrcIpTagReport djSrcIpTagReport : djSrcIpTagReports) { + if (null != djSrcIpTagReport.getAsum() && djSrcIpTagReport.getAsum() != 0) { + djSrcIpTagReport.setAbsum(djSrcIpTagReport.getAsum()); + } else if ((null == djSrcIpTagReport.getAsum() || djSrcIpTagReport.getAsum() == 0) + && (null != djSrcIpTagReport.getBsum() && djSrcIpTagReport.getBsum() != 0)) { + djSrcIpTagReport.setAbsum(djSrcIpTagReport.getBsum()); + } else { + djSrcIpTagReport.setAbsum(0l); + } + } + } + page.setList(djSrcIpTagReports); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DjMultiDimensionalStatLogService.java b/src/main/java/com/nis/web/service/restful/DjMultiDimensionalStatLogService.java new file mode 100644 index 0000000..83b7225 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjMultiDimensionalStatLogService.java @@ -0,0 +1,83 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjLwhhAttrDaily; +import com.nis.domain.restful.DjLwhhAttrMonth; +import com.nis.domain.restful.DjLwhhTagDaily; +import com.nis.domain.restful.DjLwhhTagMonth; +import com.nis.domain.restful.DjSrcIpAttrDaily; +import com.nis.domain.restful.DjSrcIpAttrMonth; +import com.nis.domain.restful.DjSrcIpTagDaily; +import com.nis.domain.restful.DjSrcIpTagMonth; +import com.nis.web.dao.DjMultiDimensionalStatLogDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DjMultiDimensionsReportService + * @Description: TODO(dj多维实时统计) + * @author (DDM) + * @date 2017年8月4日下午3:14:07 + * @version V1.0 + */ +@Service +public class DjMultiDimensionalStatLogService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DjMultiDimensionalStatLogDao dao; + + public Page djLwhhAttrDaily(Page page, DjLwhhAttrDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhAttrDaily(entity)); + return page; + } + public Page djLwhhAttrMonth(Page page, DjLwhhAttrMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhAttrMonth(entity)); + return page; + } + + + public Page djLwhhTagDaily(Page page, DjLwhhTagDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhTagDaily(entity)); + return page; + } + public Page djLwhhTagMonth(Page page, DjLwhhTagMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhTagMonth(entity)); + return page; + } + + + public Page djSrcIpAttrDaily(Page page, DjSrcIpAttrDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpAttrDaily(entity)); + return page; + } + public Page djSrcIpAttrMonth(Page page, DjSrcIpAttrMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpAttrMonth(entity)); + return page; + } + + + public Page djSrcIpTagDaily(Page page, DjSrcIpTagDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpTagDaily(entity)); + return page; + } + public Page djSrcIpTagMonth(Page page, DjSrcIpTagMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpTagMonth(entity)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DjReportService.java b/src/main/java/com/nis/web/service/restful/DjReportService.java new file mode 100644 index 0000000..ded5cad --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjReportService.java @@ -0,0 +1,186 @@ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjPzReportStat; +import com.nis.domain.restful.DjAttrTypeReport; +import com.nis.domain.restful.DjDestIpCountryReport; +import com.nis.domain.restful.DjEntranceReport; +import com.nis.domain.restful.DjLwhhReport; +import com.nis.domain.restful.DjSrcIpDomeSticReport; +import com.nis.domain.restful.DjTagReport; +import com.nis.domain.restful.DjPzReport; +import com.nis.web.dao.DjReportDao; +import com.nis.web.service.BaseLogService; + +/** + * + * @ClassName: DjReportService + * @Description: TODO(一句话描述这个类) + * @author (ZBC) + * @date 2016年11月22日下午06:00:00 + * @version V1.0 + */ +@Service +public class DjReportService extends BaseLogService { + /** + * 持久层对象 + */ + @Autowired + protected DjReportDao dao; + + /** + * @Title: findDjPzReportPage + * @param page + * @param djPzReport + * @return + */ + public Page findDjPzReportPage(Page page, DjPzReport entity) { + entity.setPage(page); + page.setList(dao.findDjPzReport(entity)); + return page; + } + + public Page findDjPzReportStatPage(Page page, DjPzReportStat entity) + throws SQLException { + entity.setPage(page); + page.setList(dao.findDjPzReportStat(entity)); + return page; + } + public Page findDjPzReportStatMinutesPage(Page page, DjPzReportStat entity) + throws SQLException { + entity.setPage(page); + page.setList(dao.findDjPzReportStatMinutes(entity)); + return page; + } + + public Page findDjPzPrivPage(Page page, DjPzReport entity) throws SQLException { + entity.setPage(page); + List findDjPzPrivPage = dao.findDjPzPrivPage(entity); + if (null != findDjPzPrivPage && findDjPzPrivPage.size() > 0) { + for (DjPzReport djPzReport : findDjPzPrivPage) { + if (null != djPzReport.getAsum() && djPzReport.getAsum() != 0) { + djPzReport.setAbsum(djPzReport.getAsum()); + } else if ((null == djPzReport.getAsum() || djPzReport.getAsum() == 0) + && (null != djPzReport.getBsum() && djPzReport.getBsum() != 0)) { + djPzReport.setAbsum(djPzReport.getBsum()); + } else { + djPzReport.setAbsum(0l); + } + } + } + page.setList(findDjPzPrivPage); + return page; + } + + public Long findDjPzReportSumStat(Page page, DjPzReportStat entity) throws SQLException { + return dao.findDjPzReportSum(entity); + } + + + + + + public Page findAttrTypeReport(Page page, DjAttrTypeReport entity) + throws SQLException { + entity.setPage(page); + List findAttrTypeReport = dao.findAttrTypeReport(entity); + page.setList(findAttrTypeReport); + return page; + } + + + public Page findSrcIpDomeSticReport(Page page, + DjSrcIpDomeSticReport entity) throws SQLException { + entity.setPage(page); + List findSrcIpDomeSticReport = dao.findSrcIpDomeSticReport(entity); + if (null != findSrcIpDomeSticReport && findSrcIpDomeSticReport.size() > 0) { + for (DjSrcIpDomeSticReport djSrcIpDomeSticReport : findSrcIpDomeSticReport) { + if (null != djSrcIpDomeSticReport.getAsum() && djSrcIpDomeSticReport.getAsum() != 0) { + djSrcIpDomeSticReport.setAbsum(djSrcIpDomeSticReport.getAsum()); + } else if ((null == djSrcIpDomeSticReport.getAsum() || djSrcIpDomeSticReport.getAsum() == 0) + && (null != djSrcIpDomeSticReport.getBsum() && djSrcIpDomeSticReport.getBsum() != 0)) { + djSrcIpDomeSticReport.setAbsum(djSrcIpDomeSticReport.getBsum()); + } else { + djSrcIpDomeSticReport.setAbsum(0l); + } + } + } + page.setList(findSrcIpDomeSticReport); + return page; + } + + + public Page findDestIpCountryReport(Page page, + DjDestIpCountryReport entity) throws SQLException { + entity.setPage(page); + List destIpCountryReport = dao.findDestIpCountryReport(entity); + if (null != destIpCountryReport && destIpCountryReport.size() > 0) { + for (DjDestIpCountryReport djDestIpCountryReport : destIpCountryReport) { + if (null != djDestIpCountryReport.getAsum() && djDestIpCountryReport.getAsum() != 0) { + djDestIpCountryReport.setAbsum(djDestIpCountryReport.getAsum()); + } else if ((null == djDestIpCountryReport.getAsum() || djDestIpCountryReport.getAsum() == 0) + && (null != djDestIpCountryReport.getBsum() && djDestIpCountryReport.getBsum() != 0)) { + djDestIpCountryReport.setAbsum(djDestIpCountryReport.getBsum()); + } else { + djDestIpCountryReport.setAbsum(0l); + } + } + } + page.setList(destIpCountryReport); + return page; + } + + public Page findDjEntranceReport(Page page, DjEntranceReport entity) + throws SQLException { + entity.setPage(page); + List findDjEntranceReport = dao.findDjEntranceReport(entity); + if (null != findDjEntranceReport && findDjEntranceReport.size() > 0) { + for (DjEntranceReport djEntranceReport : findDjEntranceReport) { + if (null != djEntranceReport.getAsum() && djEntranceReport.getAsum() != 0) { + djEntranceReport.setAbsum(djEntranceReport.getAsum()); + } else if ((null == djEntranceReport.getAsum() || djEntranceReport.getAsum() == 0) + && (null != djEntranceReport.getBsum() && djEntranceReport.getBsum() != 0)) { + djEntranceReport.setAbsum(djEntranceReport.getBsum()); + } else { + djEntranceReport.setAbsum(0l); + } + } + } + page.setList(findDjEntranceReport); + return page; + } + + public Page findDjLwhhReport(Page page, DjLwhhReport entity) throws SQLException { + entity.setPage(page); + List findDjLwhhReport = dao.findDjLwhhReport(entity); + if (null != findDjLwhhReport && findDjLwhhReport.size() > 0) { + for (DjLwhhReport djLwhhReport : findDjLwhhReport) { + if (null != djLwhhReport.getAsum() && djLwhhReport.getAsum() != 0) { + djLwhhReport.setAbsum(djLwhhReport.getAsum()); + } else if ((null == djLwhhReport.getAsum() || djLwhhReport.getAsum() == 0) + && (null != djLwhhReport.getBsum() && djLwhhReport.getBsum() != 0)) { + djLwhhReport.setAbsum(djLwhhReport.getBsum()); + } else { + djLwhhReport.setAbsum(0l); + } + } + } + page.setList(findDjLwhhReport); + return page; + } + + public Page findDjTagReportPage(Page page, DjTagReport entity) throws SQLException { + entity.setPage(page); + + List findDjTagReportPage = dao.findDjTagReportPage(entity); + page.setList(findDjTagReportPage); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DjStatLogService.java b/src/main/java/com/nis/web/service/restful/DjStatLogService.java new file mode 100644 index 0000000..0c2eab7 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DjStatLogService.java @@ -0,0 +1,203 @@ +/** +* @Title: DjStatLogService.java +* @Package com.nis.web.service.restful +* @Description: TODO(用一句话描述该文件做什么) +* @author (ddm) +* @date 2016年9月13日 上午11:50:12 +* @version V1.0 +*/ +package com.nis.web.service.restful; + +import java.sql.SQLException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DjAttrStatLogDaily; +import com.nis.domain.restful.DjAttrStatLogMonth; +import com.nis.domain.restful.DjDestIpCounrtyStatLogDaily; +import com.nis.domain.restful.DjDestIpCounrtyStatLogMonth; +import com.nis.domain.restful.DjEntrStatLogDaily; +import com.nis.domain.restful.DjEntrStatLogMonth; +import com.nis.domain.restful.DjLwhhStatLogDaily; +import com.nis.domain.restful.DjLwhhStatLogMonth; +import com.nis.domain.restful.DjSrcIpDomesticStatLogDaily; +import com.nis.domain.restful.DjSrcIpDomesticStatLogMonth; +import com.nis.domain.restful.DjStatLogDaily; +import com.nis.domain.restful.DjStatLogMonth; +import com.nis.domain.restful.DjTagStatLogDaily; +import com.nis.domain.restful.DjTagStatLogMonth; +import com.nis.web.dao.DjStatLogDao; +import com.nis.web.service.BaseLogService; + +/** +* @ClassName: DjStatLogService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (ddm) +* @date 2016年9月13日 上午11:50:12 +* @version V1.0 +*/ +@Service +public class DjStatLogService extends BaseLogService{ + /** + * 持久层对象 + */ + @Autowired + protected DjStatLogDao dao; + + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djStatLogDaily(Page page, DjStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djStatLogDaily(entity)); + return page; + } + /** + * 查询端口封堵分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djStatLogMonth(Page page, DjStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djStatLogMonth(entity)); + return page; + } + /** + * 查询标签日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djTagStatLogDaily(Page page, DjTagStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djTagStatLogDaily(entity)); + return page; + } + /** + * 查询标签月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djTagStatLogMonth(Page page, DjTagStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djTagStatLogMonth(entity)); + return page; + } + /** + * 查询性质日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djAttrStatLogDaily(Page page, DjAttrStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djAttrStatLogDaily(entity)); + return page; + } + /** + * 查询性质月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djAttrStatLogMonth(Page page, DjAttrStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djAttrStatLogMonth(entity)); + return page; + } + /** + * 查询局点日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djEntrStatLogDaily(Page page, DjEntrStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djEntrStatLogDaily(entity)); + return page; + } + /** + * 查询局点月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djEntrStatLogMonth(Page page, DjEntrStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djEntrStatLogMonth(entity)); + return page; + } + /** + * 查询来文函号日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djLwhhStatLogDaily(Page page, DjLwhhStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhStatLogDaily(entity)); + return page; + } + /** + * 查询来文函号月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djLwhhStatLogMonth(Page page, DjLwhhStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djLwhhStatLogMonth(entity)); + return page; + } + /** + * 查询境内源ip日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djSrcIpDomesticStatLogDaily(Page page, DjSrcIpDomesticStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpDomesticStatLogDaily(entity)); + return page; + } + /** + * 查询境内源ip月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djSrcIpDomesticStatLogMonth(Page page, DjSrcIpDomesticStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djSrcIpDomesticStatLogMonth(entity)); + return page; + } + /** + * 查询国家目的ip日报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djDestIpCounrtyStatLogDaily(Page page, DjDestIpCounrtyStatLogDaily entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djDestIpCounrtyStatLogDaily(entity)); + return page; + } + /** + * 查询国家目的ip月报表 + * @param page 分页对象 + * @param entity + * @return + */ + public Page djDestIpCounrtyStatLogMonth(Page page, DjDestIpCounrtyStatLogMonth entity) throws SQLException{ + entity.setPage(page); + page.setList(dao.djDestIpCounrtyStatLogMonth(entity)); + return page; + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DmbCkService.java b/src/main/java/com/nis/web/service/restful/DmbCkService.java new file mode 100644 index 0000000..a9f1b2c --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DmbCkService.java @@ -0,0 +1,53 @@ +/** + *@Title: DmbCkService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DmbCk; +import com.nis.web.dao.DmbCkDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DmbCkService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DmbCkService extends CrudService { + @Autowired + public DmbCkDao dmbCkDao; + public Page getDmbCk(Page page, DmbCk entity) { + return findPage(page, entity); + } + + public DmbCk findById(long id) { + return get(id); + } + public void saveDmbCkBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,DmbCkDao.class); + } + public void updateDmbCkBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, DmbCkDao.class); + } + public void removeDmbCk(long id) { + dmbCkDao.delete(id); + } + public void removeDmbCkBatch(List entity) { + super.deleteBatch(entity, DmbCkDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/DmbPortService.java b/src/main/java/com/nis/web/service/restful/DmbPortService.java new file mode 100644 index 0000000..96cc952 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DmbPortService.java @@ -0,0 +1,53 @@ +/** + *@Title: DmbPortService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DmbPort; +import com.nis.web.dao.DmbPortDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DmbPortService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DmbPortService extends CrudService { + @Autowired + public DmbPortDao dmbPortDao; + public Page getDmbPort(Page page, DmbPort entity) { + return findPage(page, entity); + } + + public DmbPort findById(long id) { + return get(id); + } + public void saveDmbPortBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,DmbPortDao.class); + } + public void updateDmbPortBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, DmbPortDao.class); + } + public void removeDmbPort(long id) { + dmbPortDao.delete(id); + } + public void removeDmbPortBatch(List entity) { + super.deleteBatch(entity, DmbPortDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/DnsFakeInfoService.java b/src/main/java/com/nis/web/service/restful/DnsFakeInfoService.java new file mode 100644 index 0000000..f9b6d8c --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DnsFakeInfoService.java @@ -0,0 +1,99 @@ +/** + *@Title: DnsFakeInfoService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DnsFakeInfo; +import com.nis.util.Constants; +import com.nis.web.dao.DnsFakeInfoDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DnsFakeInfoService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DnsFakeInfoService extends CrudService { + @Autowired + public DnsFakeInfoDao dnsFakeInfoDao; + public Page getDnsFakeInfo(Page page, DnsFakeInfo entity) { + return findPage(page, entity); + } + + public DnsFakeInfo findById(long id) { + return get(id); + } + public void saveDnsFakeInfoBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,DnsFakeInfoDao.class); + } + public void updateDnsFakeInfoBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, DnsFakeInfoDao.class); + } + public void removeDnsFakeInfo(long id) { + dnsFakeInfoDao.delete(id); + } + public void removeDnsFakeInfoBatch(List entity) { + super.deleteBatch(entity, DnsFakeInfoDao.class); + } + /** + * + * isValid(单条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param id + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(long id){ + return dnsFakeInfoDao.isValid(id)==Integer.parseInt(Constants.YES); + } + /** + * + * isValid(多条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param entity + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(List entity){ + boolean vaild=false; + List idsList=new ArrayList(); + for(DnsFakeInfo DnsFakeInfo : entity){ + idsList.add(DnsFakeInfo.getId()); + if(idsList.size()%1000==0&&idsList.size()!=0){ + int count=dnsFakeInfoDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0){ + vaild=true; + break; + } + } + } + if(idsList.size()>0){ + int count=dnsFakeInfoDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0)vaild=true; + } + return vaild; + } +} diff --git a/src/main/java/com/nis/web/service/restful/DnsFakeIpService.java b/src/main/java/com/nis/web/service/restful/DnsFakeIpService.java new file mode 100644 index 0000000..216b155 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DnsFakeIpService.java @@ -0,0 +1,163 @@ +/** + *@Title: DnsFakeIpService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DnsFakeIp; +import com.nis.domain.restful.FakeIpConfigCompile; +import com.nis.domain.restful.FakeIpConfigGroup; +import com.nis.util.Constants; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.DnsFakeIpDao; +import com.nis.web.dao.FakeIpConfigCompileDao; +import com.nis.web.dao.FakeIpConfigGroupDao; +import com.nis.web.service.CrudService; +import com.nis.web.service.SpringContextHolder; + +/** + * @ClassName: DnsFakeIpService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DnsFakeIpService extends CrudService { + @Autowired + public DnsFakeIpDao dnsFakeIpDao; + @Autowired + public FakeIpConfigCompileDao fakeIpConfigCompileDao; + @Autowired + public FakeIpConfigGroupDao fakeIpConfigGroupDao; + public Page getDnsFakeIp(Page page, DnsFakeIp entity) { + return findPage(page, entity); + } + + public DnsFakeIp findById(long id) { + return get(id); + } + public void saveDnsFakeIpBatch(List entity) { + // TODO Auto-generated method stub + this.saveBatch(entity,DnsFakeIpDao.class); + } + public void updateDnsFakeIpBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, DnsFakeIpDao.class); + } + public void removeDnsFakeIp(long id) { + dnsFakeIpDao.delete(id); + } + public void removeDnsFakeIpBatch(List entity) { + super.deleteBatch(entity, DnsFakeIpDao.class); + } + /** + * + * isValid(单条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param id + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(long id){ + return dnsFakeIpDao.isValid(id)==Integer.parseInt(Constants.YES); + } + /** + * + * isValid(多条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param entity + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(List entity){ + boolean vaild=false; + List idsList=new ArrayList(); + for(DnsFakeIp DnsFakeIp : entity){ + idsList.add(DnsFakeIp.getId()); + if(idsList.size()%1000==0&&idsList.size()!=0){ + int count=dnsFakeIpDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0){ + vaild=true; + break; + } + } + } + if(idsList.size()>0){ + int count=dnsFakeIpDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0)vaild=true; + } + return vaild; + } + + /* (non-Javadoc) + * @see com.nis.web.service.CrudService#saveBatch(java.util.List, java.lang.Class) + */ + @SuppressWarnings("unchecked") + @Override + public void saveBatch(List data, @SuppressWarnings("rawtypes") Class mClass) { + Date now=new Date(); + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < data.size();index++){ + DnsFakeIp t = data.get(index); + ((DnsFakeIpDao) batchSqlSession.getMapper(mClass)).insert(t); + if(t.getGroupId()==0||t.getGroupId()==1){ + //先生成编译,获得编译号 + FakeIpConfigCompile fakeIpConfigCompile=new FakeIpConfigCompile(); + long compileId=fakeIpConfigCompileDao.getCompileId(); + fakeIpConfigCompile.setLastUpdate(now); + System.out.println(compileId); + fakeIpConfigCompile.setCompileId(compileId); + if(t.getGroupId()==0){ + fakeIpConfigCompile.setAction(2); + }else if(t.getGroupId()==1) + fakeIpConfigCompile.setAction(1); + fakeIpConfigCompile.setOpTime(t.getOpTime()); + fakeIpConfigCompile.setActiveSys(3); + ((FakeIpConfigCompileDao) batchSqlSession.getMapper(FakeIpConfigCompileDao.class)).insert(fakeIpConfigCompile); + //生成分组 + FakeIpConfigGroup fakeIpConfigGroup=new FakeIpConfigGroup(); + fakeIpConfigGroup.setLastUpdate(now); + fakeIpConfigGroup.setGroupId(t.getGroupId()); + fakeIpConfigGroup.setCompileId(compileId); + fakeIpConfigGroup.setOpTime(t.getOpTime()); + ((FakeIpConfigGroupDao) batchSqlSession.getMapper(FakeIpConfigGroupDao.class)).insert(fakeIpConfigGroup); + } + + } + batchSqlSession.commit(); + // }catch (Exception e){ + // batchSqlSession.rollback(); + // throw e; + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + } + +} diff --git a/src/main/java/com/nis/web/service/restful/DnsGroupTypeService.java b/src/main/java/com/nis/web/service/restful/DnsGroupTypeService.java new file mode 100644 index 0000000..52a9bb3 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DnsGroupTypeService.java @@ -0,0 +1,152 @@ +/** + *@Title: DnsGroupTypeService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author dell + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DnsGroupType; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.Constants; +import com.nis.web.dao.DnsGroupTypeDao; +import com.nis.web.service.CrudService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: DnsGroupTypeService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class DnsGroupTypeService extends CrudService { + @Autowired + public DnsGroupTypeDao dnsGroupTypeDao; + public Page getDnsGroupType(Page page, DnsGroupType entity) { + return findPage(page, entity); + } + + public DnsGroupType findById(long id) { + return get(id); + } + public void saveDnsGroupTypeBatch(SaveRequestLogThread thread,long start,List entity) { + // TODO Auto-generated method stub + List idsList=new ArrayList<>(); + for(DnsGroupType e:entity){ + if(e.getGroupId()!=null) + idsList.add(e.getGroupId()); + } + if(idsList.size()>0){ + boolean unique=this.groupIdValidation(idsList); + if(!unique) + throw new RestServiceException(thread, System.currentTimeMillis(), "分组号不唯一", RestBusinessCode.not_unique.getValue()); + } + super.saveBatch(entity,DnsGroupTypeDao.class); + } + public void updateDnsGroupTypeBatch(SaveRequestLogThread thread,long start,List entity) { + // TODO Auto-generated method stub +// List idsList=new ArrayList<>(); +// for(DnsGroupType e:entity){ +// if(e.getGroupId()!=null) +// idsList.add(e.getGroupId()); +// } +// if(idsList.size()>0){ +// boolean unique=this.groupIdValidation(idsList); +// if(!unique) +// throw new RestServiceException(thread, System.currentTimeMillis(), "分组号不唯一", RestBusinessCode.not_unique.getValue()); +// +// } + super.updateBatch(entity, DnsGroupTypeDao.class); + } + public void removeDnsGroupType(long id) { + dnsGroupTypeDao.delete(id); + } + public void removeDnsGroupTypeBatch(List entity) { + super.deleteBatch(entity, DnsGroupTypeDao.class); + } + /** + * + * isValid(单条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param id + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(long id){ + return dnsGroupTypeDao.isValid(id)==Integer.parseInt(Constants.YES); + } + /** + * + * isValid(多条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param entity + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(List entity){ + boolean vaild=false; + List idsList=new ArrayList(); + for(DnsGroupType dnsGroupType : entity){ + idsList.add(dnsGroupType.getId()); + if(idsList.size()%1000==0&&idsList.size()!=0){ + int count=dnsGroupTypeDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0){ + vaild=true; + break; + } + } + } + if(idsList.size()>0){ + int count=dnsGroupTypeDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0)vaild=true; + } + return vaild; + } + /** + * 验证字段唯一性 + * reqStrateIdValidation(这里用一句话描述这个方法的作用) + * (这里描述这个方法适用条件 – 可选) + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean groupIdValidation(List idsList){ + int count=0; + if(idsList.size()>=1000){ + int i=0; + for(;i subList=idsList.subList(i*1000,(i+1)*1000); + count=dnsGroupTypeDao.isGroupIdUnique(subList); + if(count>0){ + return false; + } + } + if(idsList.size()>(i*1000)){ + List subList=idsList.subList(i*1000,idsList.size()); + count=dnsGroupTypeDao.isGroupIdUnique(subList); + } + }else{ + count=dnsGroupTypeDao.isGroupIdUnique(idsList); + } + return count==0; + } +} diff --git a/src/main/java/com/nis/web/service/restful/DnsResponseStrategyService.java b/src/main/java/com/nis/web/service/restful/DnsResponseStrategyService.java new file mode 100644 index 0000000..ca81be5 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/DnsResponseStrategyService.java @@ -0,0 +1,219 @@ +/** + *@Title: DnsResponseStrategy.java + *@Package com.nis.web.controller.restful + *@Description TODO + *@author dell + *@date 2016年9月5日 下午3:37:54 + *@version 1.0 + */ +package com.nis.web.service.restful; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DnsResponseStrategy; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.Constants; +import com.nis.web.dao.DnsResponseStrategyDao; +import com.nis.web.service.CrudService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: DnsResponseStrategy.java + * @Description: TODO + * @author (dell) + * @date 2016年9月5日 下午3:37:54 + * @version V1.0 + */ +@Service +public class DnsResponseStrategyService extends CrudService { + @Autowired + public DnsResponseStrategyDao dnsResponseStrategyDao; + public Page getDnsResponseStrategy(Page page, DnsResponseStrategy dnsResponseStrategy) { + return findPage(page, dnsResponseStrategy); + } + + public DnsResponseStrategy findById(long id) { + return get(id); + } + /** + * + * saveDnsResponseStrategyBatch(多条插入) + * (这里描述这个方法适用条件 – 可选) + * @param entity + *void + * @exception + * @since 1.0.0 + */ + public void saveDnsResponseStrategyBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,DnsResponseStrategyDao.class); + } + /** + * + * saveDnsResponseStrategyBatch(多条插入) + * (这里描述这个方法适用条件 – 可选) + * @param entity + *void + * @exception + * @since 1.0.0 + */ + public void saveDnsResponseStrategyBatch(SaveRequestLogThread thread,long start,List entity) { + // TODO Auto-generated method stub + List idsList=new ArrayList<>(); + for(DnsResponseStrategy e:entity){ + if(e.getReqStrateId()!=null) + idsList.add(e.getReqStrateId()); + } + if(idsList.size()>0){ + boolean uinque=this.reqStrateIdValidation(idsList); + if(!uinque){ + throw new RestServiceException(thread, System.currentTimeMillis(), "请求策略号不唯一", RestBusinessCode.not_unique.getValue()); + } + } + + super.saveBatch(entity,DnsResponseStrategyDao.class); + } + /** + * + * updateDnsResponseStrategyBatch(多条更新) + * (这里描述这个方法适用条件 – 可选) + * @param entity + *void + * @exception + * @since 1.0.0 + */ + public void updateDnsResponseStrategyBatch(List entity) { + // TODO Auto-generated method stub + + super.updateBatch(entity, DnsResponseStrategyDao.class); + } + /** + * + * updateDnsResponseStrategyBatch(多条更新) + * (这里描述这个方法适用条件 – 可选) + * @param entity + *void + * @exception + * @since 1.0.0 + */ + public void updateDnsResponseStrategyBatch(SaveRequestLogThread thread,long start,List entity) { +// List idsList=new ArrayList<>(); +// for(DnsResponseStrategy e:entity){ +// if(e.getReqStrateId()!=null) +// idsList.add(e.getReqStrateId()); +// } +// if(idsList.size()>0){ +// boolean uinque=this.reqStrateIdValidation(idsList); +// if(!uinque){ +// throw new RestServiceException(thread, System.currentTimeMillis(), "请求策略号不唯一", RestBusinessCode.not_unique.getValue()); +// } +// } + + // TODO Auto-generated method stub + super.updateBatch(entity, DnsResponseStrategyDao.class); + } + /** + * + * removeDnsResponseStrategy(单条删除) + * (这里描述这个方法适用条件 – 可选) + * @param id + *void + * @exception + * @since 1.0.0 + */ + public void removeDnsResponseStrategy(long id) { + dnsResponseStrategyDao.delete(id); + } + /** + * + * removeDnsResponseStrategyBatch(多条删除) + * (这里描述这个方法适用条件 – 可选) + * @param entity + *void + * @exception + * @since 1.0.0 + */ + public void removeDnsResponseStrategyBatch(List entity) { + super.deleteBatch(entity, DnsResponseStrategyDao.class); + } + /** + * + * isValid(单条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param id + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(long id){ + return dnsResponseStrategyDao.isValid(id)==Integer.parseInt(Constants.YES); + } + /** + * + * isValid(多条有效验证) + * (这里描述这个方法适用条件 – 可选) + * @param entity + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean isValid(List entity){ + boolean vaild=false; + List idsList=new ArrayList(); + for(DnsResponseStrategy dnsResponseStrategy : entity){ + idsList.add(dnsResponseStrategy.getId()); + if(idsList.size()%1000==0&&idsList.size()!=0){ + int count=dnsResponseStrategyDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0){ + vaild=true; + break; + } + } + } + if(idsList.size()>0){ + int count=dnsResponseStrategyDao.isValidBatch(idsList,Integer.parseInt(Constants.YES)); + idsList.clear(); + if(count>0)vaild=true; + } + return vaild; + } + /** + * 验证字段唯一性 + * reqStrateIdValidation(这里用一句话描述这个方法的作用) + * (这里描述这个方法适用条件 – 可选) + * @return + *boolean + * @exception + * @since 1.0.0 + */ + public boolean reqStrateIdValidation(List idsList){ + int count=0; + if(idsList.size()>=1000){ + int i=0; + for(;i subList=idsList.subList(i*1000,(i+1)*1000); + count=dnsResponseStrategyDao.isReqStrateIdUnique(subList); + if(count>0){ + return false; + } + } + if(idsList.size()>(i*1000)){ + List subList=idsList.subList(i*1000,idsList.size()); + count=dnsResponseStrategyDao.isReqStrateIdUnique(subList); + } + }else{ + count=dnsResponseStrategyDao.isReqStrateIdUnique(idsList); + } + return count==0; + } +} diff --git a/src/main/java/com/nis/web/service/restful/EncryptProtoRandomService.java b/src/main/java/com/nis/web/service/restful/EncryptProtoRandomService.java new file mode 100644 index 0000000..61501f9 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/EncryptProtoRandomService.java @@ -0,0 +1,53 @@ +/** + *@Title: EncryptProtoRandomService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.EncryptProtoRandom; +import com.nis.web.dao.EncryptProtoRandomDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: EncryptProtoRandomService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class EncryptProtoRandomService extends CrudService { + @Autowired + public EncryptProtoRandomDao encryptProtoRandomDao; + public Page getEncryptProtoRandom(Page page, EncryptProtoRandom entity) { + return findPage(page, entity); + } + + public EncryptProtoRandom findById(long id) { + return get(id); + } + public void saveEncryptProtoRandomBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,EncryptProtoRandomDao.class); + } + public void updateEncryptProtoRandomBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, EncryptProtoRandomDao.class); + } + public void removeEncryptProtoRandom(Long id) { + encryptProtoRandomDao.delete(id); + } + public void removeEncryptProtoRandomBatch(List entity) { + super.deleteBatch(entity, EncryptProtoRandomDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/FakeIpConfigCompileService.java b/src/main/java/com/nis/web/service/restful/FakeIpConfigCompileService.java new file mode 100644 index 0000000..2d35403 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/FakeIpConfigCompileService.java @@ -0,0 +1,30 @@ +/** + *@Title: DnsFakeIpService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.FakeIpConfigCompile; +import com.nis.web.dao.FakeIpConfigCompileDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DnsFakeIpService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class FakeIpConfigCompileService extends CrudService { + @Autowired + public FakeIpConfigCompileDao fakeIpConfigCompileDao; + +} diff --git a/src/main/java/com/nis/web/service/restful/FakeIpConfigGroupService.java b/src/main/java/com/nis/web/service/restful/FakeIpConfigGroupService.java new file mode 100644 index 0000000..00f1c14 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/FakeIpConfigGroupService.java @@ -0,0 +1,30 @@ +/** + *@Title: DnsFakeIpService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.FakeIpConfigGroup; +import com.nis.web.dao.FakeIpConfigGroupDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DnsFakeIpService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class FakeIpConfigGroupService extends CrudService { + @Autowired + public FakeIpConfigGroupDao fakeIpConfigGroupDao; + +} diff --git a/src/main/java/com/nis/web/service/restful/FwqInfoService.java b/src/main/java/com/nis/web/service/restful/FwqInfoService.java new file mode 100644 index 0000000..6209eba --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/FwqInfoService.java @@ -0,0 +1,53 @@ +/** + *@Title: FwqInfoService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.FwqInfo; +import com.nis.web.dao.FwqInfoDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: FwqInfoService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class FwqInfoService extends CrudService { + @Autowired + public FwqInfoDao fwqInfoDao; + public Page getFwqInfo(Page page, FwqInfo entity) { + return findPage(page, entity); + } + + public FwqInfo findById(long id) { + return get(id); + } + public void saveFwqInfoBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,FwqInfoDao.class); + } + public void updateFwqInfoBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, FwqInfoDao.class); + } + public void removeFwqInfo(long id) { + fwqInfoDao.delete(id); + } + public void removeFwqInfoBatch(List entity) { + super.deleteBatch(entity, FwqInfoDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/IntervalTimeSearchService.java b/src/main/java/com/nis/web/service/restful/IntervalTimeSearchService.java new file mode 100644 index 0000000..a6defd0 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/IntervalTimeSearchService.java @@ -0,0 +1,110 @@ +package com.nis.web.service.restful; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.DfKeyConvertUrl; +import com.nis.domain.restful.DjFlowControlStop; +import com.nis.restful.RestBusinessCode; +import com.nis.restful.RestServiceException; +import com.nis.util.StringUtil; +import com.nis.web.dao.IntervalTimeSearchDao; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.SaveRequestLogThread; + +/** +* @ClassName: IntervalTimeSearchService +* @Description: TODO(这里用一句话描述这个类的作用) +* @author (zbc) +* @date 2016年9月8日下午8:11:58 +* @version V1.0 +*/ +@Service +public class IntervalTimeSearchService extends BaseLogService { + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + protected final Logger logger = Logger.getLogger(this.getClass()); + /** + * 持久层对象 + */ + @Autowired + protected IntervalTimeSearchDao dao; + + /** + * 查询分页数据 + * @param page 分页对象 + * @param entity + * @return + */ + public Page findFlowControlStopPage(Page page, + DjFlowControlStop entity) { + entity.setPage(page); + page.setList(dao.findFlowControlStopPage(entity)); + return page; + } + /** + * 流控日志查询条件检查 + * wx + * @param entity + */ + public void queryConditionCheck(SaveRequestLogThread thread,long start,DjFlowControlStop entity,Page page) { + /*try { + if (!StringUtil.isBlank(entity.getSearchCfgId())) { + Long.parseLong(entity.getSearchCfgId()); + } + } catch (NumberFormatException e) { + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数错误"); + }*/ + + try { + if (!StringUtil.isBlank(entity.getOptStartTime())) { + sdf.parse(entity.getOptStartTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optStartTime参数格式错误"); + } + + try { + if (!StringUtil.isBlank(entity.getOptEndTime())) { + sdf.parse(entity.getOptEndTime()); + } + } catch (ParseException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread,System.currentTimeMillis()-start,"optEndTime参数错误"); + } + + try { + checkCloumnIsExist(thread,start,DjFlowControlStop.class, page); + } catch (RestServiceException e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw e; + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); + } + + } + +} diff --git a/src/main/java/com/nis/web/service/restful/JDBCTest.java b/src/main/java/com/nis/web/service/restful/JDBCTest.java new file mode 100644 index 0000000..d851dc5 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/JDBCTest.java @@ -0,0 +1,221 @@ +package com.nis.web.service.restful; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.List; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class JDBCTest { + public static java.sql.Timestamp utileDate2TimeStamp(java.util.Date udate) { + java.sql.Timestamp sqlDate = null; + long t = udate.getTime(); + sqlDate = new java.sql.Timestamp(t); + return sqlDate; + + } + + public static void saveCompile(List compileList, Connection conn, int batchSize) throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (ConfigCompile compile : compileList) { + count++; + Object[] obj = new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), + compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), + compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), compile.getDoBlackList(), + compile.getDoLog(), compile.getEffectiveRange(), compile.getActiveSys(), compile.getConfigPercent(), + compile.getConfigOption(), compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), + compile.getIsValid(), compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }; + + for (int x = 0; x < obj.length; x++) { + if (x == 16) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getStartTime())); + } else if (x == 17) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getEndTime())); + } else if (x == 22) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + ////conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } + + public static void saveGroup(List groupList, Connection conn, int batchSize) throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (ConfigGroupRelation group : groupList) { + count++; + Object[] obj = new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), + group.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 3) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(group.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + //conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } + + public static void saveIPRegion(String name, List ipRegionList, Connection conn, int batchSize) + throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (IpRegion ipRegion : ipRegionList) { + count++; + Object[] obj = new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), + ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), ipRegion.getMaskSrcPort(), + ipRegion.getDstIp(), ipRegion.getMaskDstIp(), ipRegion.getDstPort(), ipRegion.getMaskDstPort(), + ipRegion.getProtocol(), ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() + + }; + for (int x = 0; x < obj.length; x++) { + if (x == 14) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(ipRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + //conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } + + public static void saveNumRegion(String name, List numRegionList, Connection conn, int batchSize) + throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (NumRegion numRegion : numRegionList) { + count++; + Object[] obj = new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), numRegion.getLowBoundary(), + numRegion.getUpBoundary(), numRegion.getIsValid(), numRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 5) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(numRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + //conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } + + public static void saveStrongStrRegion(String name, List strRegionList, Connection conn, int batchSize) + throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (StrRegion strRegion : strRegionList) { + count++; + Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getDistrict(), + strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), + strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 8) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + //conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } + + public static void saveStrRegion(String name, List strRegionList, Connection conn, int batchSize) + throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (StrRegion strRegion : strRegionList) { + count++; + Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getKeywords(), + strRegion.getExprType(), strRegion.getMatchMethod(), strRegion.getIsHexbin(), + strRegion.getIsValid(), strRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 7) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + if (count % batchSize == 0) { + ps.executeBatch(); + //conn.commit(); + } + } + ps.executeBatch(); + //conn.commit(); + } +} diff --git a/src/main/java/com/nis/web/service/restful/JDBCThreadTest.java b/src/main/java/com/nis/web/service/restful/JDBCThreadTest.java new file mode 100644 index 0000000..c5e26ea --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/JDBCThreadTest.java @@ -0,0 +1,472 @@ +package com.nis.web.service.restful; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; +import com.nis.web.service.SaveRequestLogThread; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class JDBCThreadTest implements Runnable { + + private static SaveRequestLogThread thread; + private static Long start; + private CountDownLatch latch; + private Boolean isStrongStr; + private String tableName; + private int batchSize; + private Connection conn; + private List compileList; + private List groupList; + private List ipRegionList; + private List numRegionList; + private List strRegionList; + + public JDBCThreadTest() { + super(); + } + + public JDBCThreadTest(int batchSize, Connection conn, CountDownLatch latch, SaveRequestLogThread thread, + Long start) { + super(); + this.batchSize = batchSize; + this.conn = conn; + this.latch = latch; + } + + public JDBCThreadTest(String tableName, int batchSize, Connection conn, CountDownLatch latch, + SaveRequestLogThread thread, Long start) { + super(); + this.tableName = tableName; + this.batchSize = batchSize; + this.conn = conn; + this.latch = latch; + } + + public JDBCThreadTest(boolean isStrongStr, String tableName, int batchSize, Connection conn, CountDownLatch latch, + SaveRequestLogThread thread, Long start) { + super(); + this.isStrongStr = isStrongStr; + this.tableName = tableName; + this.batchSize = batchSize; + this.conn = conn; + this.latch = latch; + } + + public SaveRequestLogThread getThread() { + return thread; + } + + public void setThread(SaveRequestLogThread thread) { + this.thread = thread; + } + + public Long getStart() { + return start; + } + + public void setStart(Long start) { + this.start = start; + } + + public int getBatchSize() { + return batchSize; + } + + public void setBatchSize(int batchSize) { + this.batchSize = batchSize; + } + + public CountDownLatch getLatch() { + return latch; + } + + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + public Boolean getIsStrongStr() { + return isStrongStr; + } + + public void setIsStrongStr(Boolean isStrongStr) { + this.isStrongStr = isStrongStr; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public Connection getConn() { + return conn; + } + + public void setConn(Connection conn) { + this.conn = conn; + } + + public List getCompileList() { + return compileList; + } + + public void setCompileList(List compileList) { + this.compileList = compileList; + } + + public List getGroupList() { + return groupList; + } + + public void setGroupList(List groupList) { + this.groupList = groupList; + } + + public List getIpRegionList() { + return ipRegionList; + } + + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + public List getNumRegionList() { + return numRegionList; + } + + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public List getStrRegionList() { + return strRegionList; + } + + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + public static java.sql.Timestamp utileDate2TimeStamp(java.util.Date udate) { + java.sql.Timestamp sqlDate = null; + long t = udate.getTime(); + sqlDate = new java.sql.Timestamp(t); + return sqlDate; + + } + + public static void saveCompile(List compileList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (ConfigCompile compile : compileList) { + count++; + Object[] obj = new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), + compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), + compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), + compile.getDoBlackList(), compile.getDoLog(), compile.getEffectiveRange(), + compile.getActiveSys(), compile.getConfigPercent(), compile.getConfigOption(), + compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), compile.getIsValid(), + compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }; + + for (int x = 0; x < obj.length; x++) { + if (x == 16) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getStartTime())); + } else if (x == 17) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getEndTime())); + } else if (x == 22) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + public static void saveGroup(List groupList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (ConfigGroupRelation group : groupList) { + count++; + Object[] obj = new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), + group.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 3) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(group.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + public static void saveIPRegion(String name, List ipRegionList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (IpRegion ipRegion : ipRegionList) { + count++; + Object[] obj = new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), + ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), + ipRegion.getMaskSrcPort(), ipRegion.getDstIp(), ipRegion.getMaskDstIp(), + ipRegion.getDstPort(), ipRegion.getMaskDstPort(), ipRegion.getProtocol(), + ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() + + }; + for (int x = 0; x < obj.length; x++) { + if (x == 14) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(ipRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + public static void saveNumRegion(String name, List numRegionList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + int count = 0; + for (NumRegion numRegion : numRegionList) { + count++; + Object[] obj = new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), + numRegion.getLowBoundary(), numRegion.getUpBoundary(), numRegion.getIsValid(), + numRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 5) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(numRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + public static void saveStrongStrRegion(String name, List strRegionList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + + int count = 0; + for (StrRegion strRegion : strRegionList) { + count++; + Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), + strRegion.getDistrict(), strRegion.getKeywords(), strRegion.getExprType(), + strRegion.getMatchMethod(), strRegion.getIsHexbin(), strRegion.getIsValid(), + strRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 8) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + public static void saveStrRegion(String name, List strRegionList, Connection conn, int batchSize) { + if (null != conn) { + try { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sb.toString()); + + int count = 0; + for (StrRegion strRegion : strRegionList) { + count++; + Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), + strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), + strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }; + for (int x = 0; x < obj.length; x++) { + if (x == 7) { + ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); + } else { + ps.setObject(x + 1, obj[x]); + } + } + ps.addBatch(); + // if (count % batchSize == 0) { + // ps.executeBatch(); + // ps.clearBatch(); + // } + } + ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + try { + conn.close(); + conn = null; + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + } + // ps.close(); + // conn.commit(); + } + + @Override + public void run() { + synchronized (conn) { + try { + if (null != compileList && compileList.size() > 0) { + saveCompile(compileList, conn, batchSize); + } else if (null != groupList && groupList.size() > 0) { + saveGroup(groupList, conn, batchSize); + } else if (null != ipRegionList && ipRegionList.size() > 0) { + saveIPRegion(tableName, ipRegionList, conn, batchSize); + } else if (null != strRegionList && strRegionList.size() > 0) { + if (null != isStrongStr && isStrongStr) { + saveStrongStrRegion(tableName, strRegionList, conn, batchSize); + } else { + saveStrRegion(tableName, strRegionList, conn, batchSize); + } + }else if (null != numRegionList && numRegionList.size() > 0) { + saveNumRegion(tableName, numRegionList, conn, batchSize); + } + latch.countDown(); + System.out.println("latchCount=======================" + latch.getCount()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/com/nis/web/service/restful/JdjInfoService.java b/src/main/java/com/nis/web/service/restful/JdjInfoService.java new file mode 100644 index 0000000..74fe88a --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/JdjInfoService.java @@ -0,0 +1,53 @@ +/** + *@Title: JdjInfoService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.JdjInfo; +import com.nis.web.dao.JdjInfoDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: JdjInfoService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class JdjInfoService extends CrudService { + @Autowired + public JdjInfoDao jdjInfoDao; + public Page getJdjInfo(Page page, JdjInfo entity) { + return findPage(page, entity); + } + + public JdjInfo findById(long id) { + return get(id); + } + public void saveJdjInfoBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,JdjInfoDao.class); + } + public void updateJdjInfoBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, JdjInfoDao.class); + } + public void removeJdjInfo(long id) { + jdjInfoDao.delete(id); + } + public void removeJdjInfoBatch(List entity) { + super.deleteBatch(entity, JdjInfoDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/SaveCompileByJDBCThread.java b/src/main/java/com/nis/web/service/restful/SaveCompileByJDBCThread.java new file mode 100644 index 0000000..c510eb4 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/SaveCompileByJDBCThread.java @@ -0,0 +1,637 @@ +package com.nis.web.service.restful; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.Date; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +import org.apache.log4j.Logger; + +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; +import com.nis.util.Configurations; +import com.thoughtworks.xstream.core.util.Fields; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class SaveCompileByJDBCThread implements Runnable { + private static Logger logger = Logger.getLogger(SaveCompileByJDBCThread.class); + private static Long start; + private CountDownLatch latch; + private Boolean isStrongStr; + private String tableName; + private Connection conn; + private List compileList; + private List groupList; + private List ipRegionList; + private List numRegionList; + private List strRegionList; + + + private Method method = null; + public SaveCompileByJDBCThread() { + super(); + } + + public SaveCompileByJDBCThread(Connection conn, CountDownLatch latch, Long start) { + super(); + this.conn = conn; + this.latch = latch; + this.start = start; + } + + public SaveCompileByJDBCThread(String tableName, Connection conn, CountDownLatch latch, Long start) { + super(); + this.tableName = tableName; + this.conn = conn; + this.latch = latch; + this.start = start; + } + + public SaveCompileByJDBCThread(boolean isStrongStr, String tableName, Connection conn, CountDownLatch latch, + Long start) { + super(); + this.isStrongStr = isStrongStr; + this.tableName = tableName; + this.conn = conn; + this.latch = latch; + this.start = start; + } + + public Long getStart() { + return start; + } + + public void setStart(Long start) { + this.start = start; + } + + public CountDownLatch getLatch() { + return latch; + } + + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + public Boolean getIsStrongStr() { + return isStrongStr; + } + + public void setIsStrongStr(Boolean isStrongStr) { + this.isStrongStr = isStrongStr; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public Connection getConn() { + return conn; + } + + public void setConn(Connection conn) { + this.conn = conn; + } + + public List getCompileList() { + return compileList; + } + + public void setCompileList(List compileList) { + this.compileList = compileList; + } + + public List getGroupList() { + return groupList; + } + + public void setGroupList(List groupList) { + this.groupList = groupList; + } + + public List getIpRegionList() { + return ipRegionList; + } + + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + public List getNumRegionList() { + return numRegionList; + } + + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public List getStrRegionList() { + return strRegionList; + } + + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + public static java.sql.Timestamp utileDate2TimeStamp(java.util.Date udate) { + java.sql.Timestamp sqlDate = null; + long t = udate.getTime(); + sqlDate = new java.sql.Timestamp(t); + return sqlDate; + + } + + public static void saveCompile(List compileList, Connection conn, List msgList) { + if (null != compileList && compileList.size() > 0) { + try { + String tabName = Configurations.getStringProperty("compileTabName", "CONFIG_COMPILE"); + String fieldName = Configurations.getStringProperty("compileFieldName", "COMPILE_ID"); + + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(getSqlStr(tabName, fieldName)); + for (ConfigCompile compile : compileList) { + setPsParams(fieldName.split(","),ps,compile); + ps.addBatch(); + } + +//zdx2017-10-25 +// sb.append( +// "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// for (ConfigCompile compile : compileList) { +// Object[] obj = new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), +// compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), +// compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), +// compile.getDoBlackList(), compile.getDoLog(), compile.getEffectiveRange(), +// compile.getActiveSys(), compile.getConfigPercent(), compile.getConfigOption(), +// compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), compile.getIsValid(), +// compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }; +// +// for (int x = 0; x < obj.length; x++) { +// if (x == 16) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getStartTime())); +// } else if (x == 17) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getEndTime())); +// } else if (x == 22) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(compile.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + msgList.add(e); + } + } + } + + public static void saveGroup(List groupList, Connection conn, List msgList) { + + if (null != groupList && groupList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + String tabName = Configurations.getStringProperty("groupTabName", "CONFIG_GROUP"); + String fieldName = Configurations.getStringProperty("groupFieldName", "ID"); + String groupSeqName = Configurations.getStringProperty("groupSeqName", "SEQ_CONFIG_GROUP"); + sb.append("insert into ").append(tabName); + sb.append("(").append(fieldName); + //是否包含更新时间字段 值为数据库当前时间 + if (Configurations.getBooleanProperty("hasLastUpdate", true)) { + sb.append(", LAST_UPDATE"); + } + sb.append(") values ( "); + conn.setAutoCommit(false); + String fieldNameObj [] = fieldName.split(","); + for (int i = 0; i < fieldNameObj.length; i++) { + //第一个字段必须是分组表主键 + if (i==0) { + sb.append(groupSeqName).append(".nextval"); + }else{ + sb.append("?"); + } + if (i+1-1) { +// name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); +// } + + while (name.indexOf("_")>-1) { + name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); + } + } + + Method method = group.getClass().getMethod("get"+name); + obj[i]= method.invoke(group); + } + for (int x = 1; x < obj.length; x++) { + + if (obj[x] instanceof Date) { + ps.setObject(x, utileDate2TimeStamp((Date) obj[x])); + }else { + ps.setObject(x , obj[x]); + } + } + ps.addBatch(); + } + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + e.printStackTrace(); + msgList.add(e); + } + } + + +//zdx2017-10-25 +// if (null != groupList && groupList.size() > 0) { +// try { +// StringBuffer sb = new StringBuffer(); +// sb.append( +// "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// for (ConfigGroupRelation group : groupList) { +// Object[] obj = new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), +// group.getOpTime() }; +// for (int x = 0; x < obj.length; x++) { +// if (x == 3) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(group.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } +// ps.executeBatch(); +// } catch (Exception e) { +// logger.error(e); +// msgList.add(e); +// } +// } + } + + public static void saveIPRegion(String name, List ipRegionList, Connection conn, + List msgList) { + + if (null != ipRegionList && ipRegionList.size() > 0) { + try { + String fieldName = Configurations.getStringProperty("ipRegionFieldName", "REGION_ID"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(getSqlStr(name, fieldName)); + for (IpRegion ipRegion : ipRegionList) { + setPsParams(fieldName.split(","),ps,ipRegion); + ps.addBatch(); + } + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + msgList.add(e); + } + } + + +//zdx2017-10-25 +// if (null != ipRegionList && ipRegionList.size() > 0) { +// try { +// StringBuffer sb = new StringBuffer(); +// sb.append("insert into "); +// sb.append(name); +// sb.append( +// "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// for (IpRegion ipRegion : ipRegionList) { +// Object[] obj = new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), +// ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), +// ipRegion.getMaskSrcPort(), ipRegion.getDstIp(), ipRegion.getMaskDstIp(), +// ipRegion.getDstPort(), ipRegion.getMaskDstPort(), ipRegion.getProtocol(), +// ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() +// +// }; +// for (int x = 0; x < obj.length; x++) { +// if (x == 14) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(ipRegion.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } +// ps.executeBatch(); +// } catch (Exception e) { +// logger.error(e); +// msgList.add(e); +// } +// } + } + + public static void saveNumRegion(String name, List numRegionList, Connection conn, + List msgList) { + if (null != numRegionList && numRegionList.size() > 0) { + try { + String fieldName = Configurations.getStringProperty("numRegionFieldName", "REGION_ID"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(getSqlStr(name, fieldName)); + for (NumRegion numRegion : numRegionList) { + setPsParams(fieldName.split(","),ps,numRegion); + ps.addBatch(); + } + + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + msgList.add(e); + } + } + + +//zdx2017-10-25 +// if (null != numRegionList && numRegionList.size() > 0) { +// try { +// StringBuffer sb = new StringBuffer(); +// sb.append("insert into "); +// sb.append(name); +// sb.append( +// " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// for (NumRegion numRegion : numRegionList) { +// Object[] obj = new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), +// numRegion.getLowBoundary(), numRegion.getUpBoundary(), numRegion.getIsValid(), +// numRegion.getOpTime() }; +// for (int x = 0; x < obj.length; x++) { +// if (x == 5) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(numRegion.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } +// ps.executeBatch(); +// } catch (Exception e) { +// logger.error(e); +// msgList.add(e); +// } +// } + } + + public static void saveStrongStrRegion(String name, List strRegionList, Connection conn, + List msgList) { + + if (null != strRegionList && strRegionList.size() > 0) { + try { + String fieldName = Configurations.getStringProperty("strongStrRegionFieldName", "REGION_ID"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(getSqlStr(name, fieldName)); + for (StrRegion strRegion : strRegionList) { + setPsParams(fieldName.split(","),ps,strRegion); + ps.addBatch(); + } + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + msgList.add(e); + } + } + + + + + + + +//zdx2017-10-25 +// if (null != strRegionList && strRegionList.size() > 0) { +// try { +// StringBuffer sb = new StringBuffer(); +// sb.append("insert into "); +// sb.append(name); +// sb.append( +// "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// +// for (StrRegion strRegion : strRegionList) { +// Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), +// strRegion.getDistrict(), strRegion.getKeywords(), strRegion.getExprType(), +// strRegion.getMatchMethod(), strRegion.getIsHexbin(), strRegion.getIsValid(), +// strRegion.getOpTime() }; +// for (int x = 0; x < obj.length; x++) { +// if (x == 8) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } +// ps.executeBatch(); +// } catch (Exception e) { +// logger.error(e); +// msgList.add(e); +// } +// } + } + + public static void saveStrRegion(String name, List strRegionList, Connection conn, + List msgList) { + + if (null != strRegionList && strRegionList.size() > 0) { + try { + String fieldName = Configurations.getStringProperty("strRegionFieldName", "REGION_ID"); + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(getSqlStr(name, fieldName)); + for (StrRegion strRegion : strRegionList) { + setPsParams(fieldName.split(","),ps,strRegion); + ps.addBatch(); + } + ps.executeBatch(); + } catch (Exception e) { + logger.error(e); + msgList.add(e); + } + } + +// +//zdx2017-10-25 +// if (null != strRegionList && strRegionList.size() > 0) { +// try { +// StringBuffer sb = new StringBuffer(); +// sb.append("insert into "); +// sb.append(name); +// sb.append( +// "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); +// conn.setAutoCommit(false); +// PreparedStatement ps = conn.prepareStatement(sb.toString()); +// +// for (StrRegion strRegion : strRegionList) { +// Object[] obj = new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), +// strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), +// strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }; +// for (int x = 0; x < obj.length; x++) { +// if (x == 7) { +// ps.setTimestamp(x + 1, utileDate2TimeStamp(strRegion.getOpTime())); +// } else { +// ps.setObject(x + 1, obj[x]); +// } +// } +// ps.addBatch(); +// } +// ps.executeBatch(); +// } catch (Exception e) { +// logger.error(e); +// msgList.add(e); +// } +// } + } + + /** + * + * @Description:根据表名和字段名称构建sql + * @author (zdx) + * @date 2017年10月26日 上午9:50:16 + * @param tabName + * @param fieldName + * @return + */ + private static String getSqlStr(String tabName,String fieldName){ + + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(tabName); + sb.append("(").append(fieldName); + + //是否包含更新时间字段 值为数据库当前时间 + if (Configurations.getBooleanProperty("hasLastUpdate", true)) { + sb.append(", LAST_UPDATE"); + } + sb.append(") values ("); + + String fieldNameObj [] = fieldName.split(","); + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append("?"); + if (i+1-1) { +// name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); +// } + + while (name.indexOf("_")>-1) { + name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); + } + } + + //需要特殊处理字段名 + if (name.equals("DoBlacklist")) { + name = "DoBlackList"; + }else if (name.equals("AffairId")) { + name = "AffAirId"; + }else if (name.equals("TopicId")) { + name = "TopIcId"; + } + + Method method = object.getClass().getMethod("get"+name); + obj[i]= method.invoke(object); + } + for (int x = 0; x < obj.length; x++) { + + if (obj[x] instanceof Date) { + ps.setObject(x + 1, utileDate2TimeStamp((Date) obj[x])); + }else { + ps.setObject(x + 1, obj[x]); + } + } + } + @Override + public void run() { + List msgList = ConfigSourcesService.getMsgList(); + synchronized (msgList) { + try { + if (null != compileList && compileList.size() > 0) { + saveCompile(compileList, conn, msgList); + } else if (null != groupList && groupList.size() > 0) { + saveGroup(groupList, conn, msgList); + } else if (null != ipRegionList && ipRegionList.size() > 0) { + saveIPRegion(tableName, ipRegionList, conn, msgList); + } else if (null != strRegionList && strRegionList.size() > 0) { + if (null != isStrongStr && isStrongStr) { + saveStrongStrRegion(tableName, strRegionList, conn, msgList); + } else { + saveStrRegion(tableName, strRegionList, conn, msgList); + } + } else if (null != numRegionList && numRegionList.size() > 0) { + saveNumRegion(tableName, numRegionList, conn, msgList); + } + latch.countDown(); + System.out.println("latchCount=======================" + latch.getCount()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/src/main/java/com/nis/web/service/restful/SpringJDBCTest.java b/src/main/java/com/nis/web/service/restful/SpringJDBCTest.java new file mode 100644 index 0000000..b129800 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/SpringJDBCTest.java @@ -0,0 +1,139 @@ +package com.nis.web.service.restful; + +import java.sql.Types; +import java.util.List; +import javax.sql.DataSource; +import org.springframework.jdbc.object.BatchSqlUpdate; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class SpringJDBCTest { + public static BatchSqlUpdate saveCompile(List compileList, DataSource ds, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); + + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.BIGINT, Types.INTEGER, Types.DATE, Types.DATE, Types.VARCHAR, Types.INTEGER, + Types.INTEGER, Types.BIGINT, Types.DATE }); + for (ConfigCompile compile : compileList) { + bsu.update(new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), + compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), + compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), compile.getDoBlackList(), + compile.getDoLog(), compile.getEffectiveRange(), compile.getActiveSys(), compile.getConfigPercent(), + compile.getConfigOption(), compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), + compile.getIsValid(), compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }); + } + // bsu.flush(); + return bsu; + } + + public static BatchSqlUpdate saveGroup(List groupList, DataSource ds, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (ConfigGroupRelation group : groupList) { + bsu.update( + new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), group.getOpTime() }); + } + // bsu.flush(); + return bsu; + } + + public static BatchSqlUpdate saveIPRegion(String name, List ipRegionList, DataSource ds, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, + Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + for (IpRegion ipRegion : ipRegionList) { + bsu.update(new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), + ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), ipRegion.getMaskSrcPort(), + ipRegion.getDstIp(), ipRegion.getMaskDstIp(), ipRegion.getDstPort(), ipRegion.getMaskDstPort(), + ipRegion.getProtocol(), ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() + + }); + } + // bsu.flush(); + return bsu; + } + + public static BatchSqlUpdate saveNumRegion(String name, List numRegionList, DataSource ds, + int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (NumRegion numRegion : numRegionList) { + bsu.update(new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), numRegion.getLowBoundary(), + numRegion.getUpBoundary(), numRegion.getIsValid(), numRegion.getOpTime() }); + } + // bsu.flush(); + return bsu; + } + + public static BatchSqlUpdate saveStrongStrRegion(String name, List strRegionList, DataSource ds, + int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.INTEGER, Types.DATE }); + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getDistrict(), + strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), + strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }); + } + // bsu.flush(); + return bsu; + } + + public static BatchSqlUpdate saveStrRegion(String name, List strRegionList, DataSource ds, + int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getKeywords(), + strRegion.getExprType(), strRegion.getMatchMethod(), strRegion.getIsHexbin(), + strRegion.getIsValid(), strRegion.getOpTime() }); + } + // bsu.flush(); + return bsu; + } +} diff --git a/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest.java b/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest.java new file mode 100644 index 0000000..208ba8a --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest.java @@ -0,0 +1,287 @@ +package com.nis.web.service.restful; + +import java.sql.Connection; +import java.sql.Types; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +import javax.sql.DataSource; +import org.springframework.jdbc.object.BatchSqlUpdate; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class SpringJDBCThreadTest implements Runnable { + private CountDownLatch latch; + private Boolean isStrongStr; + private String tableName; + private int batchSize; + private BatchSqlUpdate bsu; + private List compileList; + private List groupList; + private List ipRegionList; + private List numRegionList; + private List strRegionList; + + public SpringJDBCThreadTest() { + super(); + } + + public SpringJDBCThreadTest(int batchSize, BatchSqlUpdate bsu, CountDownLatch latch) { + super(); + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public SpringJDBCThreadTest(String tableName, int batchSize, BatchSqlUpdate bsu, CountDownLatch latch) { + super(); + this.tableName = tableName; + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public SpringJDBCThreadTest(boolean isStrongStr, String tableName, int batchSize, BatchSqlUpdate bsu, + CountDownLatch latch) { + super(); + this.isStrongStr = isStrongStr; + this.tableName = tableName; + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public int getBatchSize() { + return batchSize; + } + + public void setBatchSize(int batchSize) { + this.batchSize = batchSize; + } + + public BatchSqlUpdate getBsu() { + return bsu; + } + + public void setBsu(BatchSqlUpdate bsu) { + this.bsu = bsu; + } + + public CountDownLatch getLatch() { + return latch; + } + + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + public Boolean getIsStrongStr() { + return isStrongStr; + } + + public void setIsStrongStr(Boolean isStrongStr) { + this.isStrongStr = isStrongStr; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public List getCompileList() { + return compileList; + } + + public void setCompileList(List compileList) { + this.compileList = compileList; + } + + public List getGroupList() { + return groupList; + } + + public void setGroupList(List groupList) { + this.groupList = groupList; + } + + public List getIpRegionList() { + return ipRegionList; + } + + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + public List getNumRegionList() { + return numRegionList; + } + + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public List getStrRegionList() { + return strRegionList; + } + + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + public static void saveCompile(List compileList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); + + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.BIGINT, Types.INTEGER, Types.DATE, Types.DATE, Types.VARCHAR, Types.INTEGER, + Types.INTEGER, Types.BIGINT, Types.DATE }); + for (ConfigCompile compile : compileList) { + bsu.update(new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), + compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), + compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), compile.getDoBlackList(), + compile.getDoLog(), compile.getEffectiveRange(), compile.getActiveSys(), compile.getConfigPercent(), + compile.getConfigOption(), compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), + compile.getIsValid(), compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }); + } + bsu.flush(); + } + + public static void saveGroup(List groupList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (ConfigGroupRelation group : groupList) { + bsu.update( + new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), group.getOpTime() }); + } + bsu.flush(); + + } + + public static void saveIPRegion(String name, List ipRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, + Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + for (IpRegion ipRegion : ipRegionList) { + bsu.update(new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), + ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), ipRegion.getMaskSrcPort(), + ipRegion.getDstIp(), ipRegion.getMaskDstIp(), ipRegion.getDstPort(), ipRegion.getMaskDstPort(), + ipRegion.getProtocol(), ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() + + }); + } + bsu.flush(); + } + + public static void saveNumRegion(String name, List numRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (NumRegion numRegion : numRegionList) { + bsu.update(new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), numRegion.getLowBoundary(), + numRegion.getUpBoundary(), numRegion.getIsValid(), numRegion.getOpTime() }); + } + bsu.flush(); + } + + public static void saveStrongStrRegion(String name, List strRegionList, BatchSqlUpdate bsu, + int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.INTEGER, Types.DATE }); + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getDistrict(), + strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), + strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }); + } + bsu.flush(); + } + + public static void saveStrRegion(String name, List strRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getKeywords(), + strRegion.getExprType(), strRegion.getMatchMethod(), strRegion.getIsHexbin(), + strRegion.getIsValid(), strRegion.getOpTime() }); + } + bsu.flush(); + } + + @Override + public void run() { + try { + if (null != compileList && compileList.size() > 0) { + saveCompile(compileList, bsu, batchSize); + } else if (null != groupList && groupList.size() > 0) { + saveGroup(groupList, bsu, batchSize); + } else if (null != ipRegionList && ipRegionList.size() > 0) { + saveIPRegion(tableName, ipRegionList, bsu, batchSize); + } else if (null != strRegionList && strRegionList.size() > 0) { + if (null != isStrongStr && isStrongStr) { + saveStrongStrRegion(tableName, strRegionList, bsu, batchSize); + } else { + saveStrRegion(tableName, strRegionList, bsu, batchSize); + } + } else if (null != numRegionList && numRegionList.size() > 0) { + saveNumRegion(tableName, numRegionList, bsu, batchSize); + } + latch.countDown(); + System.out.println("SpringJDBC--latchCount=======================" + latch.getCount()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest2.java b/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest2.java new file mode 100644 index 0000000..9266ce6 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/SpringJDBCThreadTest2.java @@ -0,0 +1,287 @@ +package com.nis.web.service.restful; + +import java.sql.Connection; +import java.sql.Types; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +import javax.sql.DataSource; +import org.springframework.jdbc.object.BatchSqlUpdate; +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class SpringJDBCThreadTest2 implements Runnable { + private CountDownLatch latch; + private Boolean isStrongStr; + private String tableName; + private int batchSize; + private BatchSqlUpdate bsu; + private List compileList; + private List groupList; + private List ipRegionList; + private List numRegionList; + private List strRegionList; + + public SpringJDBCThreadTest2() { + super(); + } + + public SpringJDBCThreadTest2(int batchSize, BatchSqlUpdate bsu, CountDownLatch latch) { + super(); + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public SpringJDBCThreadTest2(String tableName, int batchSize, BatchSqlUpdate bsu, CountDownLatch latch) { + super(); + this.tableName = tableName; + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public SpringJDBCThreadTest2(boolean isStrongStr, String tableName, int batchSize, BatchSqlUpdate bsu, + CountDownLatch latch) { + super(); + this.isStrongStr = isStrongStr; + this.tableName = tableName; + this.batchSize = batchSize; + this.bsu = bsu; + this.latch = latch; + } + + public int getBatchSize() { + return batchSize; + } + + public void setBatchSize(int batchSize) { + this.batchSize = batchSize; + } + + public BatchSqlUpdate getBsu() { + return bsu; + } + + public void setBsu(BatchSqlUpdate bsu) { + this.bsu = bsu; + } + + public CountDownLatch getLatch() { + return latch; + } + + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + public Boolean getIsStrongStr() { + return isStrongStr; + } + + public void setIsStrongStr(Boolean isStrongStr) { + this.isStrongStr = isStrongStr; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public List getCompileList() { + return compileList; + } + + public void setCompileList(List compileList) { + this.compileList = compileList; + } + + public List getGroupList() { + return groupList; + } + + public void setGroupList(List groupList) { + this.groupList = groupList; + } + + public List getIpRegionList() { + return ipRegionList; + } + + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + public List getNumRegionList() { + return numRegionList; + } + + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public List getStrRegionList() { + return strRegionList; + } + + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + public static void saveCompile(List compileList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_COMPILE (COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate)"); + + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR, + Types.INTEGER, Types.BIGINT, Types.INTEGER, Types.DATE, Types.DATE, Types.VARCHAR, Types.INTEGER, + Types.INTEGER, Types.BIGINT, Types.DATE }); + for (ConfigCompile compile : compileList) { + bsu.update(new Object[] { compile.getCompileId(), compile.getService(), compile.getAction(), + compile.getContType(), compile.getAttrType(), compile.getContLabel(), compile.getTaskId(), + compile.getGuaranteeId(), compile.getAffAirId(), compile.getTopIcId(), compile.getDoBlackList(), + compile.getDoLog(), compile.getEffectiveRange(), compile.getActiveSys(), compile.getConfigPercent(), + compile.getConfigOption(), compile.getStartTime(), compile.getEndTime(), compile.getUserRegion(), + compile.getIsValid(), compile.getGroupNum(), compile.getFatherCfgId(), compile.getOpTime() }); + } + bsu.flush(); + } + + public static void saveGroup(List groupList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append( + "insert into CONFIG_GROUP (ID,GROUP_ID, COMPILE_ID, IS_VALID, LAST_UPDATE, OP_TIME ) values ( seq_config_group.nextval, ?, ?, ?, sysdate, ?) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (ConfigGroupRelation group : groupList) { + bsu.update( + new Object[] { group.getGroupId(), group.getCompileId(), group.getIsValid(), group.getOpTime() }); + } + bsu.flush(); + + } + + public static void saveIPRegion(String name, List ipRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, + Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + for (IpRegion ipRegion : ipRegionList) { + bsu.update(new Object[] { ipRegion.getRegionId(), ipRegion.getGroupId(), ipRegion.getAddrType(), + ipRegion.getSrcIp(), ipRegion.getMaskSrcIp(), ipRegion.getSrcPort(), ipRegion.getMaskSrcPort(), + ipRegion.getDstIp(), ipRegion.getMaskDstIp(), ipRegion.getDstPort(), ipRegion.getMaskDstPort(), + ipRegion.getProtocol(), ipRegion.getDirection(), ipRegion.getIsValid(), ipRegion.getOpTime() + + }); + } + bsu.flush(); + } + + public static void saveNumRegion(String name, List numRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + " (REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME,LAST_UPDATE) values(?, ?, ?, ?, ?, ?, sysdate)"); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.BIGINT, Types.INTEGER, Types.DATE }); + for (NumRegion numRegion : numRegionList) { + bsu.update(new Object[] { numRegion.getRegionId(), numRegion.getGroupId(), numRegion.getLowBoundary(), + numRegion.getUpBoundary(), numRegion.getIsValid(), numRegion.getOpTime() }); + } + bsu.flush(); + } + + public static void saveStrongStrRegion(String name, List strRegionList, BatchSqlUpdate bsu, + int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.INTEGER, Types.DATE }); + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getDistrict(), + strRegion.getKeywords(), strRegion.getExprType(), strRegion.getMatchMethod(), + strRegion.getIsHexbin(), strRegion.getIsValid(), strRegion.getOpTime() }); + } + bsu.flush(); + } + + public static void saveStrRegion(String name, List strRegionList, BatchSqlUpdate bsu, int batchSize) { + StringBuffer sb = new StringBuffer(); + sb.append("insert into "); + sb.append(name); + sb.append( + "(REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME,LAST_UPDATE ) values( ?, ?, ?, ?, ?, ?, ?, ?, sysdate) "); + + // BatchSqlUpdate bsu = new BatchSqlUpdate(ds, sb.toString()); + bsu.setSql(sb.toString()); + bsu.setBatchSize(batchSize); + bsu.setTypes(new int[] { Types.BIGINT, Types.BIGINT, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.INTEGER, + Types.INTEGER, Types.DATE }); + + for (StrRegion strRegion : strRegionList) { + bsu.update(new Object[] { strRegion.getRegionId(), strRegion.getGroupId(), strRegion.getKeywords(), + strRegion.getExprType(), strRegion.getMatchMethod(), strRegion.getIsHexbin(), + strRegion.getIsValid(), strRegion.getOpTime() }); + } + bsu.flush(); + } + + @Override + public void run() { + try { + if (null != compileList && compileList.size() > 0) { + saveCompile(compileList, bsu, batchSize); + } else if (null != groupList && groupList.size() > 0) { + saveGroup(groupList, bsu, batchSize); + } else if (null != ipRegionList && ipRegionList.size() > 0) { + saveIPRegion(tableName, ipRegionList, bsu, batchSize); + } else if (null != strRegionList && strRegionList.size() > 0) { + if (null != isStrongStr && isStrongStr) { + saveStrongStrRegion(tableName, strRegionList, bsu, batchSize); + } else { + saveStrRegion(tableName, strRegionList, bsu, batchSize); + } + } else if (null != numRegionList && numRegionList.size() > 0) { + saveNumRegion(tableName, numRegionList, bsu, batchSize); + } + latch.countDown(); + System.out.println("SpringJDBC--latchCount=======================" + latch.getCount()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/nis/web/service/restful/SystemFunStatusService.java b/src/main/java/com/nis/web/service/restful/SystemFunStatusService.java new file mode 100644 index 0000000..648f9a0 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/SystemFunStatusService.java @@ -0,0 +1,26 @@ +package com.nis.web.service.restful; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.SystemFunStatus; +import com.nis.web.dao.SystemFunStatusDao; +import com.nis.web.service.CrudService; + +@Service +public class SystemFunStatusService extends CrudService { + + @Autowired + public SystemFunStatusDao systemFunStatusDao; + + public void saveSystemFunStatusBatch(List entity) { + super.saveBatch(entity, SystemFunStatusDao.class); + } + + public void updateSystemFunStatusBatch(List entity) { + super.updateBatch(entity, SystemFunStatusDao.class); + } + +} diff --git a/src/main/java/com/nis/web/service/restful/UpdateCompileByJDBCThread.java b/src/main/java/com/nis/web/service/restful/UpdateCompileByJDBCThread.java new file mode 100644 index 0000000..39af8c7 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/UpdateCompileByJDBCThread.java @@ -0,0 +1,463 @@ +package com.nis.web.service.restful; + +import java.lang.reflect.Method; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.Date; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +import org.apache.log4j.Logger; + +import com.nis.domain.restful.ConfigCompile; +import com.nis.domain.restful.ConfigGroupRelation; +import com.nis.domain.restful.IpRegion; +import com.nis.domain.restful.NumRegion; +import com.nis.domain.restful.StrRegion; +import com.nis.util.Configurations; + +/** + * jdbc测试批量插入 + * + * @author RenKaiGe-Office + * + */ +public class UpdateCompileByJDBCThread implements Runnable { + private static Logger logger = Logger.getLogger(SaveCompileByJDBCThread.class); + private static Long start; + private CountDownLatch latch; + private String tableName; + private Connection conn; + private List compileList; + private List groupList; + private List ipRegionList; + private List numRegionList; + private List strRegionList; + private Date opTime; + + public UpdateCompileByJDBCThread() { + super(); + } + + public UpdateCompileByJDBCThread(Connection conn, CountDownLatch latch, Long start, Date opTime) { + super(); + this.conn = conn; + this.latch = latch; + this.start = start; + this.opTime = opTime; + } + + public UpdateCompileByJDBCThread(String tableName, Connection conn, CountDownLatch latch, Long start, Date opTime) { + super(); + this.tableName = tableName; + this.conn = conn; + this.latch = latch; + this.start = start; + this.opTime = opTime; + } + + public Date getOpTime() { + return opTime; + } + + public void setOpTime(Date opTime) { + this.opTime = opTime; + } + + public Long getStart() { + return start; + } + + public void setStart(Long start) { + this.start = start; + } + + public CountDownLatch getLatch() { + return latch; + } + + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public Connection getConn() { + return conn; + } + + public void setConn(Connection conn) { + this.conn = conn; + } + + public List getCompileList() { + return compileList; + } + + public void setCompileList(List compileList) { + this.compileList = compileList; + } + + public List getGroupList() { + return groupList; + } + + public void setGroupList(List groupList) { + this.groupList = groupList; + } + + public List getIpRegionList() { + return ipRegionList; + } + + public void setIpRegionList(List ipRegionList) { + this.ipRegionList = ipRegionList; + } + + public List getNumRegionList() { + return numRegionList; + } + + public void setNumRegionList(List numRegionList) { + this.numRegionList = numRegionList; + } + + public List getStrRegionList() { + return strRegionList; + } + + public void setStrRegionList(List strRegionList) { + this.strRegionList = strRegionList; + } + + public synchronized static java.sql.Timestamp utileDate2TimeStamp(java.util.Date udate) { + java.sql.Timestamp sqlDate = null; + long t = udate.getTime(); + sqlDate = new java.sql.Timestamp(t); + return sqlDate; + + } + + public static void updateCompile(List compileList, Connection conn, Date opTime, + List msgList) { + if (null != compileList && compileList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + String tabName = Configurations.getStringProperty("compileTabName", "CONFIG_COMPILE"); + String fieldName = Configurations.getStringProperty("updateFields", "IS_VALID"); + String condition= Configurations.getStringProperty("compileUpdateCondition", "COMPILE_ID"); + sb.append("update ").append(tabName).append(" set "); + + String fieldNameObj [] = fieldName.split(","); + //加上where条件的参数名称 + String newParamsStr = fieldName+","+condition; + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append(fieldNameObj[i]+"=?"); + if (i+1 groupList, Connection conn, Date opTime, + List msgList) { + if (null != groupList && groupList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + + String tabName = Configurations.getStringProperty("groupTabName", "CONFIG_GROUP"); + String fieldName = Configurations.getStringProperty("updateFields", "IS_VALID"); + String condition = Configurations.getStringProperty("groupUpdateCondition", "GROUP_ID"); + + sb.append(" update ").append(tabName); + sb.append(" set "); + String fieldNameObj [] = fieldName.split(","); + //加上where条件的参数名称 + String newParamsStr = fieldName+","+condition; + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append(fieldNameObj[i]+"=?"); + if (i+1 ipRegionList, Connection conn, Date opTime, + List msgList) { + if (null != ipRegionList && ipRegionList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + + + String fieldName = Configurations.getStringProperty("updateFields", "IS_VALID"); + String condition = Configurations.getStringProperty("regionId", "REGION_ID"); + sb.append("update "); + sb.append(name); + sb.append(" set "); + + String fieldNameObj [] = fieldName.split(","); + //加上where条件的参数名称 + String newParamsStr = fieldName+","+condition; + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append(fieldNameObj[i]+"=?"); + if (i+1 numRegionList, Connection conn, Date opTime, + List msgList) { + if (null != numRegionList && numRegionList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + String fieldName = Configurations.getStringProperty("updateFields", "IS_VALID"); + String condition = Configurations.getStringProperty("regionId", "REGION_ID"); + sb.append("update "); + sb.append(name); + sb.append(" set "); + + String fieldNameObj [] = fieldName.split(","); + //加上where条件的参数名称 + String newParamsStr = fieldName+","+condition; + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append(fieldNameObj[i]+"=?"); + if (i+1 strRegionList, Connection conn, Date opTime, + List msgList) { + if (null != strRegionList && strRegionList.size() > 0) { + try { + StringBuffer sb = new StringBuffer(); + String fieldName = Configurations.getStringProperty("updateFields", "IS_VALID"); + String condition = Configurations.getStringProperty("regionId", "REGION_ID"); + sb.append("update "); + sb.append(name); + sb.append(" set "); + + String fieldNameObj [] = fieldName.split(","); + //加上where条件的参数名称 + String newParamsStr = fieldName+","+condition; + for (int i = 0; i < fieldNameObj.length; i++) { + sb.append(fieldNameObj[i]+"=?"); + if (i+1-1) { +// name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); +// } + + while (name.indexOf("_")>-1) { + name = name.substring(0, name.indexOf("_"))+name.substring(name.indexOf("_")+1,name.indexOf("_")+2).toUpperCase()+name.substring(name.indexOf("_")+2); + } + } + + //需要特殊处理字段名 + if (name.equals("DoBlacklist")) { + name = "DoBlackList"; + }else if (name.equals("AffairId")) { + name = "AffAirId"; + }else if (name.equals("TopicId")) { + name = "TopIcId"; + } + + Method method = object.getClass().getMethod("get"+name); + obj[i]= method.invoke(object); + } + for (int x = 0; x < obj.length; x++) { + + if (obj[x] instanceof Date) { + ps.setObject(x + 1, utileDate2TimeStamp((Date) obj[x])); + }else { + ps.setObject(x + 1, obj[x]); + } + } + } + @Override + public void run() { + List msgList = ConfigSourcesService.getMsgList(); + synchronized (msgList) { + try { + if (null != compileList && compileList.size() > 0) { + updateCompile(compileList, conn, opTime, msgList); + } else if (null != groupList && groupList.size() > 0) { + updateGroup(groupList, conn, opTime, msgList); + } else if (null != ipRegionList && ipRegionList.size() > 0) { + updateIPRegion(tableName, ipRegionList, conn, opTime, msgList); + } else if (null != strRegionList && strRegionList.size() > 0) { + updateStrRegion(tableName, strRegionList, conn, opTime, msgList); + } else if (null != numRegionList && numRegionList.size() > 0) { + updateNumRegion(tableName, numRegionList, conn, opTime, msgList); + } + latch.countDown(); + // System.out.println("latchCount=======================" + + // latch.getCount()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/src/main/java/com/nis/web/service/restful/jk/JkDmbCkService.java b/src/main/java/com/nis/web/service/restful/jk/JkDmbCkService.java new file mode 100644 index 0000000..a080b6e --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/jk/JkDmbCkService.java @@ -0,0 +1,50 @@ +/** + *@Title: DmbCkService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful.jk; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.jk.JkDmbCk; +import com.nis.web.dao.jk.JkDmbCkDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: DmbCkService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class JkDmbCkService extends CrudService { + @Autowired + public JkDmbCkDao jkDmbCkDao; + + public JkDmbCk findById(long id) { + return get(id); + } + public void saveDmbCkBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,JkDmbCkDao.class); + } + public void updateDmbCkBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, JkDmbCkDao.class); + } + + public void removeDmbCk(long id) { + jkDmbCkDao.delete(id); + } + public void removeDmbCkBatch(List entity) { + super.deleteBatch(entity, JkDmbCkDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/jk/JkFdZbService.java b/src/main/java/com/nis/web/service/restful/jk/JkFdZbService.java new file mode 100644 index 0000000..c892083 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/jk/JkFdZbService.java @@ -0,0 +1,51 @@ +/** + *@Title: JkFdZbService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful.jk; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.jk.JkFdZb; +import com.nis.web.dao.jk.JkFdZbDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: JkFdZbService.java + * @Description: TODO + * @author (DDM) + * @date 2016年10月19日 下午21:28:44 + * @version V1.0 + */ +@Service +public class JkFdZbService extends CrudService { + @Autowired + public JkFdZbDao dmbCkDao; + public Page getJkFdZb(Page page, JkFdZb entity) { + return findPage(page, entity); + } + + public JkFdZb findById(long zbId) { + return get(zbId); + } + public void saveJkFdZbBatch(List entity) { + super.saveBatch(entity,JkFdZbDao.class); + } + public void updateJkFdZbBatch(List entity) { + super.updateBatch(entity, JkFdZbDao.class); + } + public void removeJkFdZb(long zbId) { + dmbCkDao.delete(zbId); + } + public void removeJkFdZbBatch(List entity) { + super.deleteBatch(entity, JkFdZbDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/jk/JkFfjInfoService.java b/src/main/java/com/nis/web/service/restful/jk/JkFfjInfoService.java new file mode 100644 index 0000000..a46129f --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/jk/JkFfjInfoService.java @@ -0,0 +1,44 @@ +/** + *@Title: JkFfjInfoService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author (zbc) + *@date 2016年10月19日 下午20:04:16 + *@version 版本号 + */ +package com.nis.web.service.restful.jk; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.restful.jk.JkFdZb; +import com.nis.domain.restful.jk.JkFfjInfo; +import com.nis.web.dao.jk.JkFdZbDao; +import com.nis.web.dao.jk.JkFfjInfoDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: JkFfjInfoService.java + * @Description: TODO + * @author (zbc) + * @date 2016年10月19日 下午20:04:16 + * @version V1.0 + */ +@Service +public class JkFfjInfoService extends CrudService { + + @Autowired + public JkFfjInfoDao jkFfjInfoDao; + + public void saveJkFfjBatch(List entity) { + super.saveBatch(entity, JkFfjInfoDao.class); + } + + + public void updateJkFfjBatch(List entity) { + super.updateBatch(entity, JkFfjInfoDao.class); + } +} diff --git a/src/main/java/com/nis/web/service/restful/jk/JkFwqInfoService.java b/src/main/java/com/nis/web/service/restful/jk/JkFwqInfoService.java new file mode 100644 index 0000000..e2cc4f0 --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/jk/JkFwqInfoService.java @@ -0,0 +1,42 @@ +/** + *@Title: JkFfjInfoService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author (zbc) + *@date 2016年10月19日 下午20:04:16 + *@version 版本号 + */ +package com.nis.web.service.restful.jk; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.jk.JkFwqInfo; +import com.nis.web.dao.jk.JkFwqInfoDao; +import com.nis.web.service.CrudService; + +/** + * @ClassName: JkFfjInfoService.java + * @Description: TODO + * @author (zbc) + * @date 2016年10月19日 下午20:04:16 + * @version V1.0 + */ +@Service +public class JkFwqInfoService extends CrudService { + + @Autowired + public JkFwqInfoDao jkFwqInfoDao; + + public void savejkFwqInfoBatch(List entity) { + super.saveBatch(entity, JkFwqInfoDao.class); + } + + + public void updatejkFwqInfoBatch(List entity) { + super.updateBatch(entity, JkFwqInfoDao.class); + } + +} diff --git a/src/main/java/com/nis/web/service/restful/jk/JkLyqService.java b/src/main/java/com/nis/web/service/restful/jk/JkLyqService.java new file mode 100644 index 0000000..02e388e --- /dev/null +++ b/src/main/java/com/nis/web/service/restful/jk/JkLyqService.java @@ -0,0 +1,50 @@ +/** + *@Title: JkLyqService.java + *@Package com.nis.web.service.restful + *@Description TODO + *@author wx + *@date 2016年9月7日 下午3:28:44 + *@version 版本号 + */ +package com.nis.web.service.restful.jk; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.restful.jk.JkLyq; +import com.nis.web.dao.jk.JkLyqDao; +import com.nis.web.service.CrudService; +import com.nis.web.service.SaveRequestLogThread; + +/** + * @ClassName: JkLyqService.java + * @Description: TODO + * @author (wx) + * @date 2016年9月7日 下午3:28:44 + * @version V1.0 + */ +@Service +public class JkLyqService extends CrudService { + @Autowired + public JkLyqDao jkLyqDao; + + public JkLyq findById(long id) { + return get(id); + } + public void saveJkLyqBatch(List entity) { + // TODO Auto-generated method stub + super.saveBatch(entity,JkLyqDao.class); + } + public void updateJkLyqBatch(List entity) { + // TODO Auto-generated method stub + super.updateBatch(entity, JkLyqDao.class); + } + public void removeJkLyq(long id) { + jkLyqDao.delete(id); + } + public void removeJkLyqBatch(List entity) { + super.deleteBatch(entity, JkLyqDao.class); + } +} diff --git a/src/main/java/com/nis/web/test/HelloWorldController.java b/src/main/java/com/nis/web/test/HelloWorldController.java new file mode 100644 index 0000000..57b662d --- /dev/null +++ b/src/main/java/com/nis/web/test/HelloWorldController.java @@ -0,0 +1,123 @@ +package com.nis.web.test; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; + + + + + + + + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.SessionAttributes; +import org.springframework.web.servlet.ModelAndView; + +import com.nis.domain.SysMenu; +import com.nis.web.controller.BaseController; +import com.nis.web.service.UserService; + + +@SessionAttributes(value="userObject") +@RequestMapping("/helloworld") +public class HelloWorldController extends BaseController{ + + + @RequestMapping("/hello") + public String hello(){ + return "success"; + } + + /** + * requestMapping 参数有value(url),method(request method),params,headers + * @return + */ + @RequestMapping(value="/testMethod",method=RequestMethod.POST) + public String testMethod(){ + return "success"; + } + + /** + * params 参数为数组,包含username属性并且age参数的值不为10 + * @return + */ + @RequestMapping(value="/testParams",params={"username","age!=10"},headers={"Accept-Language=en-US"}) + public String testParams() { + return "success"; + } + + /** + * 使用通配符映射请求参数 + * ?一个字符 + * *多个字符 + * **多级目录 + * @return + */ + @RequestMapping("/testAntPath/*/test") + public String testAntPath() { + return "success"; + } + + @RequestMapping("/testPathVariable/{id}") + public String testPathVariable(@PathVariable("id") int id){ + System.out.println(id); + return "success"; + } + + /** + * @RequestParam 参数value代表url参数名,required:是否必须传入,defaultValue,为空时默认值为。 + * + * @param username + * @param age + * @return + */ + @RequestMapping(value="/testRequestParam") + public String testRequestParam(@RequestParam(value="username",required=true) String username,@RequestParam(required=false,defaultValue="0") int age){ + System.out.println(username+":"+age); + return "success"; + } + + + + + + /** + * 通过modelandview 传递数据与视图 + * @param map + * @return + */ + @RequestMapping("/testModelAndView") + public ModelAndView testModelAndView(){ + String viewName = "success"; + ModelAndView modelAndView = new ModelAndView(viewName); + + modelAndView.addObject("time", new Date()); + + return modelAndView; + } + + /** + * 通过自动注解map对象传递数据 + * @param map + * @return + */ + @RequestMapping("/testMap") + public String testMap(Map map){ + map.put("names", Arrays.asList("A","B","C")); + return "success"; + } + + + + + +} diff --git a/src/main/resources/applicationContext-mybatis.xml b/src/main/resources/applicationContext-mybatis.xml new file mode 100644 index 0000000..9ad8c8a --- /dev/null +++ b/src/main/resources/applicationContext-mybatis.xml @@ -0,0 +1,349 @@ + + + + + + + + + classpath:jdbc.properties + classpath:nis.properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/applicationContext-shiro.xml b/src/main/resources/applicationContext-shiro.xml new file mode 100644 index 0000000..ae0a624 --- /dev/null +++ b/src/main/resources/applicationContext-shiro.xml @@ -0,0 +1,172 @@ + + + + + Shiro Configuration + + + + + + classpath:jdbc.properties + classpath:nis.properties + + + + + + + + + + + + + + + + + + + + /static/** = anon + /userfiles/** = anon + ${adminPath}/cas = cas + /login = authc + /logout = logout + ${adminPath}/** = user + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 115 + + 46 + + abcde012345678gfynmnpwx + + 5 + + no + + white + + 25 + + Arial, Courier + 104,183,26 + 104,183,26 + com.google.code.kaptcha.impl.ShadowGimpy + com.google.code.kaptcha.impl.NoNoise + + red + + 1 + + + + + + + + + + + diff --git a/src/main/resources/cache/ehcache-local.xml b/src/main/resources/cache/ehcache-local.xml new file mode 100644 index 0000000..8d20f6d --- /dev/null +++ b/src/main/resources/cache/ehcache-local.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/cache/ehcache-rmi.xml b/src/main/resources/cache/ehcache-rmi.xml new file mode 100644 index 0000000..2c093c0 --- /dev/null +++ b/src/main/resources/cache/ehcache-rmi.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/generatorConfig.xml b/src/main/resources/generatorConfig.xml new file mode 100644 index 0000000..f1c4d84 --- /dev/null +++ b/src/main/resources/generatorConfig.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    \ No newline at end of file diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties new file mode 100644 index 0000000..df116c8 --- /dev/null +++ b/src/main/resources/jdbc.properties @@ -0,0 +1,123 @@ +#jdbc for oracle +#jdbc.driver=oracle.jdbc.driver.OracleDriver +jdbc.devlop.driver=com.mysql.jdbc.Driver +jdbc.devlop.url=jdbc:mysql://10.0.6.100:3306/web_frame?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull +jdbc.devlop.username=dfh +jdbc.devlop.key=xLtQB+Bp6joOYrVIfBdrRA== +jdbc.devlop.password=/+7+DgxK++ZaD1nIcRRmDg== + +jdbc.product.driver=oracle.jdbc.driver.OracleDriver +#jdbc.product.url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.17)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVICE_NAME = ORCL)(FAILOVER_MODE =(TYPE = select)(METHOD = basic)(RETRIES = 180)(DELAY = 180)))) +jdbc.product.url=jdbc:oracle:thin:@10.0.6.212:1523:app +#jdbc.product.url=jdbc:oracle:thin:@10.174.196.20:1521:orcl +jdbc.product.username=gk_pz +#jdbc.product.username=z2_5x9pz +jdbc.product.key=3X3ZBejyxS7lkVsHVm9KTw== +jdbc.product.password=sHqDBZIUS0hYZCbC+1xN3A== + +jdbc.log.driver=oracle.jdbc.driver.OracleDriver +jdbc.log.url=jdbc:oracle:thin:@10.0.6.212:1523:app +#jdbc.log.url=jdbc:oracle:thin:@10.174.196.22:1521:orcl +jdbc.log.username=gk_log +#jdbc.log.username=z2_5x9logb +jdbc.log.key=pHl+0udycGQWNZcN68Sv9A== +jdbc.log.password=Z/pVMDXcWNxzVGAX0yRp3Q== + +jdbc.logA.driver=oracle.jdbc.driver.OracleDriver +#jdbc.logA.url=jdbc:oracle:thin:@10.0.6.212:1523:app +jdbc.logA.url=jdbc:oracle:thin:@10.174.196.21:1521:orcl +#jdbc.logA.username=gk_log_a +jdbc.logA.username=z2_5x9loga +jdbc.logA.key=SXHfLUwzPw0cQEc1wzwM4w== +jdbc.logA.password=auvtDoVZpGP6P4OqfBrWAg== + +jdbc.logC.driver=oracle.jdbc.driver.OracleDriver +jdbc.logC.url=jdbc:oracle:thin:@10.0.6.212:1523:app +jdbc.logC.username=gk_log_c +jdbc.logC.key=MvwfUIYP0nLyiQeprHB/5A== +jdbc.logC.password=3HXvsqpbOoNBIkHDS5c9Aw== + +jdbc.jk.driver=oracle.jdbc.driver.OracleDriver +jdbc.jk.url=jdbc:oracle:thin:@10.0.6.212:1523:app +#jdbc.jk.url=jdbc:oracle:thin:@10.174.196.20:1521:orcl +jdbc.jk.username=gk_jk +#jdbc.jk.username=z2_5x9jk +jdbc.jk.key=+FaavsHgQ0qBSebsAoochw== +jdbc.jk.password=wBrNar7gX/iQR7IyCSHuSg== + + + +bonecp.idleMaxAgeInMinutes=60 +bonecp.idleConnectionTestPeriodInMinutes=240 +bonecp.maxConnectionsPerPartition=50 +bonecp.minConnectionsPerPartition=10 +bonecp.partitionCount=3 +bonecp.acquireIncrement=5 +bonecp.statementsCacheSize=100 + +############################################################################################################################################ +#数据中心神通数据库接口配置 +############################################################################################################################################ +bonecp.cluster.idleMaxAgeInMinutes=60 +bonecp.cluster.idleConnectionTestPeriodInMinutes=240 +bonecp.cluster.maxConnectionsPerPartition=10 +bonecp.cluster.minConnectionsPerPartition=5 +bonecp.cluster.partitionCount=3 +bonecp.cluster.acquireIncrement=5 +bonecp.cluster.statementsCacheSize=100 + +jdbc.log.cluster.driver=com.oscar.cluster.BulkDriver +jdbc.log.cluster.url=jdbc:oscarclusterbulk://10.3.129.125:2010/logdb +jdbc.log.cluster.username=xa_z2_iie +jdbc.log.cluster.key=2fa3hQn28+4AOdJXL4Ud2w== +jdbc.log.cluster.password=uut+weC9of5ocPheagBJ4A== +############################################################################################################################################ +#数据中心hive接口配置 +############################################################################################################################################ + +#A版日志库 +jdbc.hiveA.driver=org.apache.hive.jdbc.HiveDriver +jdbc.hiveA.url=jdbc:hive2://10.3.130.24:10000/default +jdbc.hiveA.username=xa_z2_mesa +jdbc.hiveA.key=aC/8fTC9vfPVhCk+CDzbAQ== +#加密后密码 +#jdbc.hiveA.password=V3GyFlG8Mg01bTt8ykFVaA== +#实际密码 +jdbc.hiveA.password=123!@#qwe + + + + + +#B版日志库 +jdbc.hiveB.driver=org.apache.hive.jdbc.HiveDriver +jdbc.hiveB.url=jdbc:hive2://10.3.130.25:10000/default +jdbc.hiveB.username=xa_z2_mesa +jdbc.hiveB.key=aC/8fTC9vfPVhCk+CDzbAQ== +#加密后密码 +#jdbc.hiveB.password=V3GyFlG8Mg01bTt8ykFVaA== +#实际密码 +jdbc.hiveB.password=123!@#qwe + + +bonecp.hive.idleMaxAgeInMinutes=60 +bonecp.hive.idleConnectionTestPeriodInMinutes=240 +bonecp.hive.maxConnectionsPerPartition=20 +bonecp.hive.minConnectionsPerPartition=10 +bonecp.hive.partitionCount=3 +bonecp.hive.acquireIncrement=5 +bonecp.hive.statementsCacheSize=100 + + + +############################################################################################################################################ +#下面的库为测试库,测试完成后会删除 +############################################################################################################################################ + +jdbc.test.driver=oracle.jdbc.driver.OracleDriver +jdbc.test.url=jdbc:oracle:thin:@10.0.6.212:1523:app +jdbc.test.username=gk_pztest +jdbc.test.key=cV9126WUYdojQjvuKNjidw== +jdbc.test.password=OrTu/cLwlduYPW/tmxqNgQ== + + diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..b734b9e --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,22 @@ +#Log4j +log4j.rootLogger=info,console,file +# 控制台日志设置 +log4j.appender.console=org.apache.log4j.ConsoleAppender +#log4j.appender.console.Threshold=info +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss}] [%-5p] [Thread\:%t] %l %x - <%m>%n + +# 文件日志设置 +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.Threshold=error +log4j.appender.file.encoding=UTF-8 +log4j.appender.file.Append=true +log4j.appender.file.file=${nis.root}/WEB-INF/log/nis.log +log4j.appender.file.DatePattern='.'yyyy-MM-dd +log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %X{ip} [%t] %5p %c{1} %m%n +log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss}] [%-5p] %X{ip} [Thread\:%t] %l %x - %m%n +#MyBatis 配置,com.nis.web.dao是mybatis接口所在包 +log4j.logger.com.nis.web.dao=debug +#bonecp数据源配置 +log4j.category.com.jolbox=debug,console \ No newline at end of file diff --git a/src/main/resources/matt.properties b/src/main/resources/matt.properties new file mode 100644 index 0000000..11b0025 --- /dev/null +++ b/src/main/resources/matt.properties @@ -0,0 +1,37 @@ +#编译表表名 +compileTabName=CONFIG_COMPILE +#编译表 新增配置时添加的字段 英文逗号分隔 +compileFieldName=COMPILE_ID ,SERVICE ,ACTION , CONT_TYPE, ATTR_TYPE, CONT_LABEL, Task_id, Guarantee_ID, AFFAIR_ID, TOPIC_ID, DO_BLACKLIST ,DO_LOG ,EFFECTIVE_RANGE , ACTIVE_SYS, CONFIG_PERCENT ,CONFIG_OPTION ,START_TIME ,END_TIME , USER_REGION, IS_VALID,GROUP_NUM,FATHER_CFG_ID ,OP_TIME +#编译表 配置状态更新的条件 +compileUpdateCondition=COMPILE_ID + +#分组表表名 +groupTabName=CONFIG_GROUP +#分组表 新增配置时添加的字段 英文逗号分隔 +#注意:第一个字段必需是分组表主键 +groupFieldName=ID,GROUP_ID, COMPILE_ID, IS_VALID, OP_TIME +#分组表主键使用序列号 +groupSeqName=SEQ_CONFIG_GROUP +#分组表 配置状态更新的条件 +groupUpdateCondition=GROUP_ID,COMPILE_ID + +#域配置表配置ID字段名称 +regionId = REGION_ID + +#字符域表 新增配置时添加字段 英文逗号分隔 +strRegionFieldName=REGION_ID, GROUP_ID, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME + +#增强字符域表 新增配置时添加字段 英文逗号分隔 +strongStrRegionFieldName=REGION_ID, GROUP_ID, DISTRICT, KEYWORDS, EXPR_TYPE, MATCH_METHOD , IS_HEXBIN, IS_VALID, OP_TIME + +#IP域表 新增配置时添加字段 英文逗号分隔 +ipRegionFieldName=REGION_ID, GROUP_ID, ADDR_TYPE, SRC_IP, MASK_SRC_IP, SRC_PORT, MASK_SRC_PORT, DST_IP, MASK_DST_IP, DST_PORT, MASK_DST_PORT, PROTOCOL, DIRECTION, IS_VALID, OP_TIME + +#数值域表 新增配置时添加字段 英文逗号分隔 +numRegionFieldName = REGION_ID,GROUP_ID,LOW_BOUNDARY,UP_BOUNDARY,IS_VALID,OP_TIME + +#是否包含LAST_UPDATE字段 (状态更新中使用) +hasLastUpdate=true + +#配置状态更新的字段 +updateFields=IS_VALID,OP_TIME diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml new file mode 100644 index 0000000..b8aadf0 --- /dev/null +++ b/src/main/resources/mybatis-config.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties new file mode 100644 index 0000000..d09def3 --- /dev/null +++ b/src/main/resources/nis.properties @@ -0,0 +1,237 @@ +#\u7ba1\u7406\u57fa\u7840\u8def\u5f84, \u9700\u540c\u6b65\u4fee\u6539\uff1aweb.xml +adminPath=/nis + +#Restful\u670D\u52A1\u9ED8\u8BA4\u8DEF\u5F84� +servicePath=/service + +#\u5206\u9875\u914d\u7f6e +page.pageSize=30 +#\u5206\u9875\u914d\u7f6e +page.count=0 + +#\u7d22\u5f15\u9875\u8def\u5f84 +web.view.index=/nis/index + +#\u7f13\u5b58\u8bbe\u7f6e +ehcache.configFile=cache/ehcache-local.xml +#ehcache.configFile=cache/ehcache-rmi.xml + +#\u4f1a\u8bdd\u8d85\u65f6\uff0c \u5355\u4f4d\uff1a\u6beb\u79d2\uff0c 20m=1200000ms, 30m=1800000ms, 60m=3600000ms +session.sessionTimeout=1800000 +#\u4f1a\u8bdd\u6e05\u7406\u95f4\u9694\u65f6\u95f4\uff0c \u5355\u4f4d\uff1a\u6beb\u79d2\uff0c2m=120000ms\u3002 +session.sessionTimeoutClean=120000 + +#\u9759\u6001\u6587\u4ef6\u540e\u7f00 +web.staticFile=.css,.js,.png,.jpg,.gif,.jpeg,.bmp,.ico,.swf,.psd,.htc,.htm,.html,.crx,.xpi,.exe,.ipa,.apk + +#\u7f51\u7ad9URL\u540e\u7f00 +urlSuffix=.jsp + +#\u89c6\u56fe\u6587\u4ef6\u5b58\u653e\u8def\u5f84 +web.view.prefix=/WEB-INF/views/ +web.view.suffix=.jsp + +#\u662f\u5426\u4e0d\u5141\u8bb8\u5237\u65b0\u4e3b\u9875\uff0c\u4e0d\u5141\u8bb8\u60c5\u51b5\u4e0b\uff0c\u5237\u65b0\u4e3b\u9875\u4f1a\u5bfc\u81f4\u91cd\u65b0\u767b\u5f55 +notAllowRefreshIndex=false + +#\u524d\u7aef\u57fa\u7840\u8def\u5f84 +frontPath=/f + +#\u662F\u5426\u8FD0\u884C\u591A\u8D26\u6237\u540C\u65F6\u767B\u5F55? +user.multiAccountLogin=true + +#\u7855\u6b63\u7ec4\u4ef6\u662f\u5426\u4f7f\u7528\u7f13\u5b58 +supcan.useCache=false + +#\u901a\u77e5\u95f4\u9694\u65f6\u95f4\u8bbe\u7f6e, \u5355\u4f4d\uff1a\u6beb\u79d2, 30s=30000ms, 60s=60000ms +work.notify.remind.interval=60000 + + +#============================# +#===== System settings ======# +#============================# + +#\u4ea7\u54c1\u4fe1\u606f\u8bbe\u7f6e +productName=gk +copyrightYear=2015 +version=V1.0.0 + + +#\u4e0a\u4f20\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84, \u8def\u5f84\u4e2d\u4e0d\u5141\u8bb8\u5305\u542b\u201cuserfiles\u201d +userfiles.basedir=upload + + +#============================# +#===== webservice settings ======# +#============================# + +#ESB�������ṩ��ͳһ��ַ +webservice.esb.endpoint=http://10.55.0.197:7879/TongServiceProxy_doprocess/services/WebService1/ +#webservice RID +webservice.rid=XFBL + +#webservice user SID +webservice.yh.sid=s_2016_x2000 + +#webservice office SID +webservice.jg.sid=s_2015_x2000 + +#webservice data dict SID +webservice.data.dict.sid=s_2031_x2000 + +#webservice data dict bm SID +webservice.data.dict.bm.sid=s_2032_x2000 + +#webservice data dict code SID +webservice.data.dict.code.sid=s_2042_0660BD17-35E4-4482-AA3A-556F2C024902 + +#webservice request timeout for seconds +webservice.request.timeout=30 + +#�����URL +webservice.jg.service.url=http://10.55.0.155:8080/jgService + +#�û�����URL +webservice.yh.service.url=http://10.55.0.155:8080/ryService + +#����ֵ�URL +webservice.data.dict.service.url=http://10.55.0.155:8080/sjzdService + +#����ֵ����URL +webservice.data.dict.bm.url=http://10.55.0.155:8080/sjzdbmService + +#������URL +webservice.data.code.url=http://10.55.0.155:8080/sjmbService + +#webservice�ӿ����ÿҳ���� +webservice.data.pagesize = 2000 +#webservice��ǰĬ��ҳ +webservice.data.currentpage = 1 + +#webservice ������� +webservice.jgmb.name=CK_T_JC_RY +#webservice �û������ +webservice.yhmb.name=CK_T_YH_RY +#webservice������ ȫ�� +webservice.method.name.ql=getData +# webservice������ ���� +webservice.method.name.zl=getDataZL + +# redis配置文件 +#redis 各个分片的 IP端口 +redis.cluster.host_port=10.0.6.32:6379,10.0.6.32:6380,10.0.6.32:6381,10.0.6.33:6379,10.0.6.33:6380,10.0.6.33:6381 + + +#中心现场redis地址和端口 +#redis.cluster.host_port=10.174.196.33:6379,10.174.196.33:6380,10.174.196.33:6381,10.174.196.34:6379,10.174.196.34:6380,10.174.196.34:6381,10.174.196.35:6379,10.174.196.35:6380,10.174.196.35:6381,10.174.196.36:6379,10.174.196.36:6380,10.174.196.36:6381,10.174.196.37:6379,10.174.196.37:6380,10.174.196.37:6381,10.174.196.38:6379,10.174.196.38:6380,10.174.196.38:6381,10.174.196.39:6379,10.174.196.39:6380,10.174.196.39:6381 + +redis.cluster.connectiontimeout=5000 +redis.cluster.sotimeout=5000 +redis.cluster.maxattempts=3 +#redis连接池相关配置 + +redis.pool.maxtotal=500 + +redis.pool.maxidle=500 +redis.pool.maxwaitmillis=-1 +redis.pool.blockwhenexhausted=true +redis.pool.numtestsperevictionrun=60000 +redis.pool.testonborrow=true +redis.pool.testonreturn=false +redis.pool.testwhileidle=true +redis.pool.timebetweenevictionrunsmillis=60000 +redis.pool.minevictableidletimemillis=60000 +#oracle数据redis存储时间(秒为单位 默认3分钟即180s) +oracleExpire=180 +#hive数据中心数据redis存储时间(秒为单位 默认20分钟即1200s) +hiveExpire=300 +#redis开关 +isOpenRedis=false +#是否将数据中心的日志加入到redis中 +dataCenterOpenRedis=true +#跨域问题允许 的url Access-Control-Allow-Origin *允许所有,设置成其他url只允许该url.不能设置多个url +target_url=* +#跨域问题 3600:表明在3600秒内,不需要再发送预请求,可以缓存该结果 +ACCESS_CONTROL_MAX_AGE=3600 +##########HTTPCLIENT POOL START################### +#从连接池中获取到连接的最长时间 +http.request.connectionRequestTimeout=500 +#5000 +http.request.connectTimeout=5000 +#数据传输的最长时间 +http.request.socketTimeout=30000 +#提交请求前测试连接是否可用 +http.request.staleConnectionCheckEnabled=true + +#设置连接总数 +http.pool.maxTotal=200 +#设置每个地址的并发数 +http.pool.defaultMaxPerRoute=100 +##########HTTPCLIENT POOL END################### +search.dateformat=yyyy-MM-dd HH:mm:ss +search.eshostandport_A=10.0.6.115:9200 +search.eshostandport_B=10.0.6.115:9200 +search.eshostandport_C=10.0.6.115:9200 + +#search.eshostandport=10.174.196.135:9200 + + +#日志是否从hive中查询 +selFromHive=false + +#是否获取数据中心查询记录的总条数 +isGetHiveCount=false + +#每次获取数据中心多少条数据,咱们在对获取的数据进行分页处理 +everyGetHiveDataNum=10000 + +#oracle数据库有问题不从oracle查询数据,所有日志数据均从数据中心查询 +onlySelFromHive=false + +#\u662F\u5426\u67E5\u8BE2\u795E\u901A\u6570\u636E\u5E93 +isSelectCluster=true + +#用户查询日志超过多少小时去数据中心查询 +dataCenterTime=48 + +#是否开启基础验证 +baseValidate=true + +#是否开启业务验证 +serviceValidate=true + + + +#\u65E5\u5FD7\u5B58\u50A8\u672C\u5730\u65F6\u95F4(\u5355\u4F4D\u5C0F\u65F6) +logLocalTime=48 +#\u5B9E\u65F6\u7EDF\u8BA1\u9ED8\u8BA4\u67E5\u8BE2\u672C\u5730\u4E00\u4E2A\u5C0F\u65F6\u7684\u6570\u636E(\u5355\u4F4D\uFF1A\u5C0F\u65F6) +reportLocalTime=1 + +#\u795E\u901A\u6570\u636E\u5E93\u6700\u65E9\u65E5\u5FD7\u65F6\u95F4(A\u7248\u6BEB\u79D2) +#2017-08-13 10:07:25 +clusterAStartTime=1503504000725 +#\u795E\u901A\u6570\u636E\u5E93\u6700\u65E9\u7ED3\u675F\u65F6\u95F4(B\u7248\u6BEB\u79D2) +#2017-08-13 10:07:25 +clusterBStartTime=1503504000725 +############################################################################################################################################ +#设置配置是否入库 +############################################################################################################################################ +isCommit=true +############################################################################################################################################ +############################################################################################################################################ +httpUrl=http://127.0.0.1:8080/gk/service/cfg/v1/configSources +#use elasticsearch or not# +isUseES=false + + + + + + + +#数据中心A版数据库名称,程序中每次查询时使用的数据库名称 use dbA +jdbc.hive.AName=xa_dfbhit_hive +#数据中心B版数据库名称 +jdbc.hive.BName=xa_z2_mesalog_hive + +maxPageSize=100000 diff --git a/src/main/resources/rebel.xml b/src/main/resources/rebel.xml new file mode 100644 index 0000000..e4808e5 --- /dev/null +++ b/src/main/resources/rebel.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/shouhu/shouhu_nignx.sh b/src/main/resources/shouhu/shouhu_nignx.sh new file mode 100644 index 0000000..0bfaddb --- /dev/null +++ b/src/main/resources/shouhu/shouhu_nignx.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +log_file=/usr/local/nignx/nignx_job.log +echo "/usr/local/nginx/sbin/shouhu_nignx.sh Start At:" >> $log_file +date >> $log_file +#count=1 +while [ 1 -eq 1 ] +do + sleep 30 + if [ `ps -ef | grep nignx | grep -v grep | wc -l` -lt 1 ] + then + echo -n "Down at:" >> $log_file + date >> $log_file + + # --------- start /usr/local/nginx/sbin/nginx + /usr/local/nginx/sbin/nginx + echo "/usr/local/nginx/sbin/nginx Start...." >>$log_file + fi + sleep 1 + + +done \ No newline at end of file diff --git a/src/main/resources/shouhu/shouhu脚本说明.txt b/src/main/resources/shouhu/shouhu脚本说明.txt new file mode 100644 index 0000000..138e54d --- /dev/null +++ b/src/main/resources/shouhu/shouhu脚本说明.txt @@ -0,0 +1,5 @@ +nignx_shouhu.shΪnignxػ̣Ӽһnignx̣ +tomcat_shouhu.shΪtomcatػ̣5Ӽһtomcaṭ +tomcat_resart.shΪtomcatػ̣24Сʱһtomcaṭɱ +tomcat_shouhu.shtomcat_restart.shʹãڵǰؾtomcatڵ¶Բtomcatֻtomcat_shouhu.sh +tomcattomcat_shouhu.shtomcat_restart.sh,Ա֤ؼȺȶԡ \ No newline at end of file diff --git a/src/main/resources/shouhu/tomcat_restart.sh b/src/main/resources/shouhu/tomcat_restart.sh new file mode 100644 index 0000000..50b90ba --- /dev/null +++ b/src/main/resources/shouhu/tomcat_restart.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +log_file=/home/dongxiaooyan/apache-tomcat-7.0.59/logs/tomcat_restart_job.log +tomcat_home=/home/dongxiaooyan/apache-tomcat-7.0.59 +echo "/home/dongxiaooyan/apache-tomcat-7.0.59/bin/shouhu.sh Start At:" >> $log_file +date >> $log_file +#count=1 +while [ 1 -eq 1 ] +do + sleep 86400 + #sleep 30 + if [ `ps -ef | grep apache-tomcat-7.0.59 | grep -v grep | wc -l` -lt 1 ] + then + echo -n "Down at:" >> $log_file + date >> $log_file + + # --------- start apache-tomcat-7.0.59 + $tomcat_home/bin/startup.sh + echo "$tomcat_home Start...." >>$log_file + fi + if [ `ps -ef | grep apache-tomcat-7.0.59 | grep -v grep | wc -l` -eq 1 ] + then + echo -n "apache-tomcat-7.0.59 is running at:" >> $log_file + date >> $log_file + echo "Now will restart apache-tomcat-7.0.59 ...." >> $log_file + # --------- Now will to shutdowd the apache-tomcat-7.0.59 + a=`ps axf|grep 'apache-tomcat-7.0.59'|grep -v grep|awk '{print \$1}'`; + echo "tomcat process id: $a " >> $log_file + kill -9 $a; + echo -n "kille tomcat at:" >> $log_file + date >> $log_file + echo "check apache-tomcat-7.0.59 stat " >> $log_file + if [ `ps -ef | grep apache-tomcat-7.0.59 | grep -v grep | wc -l` -lt 1 ] + then + echo "apache-tomcat-7.0.59 has been killed! " >> $log_file + # --------- Now will to start apache-tomcat-7.0.59 + echo "Now will to start apache-tomcat-7.0.59 ...." >> $log_file + $tomcat_home/bin/startup.sh & + echo "$tomcat_home Start...." >>$log_file + if [ `ps -ef | grep apache-tomcat-7.0.59 | grep -v grep | wc -l` -lt 1 ] + then + echo -n "Start apache-tomcat-7.0.59 faild!" >> $log_file + date >> $log_file + fi + fi + fi + sleep 1 + + +done \ No newline at end of file diff --git a/src/main/resources/shouhu/tomcat_shouhu.sh b/src/main/resources/shouhu/tomcat_shouhu.sh new file mode 100644 index 0000000..3637902 --- /dev/null +++ b/src/main/resources/shouhu/tomcat_shouhu.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +log_file=/home/dongxiaooyan/apache-tomcat-7.0.59/logs/tomcat_job.log +echo "/home/dongxiaooyan/apache-tomcat-7.0.59/bin/shouhu.sh Start At:" >> $log_file +date >> $log_file +#count=1 +while [ 1 -eq 1 ] +do + sleep 300 + if [ `ps -ef | grep apache-tomcat-7.0.59 | grep -v grep | wc -l` -lt 1 ] + then + echo -n "Down at:" >> $log_file + date >> $log_file + + # --------- start apache-tomcat-7.0.59 + /home/dongxiaooyan/apache-tomcat-7.0.59/bin/startup.sh + echo "/home/dongxiaooyan/apache-tomcat-7.0.59 Start...." >>$log_file + fi + sleep 1 + + +done \ No newline at end of file diff --git a/src/main/resources/spring-mvc.xml b/src/main/resources/spring-mvc.xml new file mode 100644 index 0000000..f222c3d --- /dev/null +++ b/src/main/resources/spring-mvc.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + application/json;charset=UTF-8 + + + + + + + + + + + + + + + + + com.nis.domain.BaseEntity + com.nis.supcan.TreeList + com.nis.supcan.Col + com.nis.supcan.Group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + error/403 + error/500 + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/table.properties b/src/main/resources/table.properties new file mode 100644 index 0000000..d565fc9 --- /dev/null +++ b/src/main/resources/table.properties @@ -0,0 +1,84 @@ +#由于数据中心日志表的表名会变动,所以本系统中将日志中心的表名提取到配置文件中方便后期修改 +#\u6570\u636E\u4E2D\u5FC3hive\u6570\u636E\u5E93\u8868\u540D +df_ip_port_log=t_df_ip_port_log +df_http_req_log=t_df_http_req_log_v3 +df_http_res_log=t_df_http_res_log_v3 +df_http_keyword_log=t_df_http_keyword_log + +df_mail_log=t_df_mail_log +df_dns_log=t_df_dns_log +df_ftp_log=t_df_ftp_log +df_pptp_log=t_df_pptp_log +df_l2tp_log=t_df_l2tp_log +df_ipsec_log=t_df_ipsec_log +df_openvpn_log=t_df_openvpn_log +df_ssh_log=t_df_ssh_log +df_ssl_log=t_df_ssl_log +df_tunnel_random_log=t_df_tunnel_random_log + +#\u6570\u636E\u4E2D\u5FC3\u795E\u901A\u6570\u636E\u5E93A\u7248\u8868\u540D +DfIpPortLogA=t_xa_df_ip_port_log_hit_mpp +DfHttpReqLogA=t_xa_df_http_req_log_hit_mpp +DfHttpResLogA=t_xa_df_http_res_log_hit_mpp +DfHttpKeywordLogA=t_xa_df_http_keyword_log_hit_mpp + +DfMailLogA=t_xa_df_mail_log_hit_mpp +DfDnsLogA=t_xa_df_dns_log_hit_mpp +DfFtpLogA=t_xa_df_ftp_log_hit_mpp +DfPptpLogA=t_xa_df_pptp_log_hit_mpp +DfL2tpLogA=t_xa_df_l2tp_log_hit_mpp +DfIpsecLogA=t_xa_df_ipsec_log_hit_mpp +DfOpenvpnLogA=t_xa_df_openvpn_log_hit_mpp +DfSshLogA=t_xa_df_ssh_log_hit_mpp +DfSslLogA=t_xa_df_ssl_log_hit_mpp +DfTunnelRandomLogA=t_xa_df_tunnel_random_log_hit_mpp + +#\u795E\u901A\u6570\u636E\u5E93B\u7248\u8868\u540D +DfIpPortLogB=t_xa_df_ip_port_log_mpp +DfHttpReqLogB=t_xa_df_http_req_log_mpp +DfHttpResLogB=t_xa_df_http_res_log_mpp +DfHttpKeywordLogB=t_xa_df_http_keyword_log_mpp + +DfMailLogB=t_xa_df_mail_log_mpp +DfDnsLogB=t_xa_df_dns_log_mpp +DfFtpLogB=t_xa_df_ftp_log_mpp +DfPptpLogB=t_xa_df_pptp_log_mpp +DfL2tpLogB=t_xa_df_l2tp_log_mpp +DfIpsecLogB=t_xa_df_ipsec_log_mpp +DfOpenvpnLogB=t_xa_df_openvpn_log_mpp +DfSshLogB=t_xa_df_ssh_log_mpp +DfSslLogB=t_xa_df_ssl_log_mpp +DfTunnelRandomLogB=t_xa_df_tunnel_random_log_mpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/ckfinder.xml b/src/main/webapp/WEB-INF/ckfinder.xml new file mode 100644 index 0000000..5fc575d --- /dev/null +++ b/src/main/webapp/WEB-INF/ckfinder.xml @@ -0,0 +1,90 @@ + + true + + /userfiles/ + + + 1024 + 768 + 80 + UTF-8 + false + false + CKFinder_UserRole + true + true + true + html,htm,xml,js + + .* + CVS + + + .* + + + + + %BASE_URL%files/ + %BASE_DIR%files + 5M + 7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip + + + + %BASE_URL%images/ + %BASE_DIR%images + 2M + bmp,gif,jpeg,jpg,png + + + + %BASE_URL%flash/ + %BASE_DIR%flash + 2M + swf,flv + + + + + + * + * + / + false + false + false + false + false + false + false + false + + + + true + %BASE_URL%_thumbs/ + %BASE_DIR%_thumbs + true + 320 + 240 + 80 + + + + imageresize + com.ckfinder.connector.plugins.ImageResize + + + + + + + + fileeditor + com.ckfinder.connector.plugins.FileEditor + + + + com.ckfinder.connector.configuration.ConfigurationPathBuilder + diff --git a/src/main/webapp/WEB-INF/include/header.jsp b/src/main/webapp/WEB-INF/include/header.jsp new file mode 100644 index 0000000..10fffeb --- /dev/null +++ b/src/main/webapp/WEB-INF/include/header.jsp @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/include/taglib.jsp b/src/main/webapp/WEB-INF/include/taglib.jsp new file mode 100644 index 0000000..453003d --- /dev/null +++ b/src/main/webapp/WEB-INF/include/taglib.jsp @@ -0,0 +1,9 @@ +<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> +<%@ taglib prefix="sys" tagdir="/WEB-INF/tags/sys" %> + + diff --git a/src/main/webapp/WEB-INF/sitemesh3.xml b/src/main/webapp/WEB-INF/sitemesh3.xml new file mode 100644 index 0000000..6d06c6d --- /dev/null +++ b/src/main/webapp/WEB-INF/sitemesh3.xml @@ -0,0 +1,36 @@ + + + + + text/html + application/vnd.wap.xhtml+xml + application/xhtml+xml + + + + + + + + + + + + + + + + + /articles/* + /decorators/article.html + /decorators/two-page-layout.html + /decorators/common.html + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/ckeditor.tag b/src/main/webapp/WEB-INF/tags/sys/ckeditor.tag new file mode 100644 index 0000000..cb14c52 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/ckeditor.tag @@ -0,0 +1,13 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="replace" type="java.lang.String" required="true" description="需要替换的textarea编号"%> +<%@ attribute name="uploadPath" type="java.lang.String" required="false" description="文件上传路径,路径后自动添加年份。若不指定,则编辑器不可上传文件"%> +<%@ attribute name="height" type="java.lang.String" required="false" description="编辑器高度"%> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/ckfinder.tag b/src/main/webapp/WEB-INF/tags/sys/ckfinder.tag new file mode 100644 index 0000000..98e66f7 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/ckfinder.tag @@ -0,0 +1,70 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="input" type="java.lang.String" required="true" description="输入框"%> +<%@ attribute name="type" type="java.lang.String" required="true" description="files、images、flash、thumb"%> +<%@ attribute name="uploadPath" type="java.lang.String" required="true" description="打开文件管理的上传路径"%> +<%@ attribute name="selectMultiple" type="java.lang.Boolean" required="false" description="是否允许多选"%> +<%@ attribute name="readonly" type="java.lang.Boolean" required="false" description="是否查看模式"%> +<%@ attribute name="maxWidth" type="java.lang.String" required="false" description="最大宽度"%> +<%@ attribute name="maxHeight" type="java.lang.String" required="false" description="最大高度"%> +
      ${selectMultiple?'添加':'选择'} 清除 + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/iconselect.tag b/src/main/webapp/WEB-INF/tags/sys/iconselect.tag new file mode 100644 index 0000000..76b7493 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/iconselect.tag @@ -0,0 +1,27 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%> +<%@ attribute name="name" type="java.lang.String" required="true" description="输入框名称"%> +<%@ attribute name="value" type="java.lang.String" required="true" description="输入框值"%> +   +选择   + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/message.tag b/src/main/webapp/WEB-INF/tags/sys/message.tag new file mode 100644 index 0000000..1c220ff --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/message.tag @@ -0,0 +1,10 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="content" type="java.lang.String" required="true" description="消息内容"%> +<%@ attribute name="type" type="java.lang.String" description="消息类型:info、success、warning、error、loading"%> + + + +
      ${content}
      + +
      \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/tableSort.tag b/src/main/webapp/WEB-INF/tags/sys/tableSort.tag new file mode 100644 index 0000000..0614921 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/tableSort.tag @@ -0,0 +1,33 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="id" type="java.lang.String" required="true"%> +<%@ attribute name="name" type="java.lang.String" required="true"%> +<%@ attribute name="value" type="java.lang.String" required="true"%> +<%@ attribute name="callback" type="java.lang.String" required="true"%> + +<%-- 使用方法: 1.将本tag写在查询的from里;2.在需要排序th列class上添加:sort-column + 排序字段名;3.后台sql添加排序引用page.orderBy;实例文件:userList.jsp、UserDao.xml --%> + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/treeselect.tag b/src/main/webapp/WEB-INF/tags/sys/treeselect.tag new file mode 100644 index 0000000..6ba12b6 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/treeselect.tag @@ -0,0 +1,115 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%> +<%@ attribute name="name" type="java.lang.String" required="true" description="隐藏域名称(ID)"%> +<%@ attribute name="value" type="java.lang.String" required="true" description="隐藏域值(ID)"%> +<%@ attribute name="labelName" type="java.lang.String" required="true" description="输入框名称(Name)"%> +<%@ attribute name="labelValue" type="java.lang.String" required="true" description="输入框值(Name)"%> +<%@ attribute name="title" type="java.lang.String" required="true" description="选择框标题"%> +<%@ attribute name="url" type="java.lang.String" required="true" description="树结构数据地址"%> +<%@ attribute name="checked" type="java.lang.Boolean" required="false" description="是否显示复选框,如果不需要返回父节点,请设置notAllowSelectParent为true"%> +<%@ attribute name="extId" type="java.lang.String" required="false" description="排除掉的编号(不能选择的编号)"%> +<%@ attribute name="isAll" type="java.lang.Boolean" required="false" description="是否列出全部数据,设置true则不进行数据权限过滤(目前仅对Office有效)"%> +<%@ attribute name="notAllowSelectRoot" type="java.lang.Boolean" required="false" description="不允许选择根节点"%> +<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%> +<%@ attribute name="module" type="java.lang.String" required="false" description="过滤栏目模型(只显示指定模型,仅针对CMS的Category树)"%> +<%@ attribute name="selectScopeModule" type="java.lang.Boolean" required="false" description="选择范围内的模型(控制不能选择公共模型,不能选择本栏目外的模型)(仅针对CMS的Category树)"%> +<%@ attribute name="allowClear" type="java.lang.Boolean" required="false" description="是否允许清除"%> +<%@ attribute name="allowInput" type="java.lang.Boolean" required="false" description="文本框可填写"%> +<%@ attribute name="cssClass" type="java.lang.String" required="false" description="css样式"%> +<%@ attribute name="cssStyle" type="java.lang.String" required="false" description="css样式"%> +<%@ attribute name="smallBtn" type="java.lang.Boolean" required="false" description="缩小按钮显示"%> +<%@ attribute name="hideBtn" type="java.lang.Boolean" required="false" description="是否显示按钮"%> +<%@ attribute name="disabled" type="java.lang.String" required="false" description="是否限制选择,如果限制,设置为disabled"%> +<%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%> +<%@ attribute name="selectDepartment" type="java.lang.String" required="false" description="不允许选择部门,自办部门,转办部门"%> +<%@ attribute name="showParentName" type="java.lang.String" required="false" description="显示父类名称"%> +
      + +      +
      + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/validateCode.tag b/src/main/webapp/WEB-INF/tags/sys/validateCode.tag new file mode 100644 index 0000000..a4580eb --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/sys/validateCode.tag @@ -0,0 +1,9 @@ +<%@ tag language="java" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ attribute name="name" type="java.lang.String" required="true" description="验证码输入框名称"%> +<%@ attribute name="inputCssStyle" type="java.lang.String" required="false" description="验证框样式"%> +<%@ attribute name="imageCssStyle" type="java.lang.String" required="false" description="验证码图片样式"%> +<%@ attribute name="buttonCssStyle" type="java.lang.String" required="false" description="看不清按钮样式"%> + + +看不清 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tlds/c.tld b/src/main/webapp/WEB-INF/tlds/c.tld new file mode 100644 index 0000000..eeef5a7 --- /dev/null +++ b/src/main/webapp/WEB-INF/tlds/c.tld @@ -0,0 +1,563 @@ + + + + + JSTL 1.1 core library + JSTL core + 1.1 + c + http://java.sun.com/jsp/jstl/core + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlCoreTLV + + + + + + Catches any Throwable that occurs in its body and optionally + exposes it. + + catch + org.apache.taglibs.standard.tag.common.core.CatchTag + JSP + + +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + + var + false + false + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + + if + org.apache.taglibs.standard.tag.rt.core.IfTag + JSP + + +The test condition that determines whether or +not the body content should be processed. + + test + true + true + boolean + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + + import + org.apache.taglibs.standard.tag.rt.core.ImportTag + org.apache.taglibs.standard.tei.ImportTEI + JSP + + +The URL of the resource to import. + + url + true + true + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is Reader. + + varReader + false + false + + + +Name of the context when accessing a relative +URL resource that belongs to a foreign +context. + + context + false + true + + + +Character encoding of the content at the input +resource. + + charEncoding + false + true + + + + + + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + + forEach + org.apache.taglibs.standard.tag.rt.core.ForEachTag + org.apache.taglibs.standard.tei.ForEachTEI + JSP + + +Collection of items to iterate over. + + items + false + true + java.lang.Object + + + +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + + begin + false + true + int + + + +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Iterates over tokens, separated by the supplied delimeters + + forTokens + org.apache.taglibs.standard.tag.rt.core.ForTokensTag + JSP + + +String of tokens to iterate over. + + items + true + true + java.lang.String + + + +The set of delimiters (the characters that +separate the tokens in the string). + + delims + true + true + java.lang.String + + + +Iteration begins at the token located at the +specified index. First token has index 0. + + begin + false + true + int + + + +Iteration ends at the token located at the +specified index (inclusive). + + end + false + true + int + + + +Iteration will only process every step tokens +of the string, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Like <%= ... >, but for expressions. + + out + org.apache.taglibs.standard.tag.rt.core.OutTag + JSP + + +Expression to be evaluated. + + value + true + true + + + +Default value if the resulting value is null. + + default + false + true + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + + escapeXml + false + true + + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'import' tag's URL. + + param + org.apache.taglibs.standard.tag.rt.core.ParamTag + JSP + + +Name of the query string parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Redirects to a new URL. + + redirect + org.apache.taglibs.standard.tag.rt.core.RedirectTag + JSP + + +The URL of the resource to redirect to. + + url + false + true + + + +Name of the context when redirecting to a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Removes a scoped variable (from a particular scope, if specified). + + remove + org.apache.taglibs.standard.tag.common.core.RemoveTag + empty + + +Name of the scoped variable to be removed. + + var + true + false + + + +Scope for var. + + scope + false + false + + + + + + Sets the result of an expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.rt.core.SetTag + JSP + + +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + + var + false + false + + + +Expression to be evaluated. + + value + false + true + + + +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + + target + false + true + + + +Name of the property to be set in the target object. + + property + false + true + + + +Scope for var. + + scope + false + false + + + + + + Creates a URL with optional query parameters. + + url + org.apache.taglibs.standard.tag.rt.core.UrlTag + JSP + + +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +URL to be processed. + + value + false + true + + + +Name of the context when specifying a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + + when + org.apache.taglibs.standard.tag.rt.core.WhenTag + JSP + + +The test condition that determines whether or not the +body content should be processed. + + test + true + true + boolean + + + + diff --git a/src/main/webapp/WEB-INF/tlds/fmt.tld b/src/main/webapp/WEB-INF/tlds/fmt.tld new file mode 100644 index 0000000..70bdbc7 --- /dev/null +++ b/src/main/webapp/WEB-INF/tlds/fmt.tld @@ -0,0 +1,671 @@ + + + + + JSTL 1.1 i18n-capable formatting library + JSTL fmt + 1.1 + fmt + http://java.sun.com/jsp/jstl/fmt + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlFmtTLV + + + + + + Sets the request character encoding + + requestEncoding + org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag + empty + + +Name of character encoding to be applied when +decoding request parameters. + + value + false + true + + + + + + Stores the given locale in the locale configuration variable + + setLocale + org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag + empty + + +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + + value + true + true + + + +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + + variant + false + true + + + +Scope of the locale configuration variable. + + scope + false + false + + + + + + Specifies the time zone for any time formatting or parsing actions + nested in its body + + timeZone + org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag + JSP + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + + value + true + true + + + + + + Stores the given time zone in the time zone configuration variable + + setTimeZone + org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag + empty + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + + value + true + true + + + +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + + var + false + false + + + +Scope of var or the time zone configuration +variable. + + scope + false + false + + + + + + Loads a resource bundle to be used by its tag body + + bundle + org.apache.taglibs.standard.tag.rt.fmt.BundleTag + JSP + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + + prefix + false + true + + + + + + Loads a resource bundle and stores it in the named scoped variable or + the bundle configuration variable + + setBundle + org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag + empty + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + + var + false + false + + + +Scope of var or the localization context +configuration variable. + + scope + false + false + + + + + + Maps key to localized message and performs parametric replacement + + message + org.apache.taglibs.standard.tag.rt.fmt.MessageTag + JSP + + +Message key to be looked up. + + key + false + true + + + +Localization context in whose resource +bundle the message key is looked up. + + bundle + false + true + + + +Name of the exported scoped variable +which stores the localized message. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Supplies an argument for parametric replacement to a containing + <message> tag + + param + org.apache.taglibs.standard.tag.rt.fmt.ParamTag + JSP + + +Argument used for parametric replacement. + + value + false + true + + + + + + Formats a numeric value as a number, currency, or percentage + + formatNumber + org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag + JSP + + +Numeric value to be formatted. + + value + false + true + + + +Specifies whether the value is to be +formatted as number, currency, or +percentage. + + type + false + true + + + +Custom formatting pattern. + + pattern + false + true + + + +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + + currencyCode + false + true + + + +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + + currencySymbol + false + true + + + +Specifies whether the formatted output +will contain any grouping separators. + + groupingUsed + false + true + + + +Maximum number of digits in the integer +portion of the formatted output. + + maxIntegerDigits + false + true + + + +Minimum number of digits in the integer +portion of the formatted output. + + minIntegerDigits + false + true + + + +Maximum number of digits in the +fractional portion of the formatted output. + + maxFractionDigits + false + true + + + +Minimum number of digits in the +fractional portion of the formatted output. + + minFractionDigits + false + true + + + +Name of the exported scoped variable +which stores the formatted result as a +String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a number, currency, or percentage + + parseNumber + org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag + JSP + + +String to be parsed. + + value + false + true + + + +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + + type + false + true + + + +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + + pattern + false + true + + + +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + + parseLocale + false + true + + + +Specifies whether just the integer portion of +the given value should be parsed. + + integerOnly + false + true + + + +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Formats a date and/or time using the supplied styles and pattern + + formatDate + org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag + empty + + +Date and/or time to be formatted. + + value + true + true + + + +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + + type + false + true + + + +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + + timeStyle + false + true + + + +Custom formatting style for dates and times. + + pattern + false + true + + + +Time zone in which to represent the formatted +time. + + timeZone + false + true + + + +Name of the exported scoped variable which +stores the formatted result as a String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a date and/or time + + parseDate + org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag + JSP + + +Date string to be parsed. + + value + false + true + + + +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + + type + false + true + + + +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + + timeStyle + false + true + + + +Custom formatting pattern which +determines how the date string is to be +parsed. + + pattern + false + true + + + +Time zone in which to interpret any time +information in the date string. + + timeZone + false + true + + + +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + + parseLocale + false + true + + + +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + diff --git a/src/main/webapp/WEB-INF/tlds/fn.tld b/src/main/webapp/WEB-INF/tlds/fn.tld new file mode 100644 index 0000000..b2a6b30 --- /dev/null +++ b/src/main/webapp/WEB-INF/tlds/fn.tld @@ -0,0 +1,207 @@ + + + + + JSTL 1.1 functions library + JSTL functions + 1.1 + fn + http://java.sun.com/jsp/jstl/functions + + + + Tests if an input string contains the specified substring. + + contains + org.apache.taglibs.standard.functions.Functions + boolean contains(java.lang.String, java.lang.String) + + <c:if test="${fn:contains(name, searchString)}"> + + + + + + Tests if an input string contains the specified substring in a case insensitive way. + + containsIgnoreCase + org.apache.taglibs.standard.functions.Functions + boolean containsIgnoreCase(java.lang.String, java.lang.String) + + <c:if test="${fn:containsIgnoreCase(name, searchString)}"> + + + + + + Tests if an input string ends with the specified suffix. + + endsWith + org.apache.taglibs.standard.functions.Functions + boolean endsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:endsWith(filename, ".txt")}"> + + + + + + Escapes characters that could be interpreted as XML markup. + + escapeXml + org.apache.taglibs.standard.functions.Functions + java.lang.String escapeXml(java.lang.String) + + ${fn:escapeXml(param:info)} + + + + + + Returns the index withing a string of the first occurrence of a specified substring. + + indexOf + org.apache.taglibs.standard.functions.Functions + int indexOf(java.lang.String, java.lang.String) + + ${fn:indexOf(name, "-")} + + + + + + Joins all elements of an array into a string. + + join + org.apache.taglibs.standard.functions.Functions + java.lang.String join(java.lang.String[], java.lang.String) + + ${fn:join(array, ";")} + + + + + + Returns the number of items in a collection, or the number of characters in a string. + + length + org.apache.taglibs.standard.functions.Functions + int length(java.lang.Object) + + You have ${fn:length(shoppingCart.products)} in your shopping cart. + + + + + + Returns a string resulting from replacing in an input string all occurrences + of a "before" string into an "after" substring. + + replace + org.apache.taglibs.standard.functions.Functions + java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) + + ${fn:replace(text, "-", "•")} + + + + + + Splits a string into an array of substrings. + + split + org.apache.taglibs.standard.functions.Functions + java.lang.String[] split(java.lang.String, java.lang.String) + + ${fn:split(customerNames, ";")} + + + + + + Tests if an input string starts with the specified prefix. + + startsWith + org.apache.taglibs.standard.functions.Functions + boolean startsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:startsWith(product.id, "100-")}"> + + + + + + Returns a subset of a string. + + substring + org.apache.taglibs.standard.functions.Functions + java.lang.String substring(java.lang.String, int, int) + + P.O. Box: ${fn:substring(zip, 6, -1)} + + + + + + Returns a subset of a string following a specific substring. + + substringAfter + org.apache.taglibs.standard.functions.Functions + java.lang.String substringAfter(java.lang.String, java.lang.String) + + P.O. Box: ${fn:substringAfter(zip, "-")} + + + + + + Returns a subset of a string before a specific substring. + + substringBefore + org.apache.taglibs.standard.functions.Functions + java.lang.String substringBefore(java.lang.String, java.lang.String) + + Zip (without P.O. Box): ${fn:substringBefore(zip, "-")} + + + + + + Converts all of the characters of a string to lower case. + + toLowerCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toLowerCase(java.lang.String) + + Product name: ${fn.toLowerCase(product.name)} + + + + + + Converts all of the characters of a string to upper case. + + toUpperCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toUpperCase(java.lang.String) + + Product name: ${fn.UpperCase(product.name)} + + + + + + Removes white spaces from both ends of a string. + + trim + org.apache.taglibs.standard.functions.Functions + java.lang.String trim(java.lang.String) + + Name: ${fn.trim(name)} + + + + diff --git a/src/main/webapp/WEB-INF/tlds/fns.tld b/src/main/webapp/WEB-INF/tlds/fns.tld new file mode 100644 index 0000000..d2d0262 --- /dev/null +++ b/src/main/webapp/WEB-INF/tlds/fns.tld @@ -0,0 +1,282 @@ + + + + + JSTL 1.1 functions library + JSTL functions sys + 1.1 + fns + http://java.sun.com/jsp/jstl/functionss + + + + 获取配置 + getStringProperty + com.nis.util.Configurations + java.lang.String getStringProperty(java.lang.String,java.lang.String) + ${getStringProperty(key,defaultValue)} + + + + + + 获取当前用户对象 + getUser + com.nis.web.security.UserUtils + com.nis.domain.SysUser getUser() + ${fns:getUser()} + + + + 根据编码获取用户对象 + getUserById + com.nis.web.security.UserUtils + com.nis.domain.SysUser get(java.lang.String) + ${fns:getUserById(id)} + + + + 获取授权用户信息 + getPrincipal + com.nis.web.security.UserUtils + com.nis.web.security.SystemAuthorizingRealm.Principal getPrincipal() + ${fns:getPrincipal()} + + + + 获取当前用户的菜单对象列表 + getMenuList + com.nis.web.security.UserUtils + java.util.List getMenuList() + ${fns:getMenuList()} + + + + 获取用户的菜单名称 + getMenuNameById + com.nis.web.security.UserUtils + java.lang.String getMenuNameById(java.lang.String) + ${getMenuNameById(id)} + + + + 获取当前用户的菜单树对象列表 + getMenuTreeList + com.nis.web.security.UserUtils + java.util.List getMenuTreeList() + ${fns:getMenuTreeList()} + + + + 获取当前用户的区域对象列表 + getAreaList + com.nis.web.security.UserUtils + java.util.List getAreaList() + ${fns:getAreaList()} + + + + 获取当前用户的部门对象列表 + getOfficeList + com.nis.web.security.UserUtils + java.util.List getOfficeList() + ${fns:getOfficeList()} + + + + 获取当前用户缓存 + getCache + com.nis.web.security.UserUtils + java.lang.Object getCache(java.lang.String, java.lang.Object) + ${fns:getCache(cacheName, defaultValue)} + + + + 获取当前部门的级别信息 + getOfficeDesc + com.nis.web.security.UserUtils + java.lang.String getOfficeDesc(java.lang.Long) + ${fns:getOfficeDesc(deptId)} + + + + + + URL编码 + urlEncode + com.nis.util.Encodes + java.lang.String urlEncode(java.lang.String) + ${fns:urlEncode(part)} + + + URL解码 + urlDecode + com.nis.util.Encodes + java.lang.String urlDecode(java.lang.String) + ${fns:urlDecode(part)} + + + HTML编码 + escapeHtml + com.nis.util.Encodes + java.lang.String escapeHtml(java.lang.String) + ${fns:escapeHtml(html)} + + + HTML解码 + unescapeHtml + com.nis.util.Encodes + java.lang.String unescapeHtml(java.lang.String) + ${fns:unescapeHtml(html)} + + + + + 根据案件状态获取标签颜色样式 + getCaseStateColor + com.nis.util.ProcessUtil + java.lang.String getCaseStateColor(int) + ${fns:getCaseStateColor(caseState)} + + + 根据案件状态判断是否显示办结提醒 + isAlarmDesc + com.nis.util.ProcessUtil + java.lang.String isAlarmDesc(int) + ${fns:isAlarmDesc(caseState)} + + + + + 从后边开始截取字符串 + substringAfterLast + org.apache.commons.lang3.StringUtils + java.lang.String substringAfterLast(java.lang.String, java.lang.String) + ${fns:substringAfterLast(str,separator)} + + + 判断字符串是否以某某开头 + startsWith + org.apache.commons.lang3.StringUtils + boolean startsWith(java.lang.CharSequence, java.lang.CharSequence) + ${fns:startsWith(str,prefix)} + + + 判断字符串是否以某某结尾 + endsWith + org.apache.commons.lang3.StringUtils + boolean endsWith(java.lang.CharSequence, java.lang.CharSequence) + ${fns:endsWith(str,suffix)} + + + 缩写字符串,超过最大宽度用“...”表示 + abbr + com.nis.util.StringUtils + java.lang.String abbr(java.lang.String, int) + ${fns:abbr(str,length)} + + + 替换掉HTML标签 + replaceHtml + com.nis.util.StringUtils + java.lang.String replaceHtml(java.lang.String) + ${fns:replaceHtml(html)} + + + 转换为JS获取对象值,生成三目运算返回结果。 + jsGetVal + com.nis.util.StringUtils + java.lang.String jsGetVal(java.lang.String) + ${fns:jsGetVal('row.user.id')} 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id + + + + + + + 获取字典对象列表 + getDictList + com.nis.util.DictUtils + java.util.List getDictList(java.lang.String) + ${fns:getDictList(key)} + + + + 获取字典标签 + getDictLabel + com.nis.util.DictUtils + java.lang.String getDictLabel(java.lang.String, java.lang.String, java.lang.String) + ${fns:getDictLabel(dictKey, itemCode, defaultValue)} + + + + 获取字典标签 + getDictLabelDefault + com.nis.util.DictUtils + java.lang.String getDictLabel(java.lang.String, java.lang.String) + ${fns:getDictLabel(dictKey, itemCode)} + + + + 获取字典标签(多个) + getDictLabels + com.nis.util.DictUtils + java.lang.String getDictLabels(java.lang.String, java.lang.String, java.lang.String) + ${fns:getDictLabels(dictKey, itemCodes, defaultValue)} + + + + 获取字典值 + getDictCode + com.nis.util.DictUtils + java.lang.String getDictCode(java.lang.String, java.lang.String, java.lang.String) + ${fns:getDictCode(dictKey, itemValue, defaultValue)} + + + + 获取字典值 + getDictCodeDefault + com.nis.util.DictUtils + java.lang.String getDictCode(java.lang.String, java.lang.String) + ${fns:getDictCode(dictKey, itemValue)} + + + + 获取字典对象列表 + getDictListJson + com.nis.util.DictUtils + java.lang.String getDictListJson(java.lang.String) + ${fns:getDictListJson(dictKey)} + + + + + + + 获取当前日期 + getDate + com.nis.util.DateUtils + java.lang.String getDate(java.lang.String) + ${fns:getDate(pattern)} + + + 获取过去的天数 + pastDays + com.nis.util.DateUtils + long pastDays(java.util.Date) + ${fns:pastDays(date)} + + + + + 对象转换JSON字符串 + toJson + com.nis.util.JsonMapper + java.lang.String toJsonString(java.lang.Object) + ${fns:toJson(object)} + + + diff --git a/src/main/webapp/WEB-INF/views/error/400.jsp b/src/main/webapp/WEB-INF/views/error/400.jsp new file mode 100644 index 0000000..a332919 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/error/400.jsp @@ -0,0 +1,67 @@ +<% +response.setStatus(400); + +// 获取异常类 +Throwable ex = Exceptions.getThrowable(request); + +// 编译错误信息 +StringBuilder sb = new StringBuilder("(400)错误信息:\n"); +if (ex != null) { + if (ex instanceof BindException) { + for (ObjectError e : ((BindException)ex).getGlobalErrors()){ + sb.append("☆" + e.getDefaultMessage() + "(" + e.getObjectName() + ")\n"); + } + for (FieldError e : ((BindException)ex).getFieldErrors()){ + sb.append("☆" + e.getDefaultMessage() + "(" + e.getField() + ")\n"); + } + LoggerFactory.getLogger("400.jsp").warn(ex.getMessage(), ex); + }/* else if (ex instanceof ConstraintViolationException) { + for (ConstraintViolation v : ((ConstraintViolationException)ex).getConstraintViolations()) { + sb.append("☆" + v.getMessage() + "(" + v.getPropertyPath() + ")\n"); + } + } */ else { + //sb.append(Exceptions.getStackTraceAsString(ex)); + sb.append("☆" + ex.getMessage()); + } +} else { + sb.append("未知错误.\n\n"); +} + +// 如果是异步请求或是手机端,则直接返回信息 +if (Servlets.isAjaxRequest(request)) { + out.print(sb); +} + +// 输出异常信息页面 +else { +%> +<%@page import="org.springframework.validation.BindException"%> +<%@page import="org.springframework.validation.ObjectError"%> +<%@page import="org.springframework.validation.FieldError"%> +<%@page import="org.slf4j.Logger,org.slf4j.LoggerFactory"%> +<%@page import="com.nis.web.security.Servlets"%> +<%@page import="com.nis.util.Exceptions"%> +<%@page import="com.nis.util.StringUtils"%> +<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%> +<%@include file="/WEB-INF/include/taglib.jsp"%> + + + + 400 - 请求出错 + <%@include file="/WEB-INF/include/header.jsp" %> + + +
      + +
      + <%=StringUtils.toHtml(sb.toString())%>
      +
      + 返回上一页   +

      + +
      + + +<% +} out = pageContext.pushBody(); +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/error/403.jsp b/src/main/webapp/WEB-INF/views/error/403.jsp new file mode 100644 index 0000000..0a2d304 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/error/403.jsp @@ -0,0 +1,45 @@ +<% +response.setStatus(403); + +//获取异常类 +Throwable ex = Exceptions.getThrowable(request); + +// 如果是异步请求或是手机端,则直接返回信息 +if (Servlets.isAjaxRequest(request)) { + if (ex!=null && StringUtils.startsWith(ex.getMessage(), "msg:")){ + out.print(StringUtils.replace(ex.getMessage(), "msg:", "")); + }else{ + out.print("操作权限不足."); + } +} + +//输出异常信息页面 +else { +%> +<%@page import="com.nis.web.security.Servlets"%> +<%@page import="com.nis.util.Exceptions"%> +<%@page import="com.nis.util.StringUtils"%> +<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%> +<%@include file="/WEB-INF/include/taglib.jsp"%> + + + + 403 - 操作权限不足 + <%@include file="/WEB-INF/include/header.jsp" %> + + +
      + + <% + if (ex!=null && StringUtils.startsWith(ex.getMessage(), "msg:")){ + out.print("
      "+StringUtils.replace(ex.getMessage(), "msg:", "")+"

      "); + } + %> + + +
      + + +<% +} out = pageContext.pushBody(); +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/error/404.jsp b/src/main/webapp/WEB-INF/views/error/404.jsp new file mode 100644 index 0000000..2532766 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/error/404.jsp @@ -0,0 +1,32 @@ +<% +response.setStatus(404); + +// 如果是异步请求或是手机端,则直接返回信息 +if (Servlets.isAjaxRequest(request)) { + out.print("页面不存在."); +} + +//输出异常信息页面 +else { +%> +<%@page import="com.nis.web.security.Servlets"%> +<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%> +<%@include file="/WEB-INF/include/taglib.jsp"%> + + + + 404 - 页面不存在 + <%@include file="/WEB-INF/include/header.jsp" %> + + +
      + + + +
      + + +<% +out.print(""); +} out = pageContext.pushBody(); +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/error/500.jsp b/src/main/webapp/WEB-INF/views/error/500.jsp new file mode 100644 index 0000000..1835134 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/error/500.jsp @@ -0,0 +1,59 @@ +<% +response.setStatus(500); + +// 获取异常类 +Throwable ex = Exceptions.getThrowable(request); +if (ex != null){ + LoggerFactory.getLogger("500.jsp").error(ex.getMessage(), ex); +} + +// 编译错误信息 +StringBuilder sb = new StringBuilder("错误信息:\n"); +if (ex != null) { + sb.append(Exceptions.getStackTraceAsString(ex)); +} else { + sb.append("未知错误.\n\n"); +} + +// 如果是异步请求或是手机端,则直接返回信息 +if (Servlets.isAjaxRequest(request)) { + out.print(sb); +} + +// 输出异常信息页面 +else { +%> +<%@page import="org.slf4j.Logger,org.slf4j.LoggerFactory"%> +<%@page import="com.nis.web.security.Servlets"%> +<%@page import="com.nis.util.Exceptions"%> +<%@page import="com.nis.util.StringUtils"%> +<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%> +<%@include file="/WEB-INF/include/taglib.jsp"%> + + + + 500 - 系统内部错误 + <%@include file="/WEB-INF/include/header.jsp" %> + + +
      + +
      + 错误信息:<%=ex==null?"未知错误.":StringUtils.toHtml(ex.getMessage())%>

      + 请点击“查看详细信息”按钮,将详细错误信息发送给系统管理员,谢谢!

      + 返回上一页   + 查看详细信息 +
      +
      + <%=StringUtils.toHtml(sb.toString())%>
      + 返回上一页   + 隐藏详细信息 +

      +
      + +
      + + +<% +} out = pageContext.pushBody(); +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/home.jsp b/src/main/webapp/WEB-INF/views/home.jsp new file mode 100644 index 0000000..feaa89b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/home.jsp @@ -0,0 +1,610 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + + + + + +${fns:getStringProperty('productName','NIS')} + + + + + + + + + +
      + + + + + + + + + +
      +
      +
      + + + + + + + + + + +
      + +
       
      + + + +
      + + + +
      + +
      + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/home1.jsp b/src/main/webapp/WEB-INF/views/home1.jsp new file mode 100644 index 0000000..e1661fa --- /dev/null +++ b/src/main/webapp/WEB-INF/views/home1.jsp @@ -0,0 +1,647 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + + + + + +${fns:getStringProperty('productName','NIS')} + + + + + + + + +
      + + + + +
      +
      +
      + + + + + + +
      + +
       
      + + + +
      + + + +
      + +
      + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/home2.jsp b/src/main/webapp/WEB-INF/views/home2.jsp new file mode 100644 index 0000000..0236567 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/home2.jsp @@ -0,0 +1,472 @@ +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + +${fns:getStringProperty('productName','NIS')} + + + + + +
      +
      +

      Colors:

      + +
      +
      +

      Backgrounds:

      +
      + + + + + + +
      +
      +
      +

      Layout:

      +
      + + +
      +
      +
      +

      Sidebar position:

      +
      + + +
      +
      +
      +

      Show top menu on:

      +
      + + +
      +
      + +
      + Show CSS + Reset +
      +
      +
        + + +
      +
      +
      + + +
      + +
      + + + +
      + + +
      + + +
      + +
      + + + Sidebar switch + + + + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/layouts/blank.jsp b/src/main/webapp/WEB-INF/views/layouts/blank.jsp new file mode 100644 index 0000000..a619a55 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/layouts/blank.jsp @@ -0,0 +1,22 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + <sitemesh:write property="title"/> + <%@include file="/WEB-INF/include/header.jsp" %> + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/layouts/decorator.jsp b/src/main/webapp/WEB-INF/views/layouts/decorator.jsp new file mode 100644 index 0000000..d10da04 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/layouts/decorator.jsp @@ -0,0 +1,15 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + + +<sitemesh:write property="title"/> +<%@include file="/WEB-INF/include/header.jsp" %> + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp new file mode 100644 index 0000000..11367bf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,108 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page import="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + + + + + + + + + + + ${fns:getStringProperty('productName','NIS')}-登录平台 + + +
      +
      +
      +
      + +
      + + + +
      + + +
      + Copyright © 2015-${fns:getStringProperty('copyrightYear','2015')} ${fns:getStringProperty('productName','NIS')} - Powered By NIS ${fns:getStringProperty('version','1.0.0')} +
      + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/login1.jsp b/src/main/webapp/WEB-INF/views/login1.jsp new file mode 100644 index 0000000..62f262c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login1.jsp @@ -0,0 +1,141 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page import="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + + + + + + <%@include file="/WEB-INF/include/header.jsp" %> + 登录平台 + + + + + +
      +
      + +
      +
      +

      ${fns:getStringProperty('productName','NIS')}

      + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/success.jsp b/src/main/webapp/WEB-INF/views/success.jsp new file mode 100644 index 0000000..222420a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/success.jsp @@ -0,0 +1,19 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +

      success!

      +

      time:${requestScope.time }

      +

      names:${requestScope.names }

      + +

      session object:${sessionScope.userObject }

      +

      session name:${sessionScope.username }

      +

      权限树数据:${menuList }

      + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/areaForm.jsp b/src/main/webapp/WEB-INF/views/sys/areaForm.jsp new file mode 100644 index 0000000..1d954b7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/areaForm.jsp @@ -0,0 +1,91 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 区域管理 + + + +
      + + + +
      + +
      + +
      +
      +
      + +
      + + * +
      +
      +
      + +
      + +
      +
      +
      + +
      + + + +
      +
      + +
      + +
      + +
      +
      + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      +
      +   + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/areaIndex.jsp b/src/main/webapp/WEB-INF/views/sys/areaIndex.jsp new file mode 100644 index 0000000..ba39561 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/areaIndex.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +区域管理 + + + + + + +
      +
      + +
      +
      +
       
      + +
      + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/areaList.jsp b/src/main/webapp/WEB-INF/views/sys/areaList.jsp new file mode 100644 index 0000000..40e20f2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/areaList.jsp @@ -0,0 +1,73 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 区域管理 + + + + + + + + + + +
      区域名称区域编码区域类型经度纬度备注操作
      + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/dictForm.jsp b/src/main/webapp/WEB-INF/views/sys/dictForm.jsp new file mode 100644 index 0000000..b960fc2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/dictForm.jsp @@ -0,0 +1,232 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 用户管理 + + + + +
      + + + + + + + + + + +
      + + 提交配置出现问题,请看错误提示! +
      + +
      + + + 表单验证成功! +
      + +
      + +
      + + * +
      +
      + +
      + +
      + + * +
      +
      + +
      + + + +
      + + 添加词条 + + * +
      + +
      + + + +

      + 标识 readonly="readonly"/> + 值 readonly="readonly"/> + 描述 readonly="readonly"/> + 可用 + + 可维护 + + + + + +

      +
      + +
      + +
      + +
      + +
      + +
      +
      + +
      + +
      + +   + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/dictList.jsp b/src/main/webapp/WEB-INF/views/sys/dictList.jsp new file mode 100644 index 0000000..e3c4678 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/dictList.jsp @@ -0,0 +1,284 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +字典管理 + + + + + + + + + + + + +
      + + + + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/> + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>   +       +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      模块名字典标识创建时间描述修改记录操作
      ${dict.moduleName}${dict.mark}${fns:abbr(dict.remark,15)} + + + +
      + 操作 + + +
      + +
      + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/ipLocation.jsp b/src/main/webapp/WEB-INF/views/sys/ipLocation.jsp new file mode 100644 index 0000000..b0b7484 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/ipLocation.jsp @@ -0,0 +1,49 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + ip定位 + + + + + + + +
      + +
      + + +
      +
      + + +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/iplocationResult.jsp b/src/main/webapp/WEB-INF/views/sys/iplocationResult.jsp new file mode 100644 index 0000000..148eeb9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/iplocationResult.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/logList.jsp b/src/main/webapp/WEB-INF/views/sys/logList.jsp new file mode 100644 index 0000000..7c2672a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/logList.jsp @@ -0,0 +1,60 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 日志管理 + + + + +<%--
    1. 日志列表
    2. --%> + + + + +
      + + + +
      + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/> + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>   +   +       +
      +
      + + + + <%request.setAttribute("strEnter", "\n");request.setAttribute("strTab", "\t");%> + + + + + + + + + + + + + + +
      操作菜单操作用户URI提交方式操作者IP操作时间
      ${log.title}${log.createBy}${log.requestUri}${log.method}${log.remoteAddr}
      +<%-- 用户代理: ${log.userAgent}
      --%> +<%-- 提交参数: ${fns:escapeHtml(log.params)}
      --%> + 异常信息:
      + ${fn:replace(fn:replace(fns:escapeHtml(log.exception), strEnter, '
      '), strTab, '    ')}
      + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/menuForm.jsp b/src/main/webapp/WEB-INF/views/sys/menuForm.jsp new file mode 100644 index 0000000..e6cc102 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/menuForm.jsp @@ -0,0 +1,102 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 菜单管理 + + + +
      + + + +
      + +
      + +
      +
      +
      + +
      + + * +
      +
      +
      + +
      + + 点击菜单跳转的页面 +
      +
      +
      + +
      + + 链接地址打开的目标窗口,默认:mainFrame +
      +
      +
      + +
      + +
      +
      +
      + +
      + + 排列顺序,升序。 +
      +
      +
      + +
      + + 该菜单或操作是否显示到系统菜单中 +
      +
      +
      + +
      + + 控制器中定义的权限标识,如:@RequiresPermissions("权限标识") +
      +
      +
      + +
      + +
      +
      +
      +   + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/menuList.jsp b/src/main/webapp/WEB-INF/views/sys/menuList.jsp new file mode 100644 index 0000000..44bf973 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/menuList.jsp @@ -0,0 +1,56 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 菜单管理 + + + + + + + + +
      + + + + + + + + + + + + +
      名称链接排序可见权限标识操作
      ${menu.name}${fns:abbr(menu.href,30)} + + + + + ${menu.sort} + + ${menu.isShow eq '1'?'显示':'隐藏'}${fns:abbr(menu.permission,30)} + 修改 + 删除 + 添加下级菜单 +
      +
      + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/officeForm.jsp b/src/main/webapp/WEB-INF/views/sys/officeForm.jsp new file mode 100644 index 0000000..a874482 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/officeForm.jsp @@ -0,0 +1,170 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 机构管理 + + + +
      + + + +
      + +
      + +
      +
      +
      + +
      + + * +
      +
      +
      + +
      + + * +
      +
      +
      + +
      + +
      +
      +
      + +
      + + + +
      +
      +
      + +
      + + + +
      +
      +
      + +
      + + + +
      +
      +
      + +
      + + + + “是”代表此账号允许登陆,“否”则表示此账号不允许登陆 +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      +   + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/officeIndex.jsp b/src/main/webapp/WEB-INF/views/sys/officeIndex.jsp new file mode 100644 index 0000000..ecb70e8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/officeIndex.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +机构管理 + + + + + + +
      +
      + +
      +
      +
       
      + +
      + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/officeList.jsp b/src/main/webapp/WEB-INF/views/sys/officeList.jsp new file mode 100644 index 0000000..a3b12b4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/officeList.jsp @@ -0,0 +1,81 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + +机构管理 + + + + + + + + + + + +
      机构名称归属区域机构编码所属级别机构类型机构职责分类备注操作
      + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/purposeForm.jsp b/src/main/webapp/WEB-INF/views/sys/purposeForm.jsp new file mode 100644 index 0000000..2d90a58 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/purposeForm.jsp @@ -0,0 +1,114 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 信访目的管理 + + + +
      + + + + +
      + +
      + +
      + +
      +
      +
      + +
      + +
      + ${parentName} +
      +
      +
      +
      + +
      + + * +
      +
      + + + + +
      + +
      + + +
      +
      + +
      ${createTime}
      +
      +
      +
      +
      + +
      + +
      + + +
      +
      + +
      + +   + + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/purposeIndex.jsp b/src/main/webapp/WEB-INF/views/sys/purposeIndex.jsp new file mode 100644 index 0000000..24bb1ec --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/purposeIndex.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +机构管理 + + + + + + +
      +
      + +
      +
      +
       
      + +
      + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/purposeList.jsp b/src/main/webapp/WEB-INF/views/sys/purposeList.jsp new file mode 100644 index 0000000..8894806 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/purposeList.jsp @@ -0,0 +1,80 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + +机构管理 + + + + + + + + + + + + + + + + + + + + +
      信访名称备注操作
      + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/roleAssign.jsp b/src/main/webapp/WEB-INF/views/sys/roleAssign.jsp new file mode 100644 index 0000000..94e2aea --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/roleAssign.jsp @@ -0,0 +1,83 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 分配角色 + + + + + + + + + + + + + + + + + + +
      登录账户姓名归属部门操作
      ${user.loginId}${user.name}${user.office.name} + 移除 +
      + + diff --git a/src/main/webapp/WEB-INF/views/sys/roleForm.jsp b/src/main/webapp/WEB-INF/views/sys/roleForm.jsp new file mode 100644 index 0000000..85c1d78 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/roleForm.jsp @@ -0,0 +1,130 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 角色管理 + + + + + + +
      + + + + +
      + +
      + + + * +
      +
      + +
      + +
      <%-- + + + 工作流组用户组类型(security-role:管理员、assignment:可进行任务分配、user:普通用户) --%> + + 任务分配 + 管理角色 + 普通角色 + + + 工作流组用户组类型(任务分配:assignment、管理角色:security-role、普通角色:user) +
      +
      + + +
      + +
      + + + + 特殊情况下,设置为“按明细设置”,可进行跨机构授权 +
      +
      +
      + +
      + + +
      +
      +
      + +
      + +
      +
      +
      +   + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/roleList.jsp b/src/main/webapp/WEB-INF/views/sys/roleList.jsp new file mode 100644 index 0000000..84ab1de --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/roleList.jsp @@ -0,0 +1,29 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 角色管理 + + + + + + + + + + + + + + +
      角色名称数据范围描述操作
      ${role.name}${fns:getDictLabel('SYS_DATA_SCOPE',role.dataScope,'无')}${fns:abbr(role.remark,30)} + 分配 + 修改 + 删除 +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/selectUserToRole.jsp b/src/main/webapp/WEB-INF/views/sys/selectUserToRole.jsp new file mode 100644 index 0000000..fe6a268 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/selectUserToRole.jsp @@ -0,0 +1,117 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 分配角色 + + + + + +
      +
      +

      所在部门:

      +
      +
      +
      +

      待选人员:

      +
      +
      +
      +

      已选人员:

      +
      +
      +
      + + diff --git a/src/main/webapp/WEB-INF/views/sys/sysIndex.jsp b/src/main/webapp/WEB-INF/views/sys/sysIndex.jsp new file mode 100644 index 0000000..dbbb6fa --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/sysIndex.jsp @@ -0,0 +1,64 @@ +<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> + + + + +SpringMVC Test + + + + + + testJSON + +
      + testMVC + +
      + +
      + + testparams + + testANtpath1 + testANtpath1 +
      + testPathVariable + testRequestParam + + +
      + username:
      + passowrd:
      + email:
      + age:
      + + city:
      + province:
      + +
      +
      + +
      + + testModelAndView + + testMap + + testSessionAttribute + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/tagIconselect.jsp b/src/main/webapp/WEB-INF/views/sys/tagIconselect.jsp new file mode 100644 index 0000000..fe4f15a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/tagIconselect.jsp @@ -0,0 +1,360 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 图标选择 + + + + + +
      + + + +
        +
      • icon-adjust
      • +
      • icon-asterisk
      • +
      • icon-ban-circle
      • +
      • icon-bar-chart
      • +
      • icon-barcode
      • +
      • icon-beaker
      • +
      • icon-beer
      • +
      • icon-bell
      • +
      • icon-bell-alt
      • +
      • icon-bolt
      • +
      • icon-book
      • +
      • icon-bookmark
      • +
      • icon-bookmark-empty
      • +
      • icon-briefcase
      • +
      • icon-bullhorn
      • +
      • icon-calendar
      • +
      • icon-camera
      • +
      • icon-camera-retro
      • +
      • icon-certificate
      • +
      • icon-check
      • +
      • icon-check-empty
      • +
      • icon-circle
      • +
      • icon-circle-blank
      • +
      • icon-cloud
      • +
      • icon-cloud-download
      • +
      • icon-cloud-upload
      • +
      • icon-coffee
      • +
      • icon-cog
      • +
      • icon-cogs
      • +
      • icon-comment
      • +
      • icon-comment-alt
      • +
      • icon-comments
      • +
      • icon-comments-alt
      • +
      • icon-credit-card
      • +
      • icon-dashboard
      • +
      • icon-desktop
      • +
      • icon-download
      • +
      • icon-download-alt
      • + + +
      • icon-edit
      • +
      • icon-envelope
      • +
      • icon-envelope-alt
      • +
      • icon-exchange
      • +
      • icon-exclamation-sign
      • +
      • icon-external-link
      • +
      • icon-eye-close
      • +
      • icon-eye-open
      • +
      • icon-facetime-video
      • +
      • icon-fighter-jet
      • +
      • icon-film
      • +
      • icon-filter
      • +
      • icon-fire
      • +
      • icon-flag
      • +
      • icon-folder-close
      • +
      • icon-folder-open
      • +
      • icon-folder-close-alt
      • +
      • icon-folder-open-alt
      • +
      • icon-food
      • +
      • icon-gift
      • +
      • icon-glass
      • +
      • icon-globe
      • +
      • icon-group
      • +
      • icon-hdd
      • +
      • icon-headphones
      • +
      • icon-heart
      • +
      • icon-heart-empty
      • +
      • icon-home
      • +
      • icon-inbox
      • +
      • icon-info-sign
      • +
      • icon-key
      • +
      • icon-leaf
      • +
      • icon-laptop
      • +
      • icon-legal
      • +
      • icon-lemon
      • +
      • icon-lightbulb
      • +
      • icon-lock
      • +
      • icon-unlock
      • + + +
      • icon-magic
      • +
      • icon-magnet
      • +
      • icon-map-marker
      • +
      • icon-minus
      • +
      • icon-minus-sign
      • +
      • icon-mobile-phone
      • +
      • icon-money
      • +
      • icon-move
      • +
      • icon-music
      • +
      • icon-off
      • +
      • icon-ok
      • +
      • icon-ok-circle
      • +
      • icon-ok-sign
      • +
      • icon-pencil
      • +
      • icon-picture
      • +
      • icon-plane
      • +
      • icon-plus
      • +
      • icon-plus-sign
      • +
      • icon-print
      • +
      • icon-pushpin
      • +
      • icon-qrcode
      • +
      • icon-question-sign
      • +
      • icon-quote-left
      • +
      • icon-quote-right
      • +
      • icon-random
      • +
      • icon-refresh
      • +
      • icon-remove
      • +
      • icon-remove-circle
      • +
      • icon-remove-sign
      • +
      • icon-reorder
      • +
      • icon-reply
      • +
      • icon-resize-horizontal
      • +
      • icon-resize-vertical
      • +
      • icon-retweet
      • +
      • icon-road
      • +
      • icon-rss
      • +
      • icon-screenshot
      • +
      • icon-search
      • + + +
      • icon-share
      • +
      • icon-share-alt
      • +
      • icon-shopping-cart
      • +
      • icon-signal
      • +
      • icon-signin
      • +
      • icon-signout
      • +
      • icon-sitemap
      • +
      • icon-sort
      • +
      • icon-sort-down
      • +
      • icon-sort-up
      • +
      • icon-spinner
      • +
      • icon-star
      • +
      • icon-star-empty
      • +
      • icon-star-half
      • +
      • icon-tablet
      • +
      • icon-tag
      • +
      • icon-tags
      • +
      • icon-tasks
      • +
      • icon-thumbs-down
      • +
      • icon-thumbs-up
      • +
      • icon-time
      • +
      • icon-tint
      • +
      • icon-trash
      • +
      • icon-trophy
      • +
      • icon-truck
      • +
      • icon-umbrella
      • +
      • icon-upload
      • +
      • icon-upload-alt
      • +
      • icon-user
      • +
      • icon-user-md
      • +
      • icon-volume-off
      • +
      • icon-volume-down
      • +
      • icon-volume-up
      • +
      • icon-warning-sign
      • +
      • icon-wrench
      • +
      • icon-zoom-in
      • +
      • icon-zoom-out
      • +
      + + + + +
        +
      • icon-file
      • +
      • icon-file-alt
      • +
      • icon-cut
      • +
      • icon-copy
      • +
      • icon-paste
      • +
      • icon-save
      • +
      • icon-undo
      • +
      • icon-repeat
      • + + +
      • icon-text-height
      • +
      • icon-text-width
      • +
      • icon-align-left
      • +
      • icon-align-center
      • +
      • icon-align-right
      • +
      • icon-align-justify
      • +
      • icon-indent-left
      • +
      • icon-indent-right
      • + + +
      • icon-font
      • +
      • icon-bold
      • +
      • icon-italic
      • +
      • icon-strikethrough
      • +
      • icon-underline
      • +
      • icon-link
      • +
      • icon-paper-clip
      • +
      • icon-columns
      • + + +
      • icon-table
      • +
      • icon-th-large
      • +
      • icon-th
      • +
      • icon-th-list
      • +
      • icon-list
      • +
      • icon-list-ol
      • +
      • icon-list-ul
      • +
      • icon-list-alt
      • +
      + + + +
        +
      • icon-angle-left
      • +
      • icon-angle-right
      • +
      • icon-angle-up
      • +
      • icon-angle-down
      • +
      • icon-arrow-down
      • +
      • icon-arrow-left
      • +
      • icon-arrow-right
      • +
      • icon-arrow-up
      • + + +
      • icon-caret-down
      • +
      • icon-caret-left
      • +
      • icon-caret-right
      • +
      • icon-caret-up
      • +
      • icon-chevron-down
      • +
      • icon-chevron-left
      • +
      • icon-chevron-right
      • +
      • icon-chevron-up
      • + + +
      • icon-circle-arrow-down
      • +
      • icon-circle-arrow-left
      • +
      • icon-circle-arrow-right
      • +
      • icon-circle-arrow-up
      • +
      • icon-double-angle-left
      • +
      • icon-double-angle-right
      • +
      • icon-double-angle-up
      • +
      • icon-double-angle-down
      • + + +
      • icon-hand-down
      • +
      • icon-hand-left
      • +
      • icon-hand-right
      • +
      • icon-hand-up
      • +
      • icon-circle
      • +
      • icon-circle-blank
      • +
      + + + + +
        +
      • icon-play-circle
      • +
      • icon-play
      • +
      • icon-pause
      • +
      • icon-stop
      • + + +
      • icon-step-backward
      • +
      • icon-fast-backward
      • +
      • icon-backward
      • +
      • icon-forward
      • + + +
      • icon-fast-forward
      • +
      • icon-step-forward
      • +
      • icon-eject
      • + + +
      • icon-fullscreen
      • +
      • icon-resize-full
      • +
      • icon-resize-small
      • +
      + + + + +
        +
      • icon-phone
      • +
      • icon-phone-sign
      • +
      • icon-facebook
      • +
      • icon-facebook-sign
      • + + +
      • icon-twitter
      • +
      • icon-twitter-sign
      • +
      • icon-github
      • +
      • icon-github-alt
      • + + +
      • icon-github-sign
      • +
      • icon-linkedin
      • +
      • icon-linkedin-sign
      • +
      • icon-pinterest
      • + + +
      • icon-pinterest-sign
      • +
      • icon-google-plus
      • +
      • icon-google-plus-sign
      • +
      • icon-sign-blank
      • +
      + + + + +
        +
      • icon-ambulance
      • +
      • icon-beaker
      • + + +
      • icon-h-sign
      • +
      • icon-hospital
      • + + +
      • icon-medkit
      • +
      • icon-plus-sign-alt
      • + + +
      • icon-stethoscope
      • +
      • icon-user-md
      • +
      +

      +
      + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp b/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp new file mode 100644 index 0000000..cdf7550 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp @@ -0,0 +1,197 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + 数据选择 + + + + + + + +
      + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/toDoTask.jsp b/src/main/webapp/WEB-INF/views/sys/toDoTask.jsp new file mode 100644 index 0000000..2b4d865 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/toDoTask.jsp @@ -0,0 +1,190 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 待办事项 + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/userInfo.jsp b/src/main/webapp/WEB-INF/views/sys/userInfo.jsp new file mode 100644 index 0000000..11299b4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/userInfo.jsp @@ -0,0 +1,75 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 个人信息 + + + +
      + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      +
      +
      + +
      +
      +
      + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/userList.jsp b/src/main/webapp/WEB-INF/views/sys/userList.jsp new file mode 100644 index 0000000..d947c51 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/userList.jsp @@ -0,0 +1,99 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +用户管理 + + + +
      + +
      + + + + + + + + + +
        +
      • +
      • +
      • +
      • +
      • + +
      • + + + +
      • + +
      • + +
      +
      + + + <%-- --%> + + + + + + + + + + + + + + + +
      所属公司所属部门姓名身份标识邮箱创建时间角色操作
      ${user.company.name}${fns:getOfficeDesc(user.office.id)}${user.loginId}${user.name}${user.identity eq 1 ?'信访办':'办理人员'}${user.email} + 修改 + 删除 +
      + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sys/userModifyPwd.jsp b/src/main/webapp/WEB-INF/views/sys/userModifyPwd.jsp new file mode 100644 index 0000000..77070e9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/userModifyPwd.jsp @@ -0,0 +1,66 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + 修改密码 + + + +
      + + + +
      + +
      + + * +
      +
      +
      + +
      + + * +
      +
      +
      + +
      + + * +
      +
      +
      + +
      +
      + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..5b58302 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,225 @@ + + + + 30 + + + + contextConfigLocation + classpath:applicationContext*.xml + + + + + org.springframework.web.context.ContextLoaderListener + + + + + org.springframework.web.context.request.RequestContextListener + + + + characterEncodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + forceEncoding + true + + + + characterEncodingFilter + /* + + + + + shiroFilter + org.springframework.web.filter.DelegatingFilterProxy + + targetFilterLifecyle + true + + + + + shiroFilter + /* + + + + + sitemesh + org.sitemesh.config.ConfigurableSiteMeshFilter + + + + sitemesh + /nis/* + + + corsFilter + com.nis.filter.CORSFilter + + + corsFilter + /* + + + + + + DispatcherServlet + + org.springframework.web.servlet.DispatcherServlet + + + contextConfigLocation + classpath:spring-mvc*.xml + + 1 + + + + DispatcherServlet + / + + + + + + + org.springframework.web.util.Log4jConfigListener + + + + + + + webAppRootKey + nis.root + + + + + + + + + + CKFinderConnectorServlet + com.nis.web.controller.CKFinderConnectorServlet + + XMLConfig + /WEB-INF/ckfinder.xml + + + debug + false + + + configuration + com.nis.web.controller.CKFinderConfig + + 1 + + + CKFinderConnectorServlet + /static/ckfinder/core/connector/java/connector.java + + + FileUploadFilter + com.ckfinder.connector.FileUploadFilter + + sessionCookieName + JSESSIONID + + + sessionParameterName + jsessionid + + + + FileUploadFilter + /static/ckfinder/core/connector/java/connector.java + + + + + default + *.jpg + + + default + *.gif + + + default + *.png + + + default + *.js + + + default + *.css + + + + + 500 + /WEB-INF/views/error/500.jsp + + + 404 + /WEB-INF/views/error/404.jsp + + + + + + com.nis.listener.SystemConfigListener + + + + + + + + + + + /jstl/c + /WEB-INF/tlds/c.tld + + + /jstl/fn + /WEB-INF/tlds/fn.tld + + + /jstl/fmt + /WEB-INF/tlds/fmt.tld + + + \ No newline at end of file diff --git a/src/main/webapp/sql/201601_01.sql b/src/main/webapp/sql/201601_01.sql new file mode 100644 index 0000000..82abf0e --- /dev/null +++ b/src/main/webapp/sql/201601_01.sql @@ -0,0 +1,3 @@ +--升级准备-- +--1.同步角色、权限、组织结构信息表的数据 +--2.增加用户列:单位id,ENTITY_ID \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/WdatePicker.js b/src/main/webapp/static/My97DatePicker/WdatePicker.js new file mode 100644 index 0000000..687bb40 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/WdatePicker.js @@ -0,0 +1,44 @@ +/* + * My97 DatePicker 4.8 Beta2 + * License: http://www.my97.net/dp/license.asp + */ +var $dp,WdatePicker;(function(){var $={ +$langList:[{name:"en",charset:"UTF-8"},{name:"zh-cn",charset:"UTF-8"},{name:"zh-tw",charset:"UTF-8"}], +$skinList:[ + {name:"default",charset:"gb2312"}, + {name:"whyGreen",charset:"gb2312"}, + {name:"twoer",charset:"gb2312"} +], +$wdate:true, +$crossFrame:true, +$preLoad:false, +doubleCalendar:false, +enableKeyboard:true, +enableInputMask:true, +autoUpdateOnChanged:null, +weekMethod:"ISO8601", +position:{}, +lang:"auto", +skin:"twoer", +dateFmt:"yyyy-MM-dd", +realDateFmt:"yyyy-MM-dd", +realTimeFmt:"HH:mm:ss", +realFullFmt:"%Date %Time", +minDate:"1900-01-01 00:00:00", +maxDate:"2099-12-31 23:59:59", +startDate:"", +alwaysUseStartDate:false, +yearOffset:1911, +firstDayOfWeek:0, +isShowWeek:false, +highLineWeekDay:true, +isShowClear:true, +isShowToday:true, +isShowOK:true, +isShowOthers:true, +readOnly:false, +errDealMode:0, +autoPickDate:null, +qsEnabled:true, +autoShowQS:false, +specialDates:null,specialDays:null,disabledDates:null,disabledDays:null,opposite:false,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=T;var X=window,S={innerHTML:""},M="document",H="documentElement",C="getElementsByTagName",U,A,R,G,a,W=navigator.appName;if(W=="Microsoft Internet Explorer")R=true;else if(W=="Opera")a=true;else G=true;A=J();if($.$wdate)K(A+"skin/WdatePicker.css");U=X;if($.$crossFrame){try{while(U.parent&&U.parent[M]!=U[M]&&U.parent[M][C]("frameset").length==0)U=U.parent}catch(N){}}if(!U.$dp)U.$dp={ff:G,ie:R,opera:a,status:0,defMinDate:$.minDate,defMaxDate:$.maxDate};B();if($.$preLoad&&$dp.status==0)E(X,"onload",function(){T(null,true)});if(!X[M].docMD){E(X[M],"onmousedown",D);X[M].docMD=true}if(!U[M].docMD){E(U[M],"onmousedown",D);U[M].docMD=true}E(X,"onunload",function(){if($dp.dd)O($dp.dd,"none")});function B(){U.$dp=U.$dp||{};obj={$:function($){return(typeof $=="string")?X[M].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=U[M].getElementsByTagName("div"),$=100000;for(var B=0;B$)$=_}this.dd.style.zIndex=$+2;O(this.dd,"block")},hide:function(){O(this.dd,"none")},attachEvent:E};for(var $ in obj)U.$dp[$]=obj[$];$dp=U.$dp}function E(A,$,_){if(R)A.attachEvent($,_);else if(_){var B=$.replace(/on/,"");_._ieEmuEventHandler=function($){return _($)};A.addEventListener(B,_._ieEmuEventHandler,false)}}function J(){var _,A,$=X[M][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=X[M][C]("HEAD").item(0),_=X[M].createElement("link");if(D){_.href=A;_.rel="stylesheet";_.type="text/css";if($)_.title=$;if(B)_.charset=B;D.appendChild(_)}}function F($){$=$||U;var A=0,_=0;while($!=U){var D=$.parent[M][C]("iframe");for(var F=0;F_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{"top":B.scrollTop,"left":B.scrollLeft}}function D($){var _=$?($.srcElement||$.target):null;try{if($dp.cal&&!$dp.eCont&&$dp.dd&&_!=$dp.el&&$dp.dd.style.display=="block")$dp.cal.close()}catch($){}}function Y(){$dp.status=2}var P,_;function T(N,F){$dp.win=X;B();N=N||{};for(var K in $)if(K.substring(0,1)!="$"&&N[K]===undefined)N[K]=$[K];if(F){if(!L()){_=_||setInterval(function(){if(U[M].readyState=="complete")clearInterval(_);T(null,true)},50);return}if($dp.status==0){$dp.status=1;N.el=S;I(N,true)}else return}else if(N.eCont){N.eCont=$dp.$(N.eCont);N.el=S;N.autoPickDate=true;N.qsEnabled=false;I(N)}else{if($.$preLoad&&$dp.status!=2)return;var J=H();if(J){N.srcEl=J.srcElement||J.target;J.cancelBubble=true}N.el=N.el=$dp.$(N.el||N.srcEl);if(!N.el||N.el["My97Mark"]===true||N.el.disabled||($dp.dd&&O($dp.dd)!="none"&&$dp.dd.style.left!="-970px")){try{N.el["My97Mark"]=false}catch(C){}return}I(N);if(J&&N.el.nodeType==1&&N.el["My97Mark"]===undefined){var A,D;if(J.type=="focus"){A="onclick";D="onfocus"}else{A="onfocus";D="onclick"}E(N.el,A,N.el[D])}}function L(){if(R&&U!=X&&U[M].readyState!="complete")return false;return true}function H(){if(G){func=H.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}return event}}function Q(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function O(_,$){if(_)if($!=null)_.style.display=$;else return Q(_,"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=R?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=U[M].createElement("DIV");$dp.dd.style.cssText="position:absolute";U[M].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(F,E){F.innerHTML="";var D=F.lastChild.contentWindow[M],_=$.$langList,C=$.$skinList,H=E.getRealLang();F.lang=H.name;F.skin=E.skin;var G=[""];for(var I=0;I");G.push("");G.push("");G.push("");E.setPos=B;E.onload=Y;D.write("");D.cfg=E;D.write(G.join(""))}function B(I){var G=I.position.left,B=I.position.top,C=I.el;if(C==S)return;if(C!=I.srcEl&&(O(C)=="none"||C.type=="hidden"))C=I.srcEl;var H=V(C),$=F(X),D=L(U),A=Z(U),E=$dp.dd.offsetHeight,_=$dp.dd.offsetWidth;if(isNaN(B))B=0;if(($.topM+H.bottom+E>D.height)&&($.topM+H.top-E>0))B+=A.top+$.topM+H.top-E-2;else B+=A.top+$.topM+Math.min(H.bottom,D.height-E)+2;if(isNaN(G))G=0;G+=A.left+Math.min($.leftM+H.left,D.width-_-5)-(R?2:0);I.dd.style.top=B+"px";I.dd.style.left=G+"px"}}})() \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/calendar.js b/src/main/webapp/static/My97DatePicker/calendar.js new file mode 100644 index 0000000..3465458 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/calendar.js @@ -0,0 +1,5 @@ +/* + * My97 DatePicker 4.8 Beta2 + * License: http://www.my97.net/dp/license.asp + */ +eval(function(p,a,c,k,e,d){e=function(c){return(c35?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;}('k($4j.3X){$f={};19(o p 4i $2l)k(5Z $2l[p]=="6d"){$f[p]={};19(o 4B 4i $2l[p])$f[p][4B]=$2l[p][4B]}q $f[p]=$2l[p]}q $f=$2l;19(p 4i $4j)$f[p]=$4j[p];o $c;k($62){6o.2N.7c("6W",l($){k(!$)h.2h();t $});6o.2N.7b("6N",l(){o $=h.6K;3l($.5f!=1)$=$.7e;t $});7a.2N.2T=l($,b){o A=$.1l(/6C/,"");b.6B=l($){6M.1Q=$;t b()};h.7g(A,b.6B,1n)}}l 5n(){$c=h;h.2F=[];$d=1P.75("x");$d.1d="4r";$d.1I="<1t Y=3Y><1t Y=3Y><1x 2t=0 2r=0 2u=0><1j><18 7V=2><4k 1E=7W>&4A;<1t Y=7u 4g=2><1t 1f=\\":\\" Y=6i 6p><1t Y=6q 4g=2><1t 1f=\\":\\" Y=6i 6p><1t Y=6q 4g=2><18><1N 1E=7s><1j><18><1N 1E=7r><1t Y=4h 1E=7y 3a=1N><1t Y=4h 1E=7C 3a=1N><1t Y=4h 1E=73 3a=1N>";6S($d,l(){3x()});A();h.5o();$f.22=[1P,$d.1K,$d.1v,$d.2B,$d.2Q,$d.2S,$d.2W,$d.2d,$d.1X];19(o B=0;B<$f.22.u;B++){o b=$f.22[B];b.34=B==$f.22.u-1?$f.22[1]:$f.22[B+1];$f.2T(b,"56",4P)}$();4K("y,M,H,m,s");$d.5s.1r=l(){58(1)};$d.5t.1r=l(){58(-1)};$d.4s.1r=l(){k($d.1F.1c.2g!="6t"){$c.4I();3v($d.1F)}q 1m($d.1F)};1P.6G.4x($d);l A(){o b=$("a");1q=$("x"),1M=$("1t"),4n=$("1N"),5q=$("4k");$d.3R=b[0];$d.3H=b[1];$d.3E=b[3];$d.3G=b[2];$d.41=1q[9];$d.1K=1M[0];$d.1v=1M[1];$d.4z=1q[0];$d.3C=1q[4];$d.3g=1q[6];$d.1F=1q[10];$d.2Y=1q[11];$d.2V=1q[12];$d.6F=1q[13];$d.6I=1q[14];$d.6T=1q[15];$d.4s=1q[16];$d.3Z=1q[17];$d.2B=1M[2];$d.2Q=1M[4];$d.2S=1M[6];$d.2W=1M[7];$d.2d=1M[8];$d.1X=1M[9];$d.5s=4n[0];$d.5t=4n[1];$d.5w=5q[0];l $($){t $d.6P($)}}l $(){$d.3R.1r=l(){$1L=$1L<=0?$1L-1:-1;k($1L%5==0){$d.1v.1U();t}$d.1v.1f=$n.y-1;$d.1v.2m()};$d.3H.1r=l(){$n.2q("M",-1);$d.1K.2m()};$d.3E.1r=l(){$n.2q("M",1);$d.1K.2m()};$d.3G.1r=l(){$1L=$1L>=0?$1L+1:1;k($1L%5==0){$d.1v.1U();t}$d.1v.1f=$n.y+1;$d.1v.2m()}}}5n.2N={5o:l(){$1L=0;$f.5h=h;k($f.3L&&$f.z.3L!=1h){$f.z.3L=1a;$f.z.4d()}h.4w();$n=h.5J=1b 1G();$1B=1b 1G();$1u=h.2A=1b 1G();h.1A=h.3j($f.1A);h.2L=$f.2L==1h?($f.Z.25&&$f.Z.25?1n:1a):$f.2L;$f.3r=$f.3r==1h?($f.4t&&$f.Z.d?1n:1a):$f.3r;h.4a=h.3p("7A");h.5S=h.3p("7G");h.5U=h.3p("7H");h.5O=h.3p("7F");h.1T=h.3s($f.1T,$f.1T!=$f.5A?$f.1Z:$f.2G,$f.5A);h.1W=h.3s($f.1W,$f.1W!=$f.5B?$f.1Z:$f.2G,$f.5B);k(h.1T.2z(h.1W)>0)$f.4o=$1k.7D;k(h.1R()){h.5C();h.3F=$f.z[$f.1y]}q h.35(1n,2);4H($n);$d.5w.1I=$1k.7q;$d.2W.1f=$1k.7o;$d.2d.1f=$1k.7p;$d.1X.1f=$1k.7w;$d.1X.28=!$c.1w($1u);h.5Y();h.6O();k($f.4o)7v($f.4o);h.4F();k($f.z.5f==1&&$f.z["3z"]===6J){$f.2T($f.z,"56",4P);$f.2T($f.z,"2m",l(){k($f&&$f.1J.1c.2g=="2s"){$c.3I();k($f.5h.3F!=$f.z[$f.1y]&&$f.z.7t)4J($f.z,"7I")}});$f.z["3z"]=1n}$c.1i=$f.z;3x()},5C:l(){o b=h.3f();k(b!=0){o $;k(b>0)$=h.1W;q $=h.1T;k($f.Z.3T){$n.y=$.y;$n.M=$.M;$n.d=$.d}k($f.Z.25){$n.H=$.H;$n.m=$.m;$n.s=$.s}}},3i:l(J,C,Q,E,B,G,F,K,L){o $;k(J&&J.1R)$=J;q{$=1b 1G();k(J!=""){C=C||$f.1A;o H,P=0,O,A=/3d|2n|3m|y|2w|3b|3K|M|1J|d|%2i|4O|H|4U|m|4V|s|3h|D|4Z|W|w/g,b=C.2Z(A);A.2C=0;k(L)O=J.43(/\\W+/);q{o D=0,M="^";3l((O=A.3k(C))!==1h){k(D>=0)M+=C.1D(D,O.3Q);D=A.2C;2R(O[0]){1e"3d":M+="(\\\\d{4})";1g;1e"2n":M+="(\\\\d{3})";1g;1e"2w":1e"3b":1e"3h":1e"D":M+="(\\\\D+)";1g;63:M+="(\\\\d\\\\d?)";1g}}M+=".*$";O=1b 4u(M).3k(J);P=1}k(O){19(H=0;H=0){A=A.1l(/%2i/g,"0");$.d=0;$.M=2e($.M)+1}$.1S()}t $},1R:l(){o b,$;k($f.7R||($f.6c!=""&&$f.z[$f.1y]=="")){b=h.3j($f.6c);$=$f.1Z}q{b=$f.z[$f.1y];$=h.1A}$n.2k(h.3i(b,$));k(b!=""){o A=1;k($f.Z.3T&&!h.4l($n)){$n.y=$1B.y;$n.M=$1B.M;$n.d=$1B.d;A=0}k($f.Z.25&&!h.4m($n)){$n.H=$1B.H;$n.m=$1B.m;$n.s=$1B.s;A=0}t A&&h.1w($n)}t 1},4l:l($){k($.y!=1h)$=2I($.y,4)+"-"+$.M+"-"+$.d;t $.2Z(/^((\\d{2}(([6f][7Q])|([6e][26]))[\\-\\/\\s]?((((0?[6b])|(1[68]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[67])))|(((0?[69])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([6f][7P])|([6e][72]))[\\-\\/\\s]?((((0?[6b])|(1[68]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[67])))|(((0?[69])|(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])))))?$/)},4m:l($){k($.H!=1h)$=$.H+":"+$.m+":"+$.s;t $.2Z(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},3f:l($,A){$=$||$n;o b=$.2z(h.1T,A);k(b>0){b=$.2z(h.1W,A);k(b<0)b=0}t b},1w:l($,A,B){A=A||$f.Z.49;o b=h.3f($,A);k(b==0){b=1;k(A=="d"&&B==1h)B=24.5F((1b 1z($.y,$.M-1,$.d).1H()-$f.3M+7)%7);b=!h.5T(B)&&!h.5M($,A)}q b=0;t b},5L:l(){o b=$f.z,A=h,$=$f.z[$f.1y];k($f.4q>=0&&$f.4q<=2&&$!=1h){k($!="")A.2A.2k(A.3i($,A.1A));k($==""||(A.4l(A.2A)&&A.4m(A.2A)&&A.1w(A.2A))){k($!=""){A.5J.2k(A.2A);A.3D()}q A.3W("")}q t 1n}t 1a},3I:l($){3x();k(h.5L()){h.35(1a);$f.1m()}q{k($){2J($);h.35(1n,2)}q h.35(1n);$f.20()}},44:l(){o E,C,D,K,A,H=1b 2p(),F=$1k.5l,G=$f.3M,I="",$="",b=1b 1G($n.y,$n.M,$n.d,0,0,0),J=b.y,B=b.M;A=1-1b 1z(J,B-1,1).1H()+G;k(A>1)A-=7;H.a("<1x Y=5E 2U=33% 2u=0 2t=0 2r=0>");H.a("<1j Y=5H 4D=5P>");k($f.5G)H.a("<18>"+F[0]+"");19(E=0;E<7;E++)H.a("<18>"+F[(G+E)%7+1]+"");H.a("");19(E=1,C=A;E<7;E++){H.a("<1j>");19(D=0;D<7;D++){b.1R(J,B,C++);b.1S();k(b.M==B){K=1a;k(b.2z($1u,"d")==0)I="74";q k(b.2z($1B,"d")==0)I="6X";q I=($f.5D&&(0==(G+D)%7||6==(G+D)%7)?"7i":"7j");$=($f.5D&&(0==(G+D)%7||6==(G+D)%7)?"7h":"7k")}q k($f.5y){K=1a;I="7l";$="7f"}q K=1n;k($f.5G&&D==0&&(E<4||K))H.a("<18 Y=77>"+4v(b,$f.3M==0?1:0)+"");H.a("<18 ");k(K){k(h.1w(b,"d",D)){k(h.5R(24.5F((1b 1z(b.y,b.M-1,b.d).1H()-$f.3M+7)%7))||h.5V(b))I="78";H.a("1r=\\"2K("+b.y+","+b.M+","+b.d+");\\" ");H.a("2y=\\"h.1d=\'"+$+"\'\\" ");H.a("2v=\\"h.1d=\'"+I+"\'\\" ")}q I="7d";H.a("Y="+I);H.a(">"+b.d+"")}q H.a(">")}H.a("")}H.a("");t H.j()},5M:l(b,A){o $=h.4e(b,h.4a,A);t(h.4a&&$f.5N)?!$:$},5T:l($){t h.4f($,h.5S)},5V:l($){t h.4e($,h.5U)},5R:l($){t h.4f($,h.5O)},4e:l($,B,A){o b=A=="d"?$f.4E:$f.1Z;t B?B.4Q(h.3J(b,$)):0},4f:l(b,$){t $?$.4Q(b):0},2H:l(p,c,r,e,2b){o s=1b 2p(),4c=2b?"r"+p:p;5Q=$n[p];s.a("<1x 2t=0 2r=3 2u=0");19(o i=0;i");19(o j=0;j"+(p=="M"?$1k.29[$n[p]-1]:$n[p])+"")}s.a("")}s.a("");$n[p]=5Q;t s.j()},4C:l($,b){k($){o A=$.7n;k($6y)A=$.7m().2D;b.1c.2D=A}},6Z:l($){h.4C($,$d.3C);$d.3C.1I=h.2H("M",2,6,"i+j*6+1",$==$d.2c)},4b:l(b,B,A){o $=1b 2p();A=A||b==$d.2o;B=3e(B,$n.y-5);$.a(h.2H("y",2,5,B+"+i+j*5",A));$.a("<1x 2t=0 2r=3 2u=0 4D=5P><1j><18 ");$.a(h.1T.y\\91<18 Y=\'1C\' 2y=\\"h.1d=\'2E\'\\" 2v=\\"h.1d=\'1C\'\\" 3N=\\"1m($d.3g);$d.1v.4d();\\">\\5I<18 ");$.a(h.1W.y>B+10?"Y=\'1C\' 2y=\\"h.1d=\'2E\'\\" 2v=\\"h.1d=\'1C\'\\" 3N=\'k(1Q.2h)1Q.2h();1Q.4X=1a;$c.4b(0,"+(B+10)+","+A+")\'":"Y=\'4p\'");$.a(">\\8S");h.4C(b,$d.3g);$d.3g.1I=$.j()},3S:l(A,b,$){$d[A+"D"].1I=h.2H(A,6,b,$)},8P:l(){h.3S("H",4,"i * 6 + j")},8T:l(){h.3S("m",2,"i * 30 + j * 5")},8X:l(){h.3S("s",1,"j * 10")},4I:l(C,A){h.6m();o $=A?">a/<94 8U>8V=8O \\"8Q:8R\\"=97 \\"98.95.99//:8Z\\"=93 a<".43("").92().6s(""):$1k.90,B=h.2F,E=B.1c,b=1b 2p();b.a("<1x Y=5E 2U=33% 2f=33% 2u=0 2t=0 2r=0>");b.a("<1j Y=5H><18>"+$+"");k(!C)b.a("\\5I");b.a("");19(o D=0;D<18 1c=\'4M-4D:2D\' 2M=\'2M\' Y=\'1C\' 2y=\\"h.1d=\'2E\'\\" 2v=\\"h.1d=\'1C\'\\" 1r=\\"");b.a("2K("+B[D].y+", "+B[D].M+", "+B[D].d+","+B[D].H+","+B[D].m+","+B[D].s+");\\">");b.a("&4A;"+h.3J(1h,B[D]));b.a("")}q b.a("<1j><18 Y=\'1C\'>&4A;");b.a("");$d.1F.1I=b.j()},4w:l(){$(/w/);$(/4Z|W/);$(/3h|D/);$(/3d|2n|3m|y/);$(/2w|3b|3K|M/);$(/1J|d/);$(/4O|H/);$(/4U|m/);$(/4V|s/);$f.Z.3T=($f.Z.y||$f.Z.M||$f.Z.d)?1a:1n;$f.Z.25=($f.Z.H||$f.Z.m||$f.Z.s)?1a:1n;$f.2G=$f.2G.1l(/%1z/,$f.4E).1l(/%8N/,$f.66);k($f.Z.3T){k($f.Z.25)$f.1Z=$f.2G;q $f.1Z=$f.4E}q $f.1Z=$f.66;l $(b){o $=(b+"").5c(1,2);$f.Z[$]=b.3k($f.1A)?($f.Z.49=$,1a):1n}},5Y:l(){o $=0;$f.Z.y?($=1,20($d.1v,$d.3R,$d.3G)):1m($d.1v,$d.3R,$d.3G);$f.Z.M?($=1,20($d.1K,$d.3H,$d.3E)):1m($d.1K,$d.3H,$d.3E);$?20($d.4z):1m($d.4z);k($f.Z.25){20($d.2V);3t($d.2B,$f.Z.H);3t($d.2Q,$f.Z.m);3t($d.2S,$f.Z.s)}q 1m($d.2V);3c($d.2W,$f.61);3c($d.2d,$f.64);3c($d.1X,$f.4t);3c($d.4s,!$f.5v&&$f.Z.d&&$f.8h);k($f.3X||!($f.61||$f.64||$f.4t))1m($d.3Z);q 20($d.3Z)},35:l(B,D){o A=$f.z,b=$62?"Y":"1d";k(B)C(A);q{k(D==1h)D=$f.4q;2R(D){1e 0:k(8f($1k.8g)){A[$f.1y]=h.3F;C(A)}q $(A);1g;1e 1:A[$f.1y]=h.3F;C(A);1g;1e 2:$(A);1g}}l C(A){o B=A.1d;k(B){o $=B.1l(/5j/g,"");k(B!=$)A.5m(b,$)}}l $($){$.5m(b,$.1d+" 5j")}},1Y:l(D,b,$){$=$||$1u;o H,C=[D+D,D],E,A=$[D],F=l($){t 2I(A,$.u)};2R(D){1e"w":A=1H($);1g;1e"D":o G=1H($)+1;F=l($){t $.u==2?$1k.8k[G]:$1k.5l[G]};1g;1e"W":A=4v($);1g;1e"y":C=["3d","2n","3m","y"];b=b||C[0];F=l(b){t 2I((b.u<4)?(b.u<3?$.y%33:($.y+5g-$f.5i)%8o):A,b.u)};1g;1e"M":C=["2w","3b","3K","M"];F=l($){t($.u==4)?$1k.5k[A-1]:($.u==3)?$1k.29[A-1]:2I(A,$.u)};1g}b=b||D+D;k("3n".1p(D)>-1&&D!="y"&&!$f.Z[D])k("8p".1p(D)>-1)A=0;q A=1;o B=[];19(H=0;H=0){B[H]=F(E);b=b.1l(E,"{"+H+"}")}}19(H=0;H=0){o A=1b 1G();A.2k($);A.d=0;A.M=2e(A.M)+1;A.1S();b=b.1l(/%2i/g,A.d)}o B="8n";19(o D=0;D<1j><18 5z=5u>");$.a(h.44());$.a("<18 5z=5u>");$n.2q("M",1);$.a(h.44());$d.2c=$d.1K.5p(1a);$d.2o=$d.1v.5p(1a);$d.41.4x($d.2c);$d.41.4x($d.2o);$d.2c.1f=$1k.29[$n.M-1];$d.2c["3u"]=$n.M;$d.2o.1f=$n.y;4K("6D,6u");$d.2c.1d=$d.2o.1d="3Y";$n.2q("M",-1);$.a("");$d.2Y.1I=$.j()}q{$d.1d="4r";$d.2Y.1I=h.44()}k(!$f.Z.d||$f.84){h.4I(1a);3v($d.1F)}q 1m($d.1F);h.5e()},5e:l(){o b=88.1P.6P("8c");19(o C=0;C=B){A+=B;$d.1c.2f=A}q $d.1c.2f=$;b[C].1c.2f=24.65(A,$d.36)+"6Q"}}$d.1F.1c.2U=$d.2Y.6V;$d.1F.1c.2f=$d.2Y.36},4R:l(){$n.d=24.8a(1b 1z($n.y,$n.M,0).3o(),$n.d);$1u.2k($n);h.3D();k(!$f.3X)k(h.1w($n)){4G();1m($f.1J)}k($f.6H)2j("6H")},6O:l(){$d.2W.1r=l(){k(!2j("8F")){$f.z[$f.1y]="";$c.3W("");4G();1m($f.1J);k($f.6E)2j("6E")}};$d.1X.1r=l(){2K()};k(h.1w($1B)){$d.2d.28=1n;$d.2d.1r=l(){$n.2k($1B);2K()}}q $d.2d.28=1a},6m:l(){o H,G,A,F,C=[],$=5,E=$f.6g.u,b=$f.Z.49;k(E>$)E=$;q k(b=="m"||b=="s")C=[-60,-30,0,30,60,-15,15,-45,45];q 19(H=0;H<$;H++)C[H]=$n[b]-2+H;19(H=G=0;H=0)$=3q(A,0,59);k($1u[b]!=A&&!2j(b+"8v")){o C=$c.3f();k(C==0)21(b,$);q k(C<0)B($c.1T);q k(C>0)B($c.1W);$d.1X.28=!$c.1w($1u);k("8A".1p(b)>=0)$c.4F();2j(b+"8y")}l B($){4H($c.1w($)?$:$1u)}}l 4H($){21("y",$.y);21("M",$.M);21("d",$.d);21("H",$.H);21("m",$.m);21("s",$.s)}l 2K(F,B,b,D,C,A){o $=1b 1G($n.y,$n.M,$n.d,$n.H,$n.m,$n.s);$n.1R(F,B,b,D,C,A);k(!2j("8w")){o E=$.y==F&&$.M==B&&$.d==b;k(!E&&2O.u!=0){c("y",F);c("M",B);c("d",b);$c.1i=$f.z;3V()}k($c.2L||E||2O.u==0)$c.4R()}q $n=$}l 3V(){k($f.3r){$c.3D();$f.z.1U()}}l 2j($){o b;k($f[$])b=$f[$].4W($f.z,$f);t b}l 21(b,$){k($==1h)$=$n[b];$1u[b]=$n[b]=$;k("8x".1p(b)>=0)$d[b+"I"].1f=$;k(b=="M"){$d.1K["3u"]=$;$d.1K.1f=$1k.29[$-1]}}l 3q(b,$,A){k(b<$)b=$;q k(b>A)b=A;t b}l 6S($,b){$f.2T($,"56",l(){o $=1Q,A=($.52==6J)?$.54:$.52;k(A==9)b()})}l 2I($,b){$=$+"";3l($.u=0?C:5;19(o D=0;D<=C;D++){B=A.1O(D);b=h[B]-$[B];k(b>0)t 1;q k(b<0)t-1}t 0},1S:l(){o $=1b 1z(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.5d();h.M=$.5b()+1;h.d=$.3o();h.H=$.5a();h.m=$.4Y();h.s=$.4N();t!6r(h.y)},2q:l(b,$){k("3n".1p(b)>=0){o A=h.d;k(b=="M")h.d=1;h[b]+=$;h.1S();h.d=A}}};l 2e($){t 8z($,10)}l 3w($,b){t 3e(2e($),b)}l 1s($,A,b){t 3w($,3e(A,b))}l 3e($,b){t $==1h||6r($)?b:$}l 4J(A,$){k($6y)A.4J("6C"+$);q{o b=1P.8q("8s");b.8t($,1a,1a);A.8I(b)}}l 42($){o A,B,b="y,M,H,m,s,6u,6D".43(",");19(B=0;B=0?6l(v):$n[p];k(p=="y"){2b=h==$d.2o;k(2b&&$n.M==12)$n.y-=1}q k(p=="M"){2b=h==$d.2c;k(2b){4T=$1k.29[$n[p]-1];k(6h==12)$n.y+=1;$n.2q("M",-1)}k($1u.M==$n.M)h.1f=4T||$1k.29[$n[p]-1];k(($1u.y!=$n.y))c("y",$n.y)}47("c(\\""+p+"\\","+$n[p]+")");k(6n!==1a){k(p=="y"||p=="M")h.1d="3Y";1m($d[p+"D"])}3V()}l 2J($){k($.2h){$.2h();$.8G()}q{$.4X=1a;$.6W=1n}k($5x)$.54=0}l 4K($){o A=$.43(",");19(o B=0;B=96&&Q<=83)Q-=48;k($f.85&&53){k(!H.34){H.34=$f.22[1];$c.1i=$f.z}k(H==$f.z)$c.1i=$f.z;k(Q==27)k(H==$f.z){$c.3I();t}q $f.z.1U();k(Q>=37&&Q<=40){o U;k($c.1i==$f.z||$c.1i==$d.1X)k($f.Z.d){U="d";k(Q==38)$n[U]-=7;q k(Q==39)$n[U]+=1;q k(Q==37)$n[U]-=1;q $n[U]+=7;$n.1S();c("y",$n["y"]);c("M",$n["M"]);c("d",$n[U]);2J(M);t}q{U=$f.Z.49;$d[U+"I"].1U()}U=U||42($c.1i);k(U){k(Q==38||Q==39)$n[U]+=1;q $n[U]-=1;$n.1S();$c.1i.1f=$n[U];3U.4W($c.1i,1a);$c.1i.51()}}q k(Q==9){o D=H.34;19(o R=0;R<$f.22.u;R++)k(D.28==1a||D.36==0)D=D.34;q 1g;k($c.1i!=D){$c.1i=D;D.1U()}}q k(Q==13){3U.4W($c.1i);k($c.1i.3a=="1N")$c.1i.8e();q $c.4R();$c.1i=$f.z}}q k(Q==9&&H==$f.z)$c.3I();k($f.8m&&!$5x&&!$f.3L&&$c.1i==$f.z&&(Q>=48&&Q<=57)){o T=$f.z,S=T.1f,F=E(T),I={1V:"",1o:[]},R=0,K,N=0,X=0,O=0,J,b=/3d|2n|3m|y|3K|M|1J|d|%2i|4O|H|4U|m|4V|s|4Z|W|w/g,L=$f.1A.2Z(b),B,A,$,V,W,G,J=0;k(S!=""){O=S.2Z(/[0-9]/g);O=O==1h?0:O.u;19(R=0;R=0?1:0;k(O==1&&F>=S.u)F=S.u-1}S=S.1D(0,F)+8j.8i(Q)+S.1D(F+O);F++;19(R=0;R=0){S+=$f.1A.1D(N,X);k(F>=N+J&&F<=X+J)F+=X-N}N=b.2C;G=N-X;B=I.1V.1D(0,G);A=K[0].1O(0);$=2e(B.1O(0));k(I.1V.u>1){V=I.1V.1O(1);W=$*10+2e(V)}q{V="";W=$}k(I.1o[X+1]||A=="M"&&W>12||A=="d"&&W>31||A=="H"&&W>23||"6a".1p(A)>=0&&W>59){k(K[0].u==2)B="0"+$;q B=$;F++}q k(G==1){B=W;G++;J++}S+=B;I.1V=I.1V.1D(G);k(I.1V=="")1g}T.1f=S;P(T,F);2J(M)}k(53&&$c.1i!=$f.z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2J(M);l E(A){o b=0;k($f.4L.1P.5X){o B=$f.4L.1P.5X.82(),$=B.4M.u;B.6z("4S",-A.1f.u);b=B.4M.u-$}q k(A.55||A.55=="0")b=A.55;t b}l P(b,A){k(b.5r){b.1U();b.5r(A,A)}q k(b.6U){o $=b.6U();$.7B(1a);$.7x("4S",A);$.6z("4S",A);$.51()}}}1P.79=1',62,568,'|||||||||||_||||dp||this|||if|function||dt|var||else|||return|length|||div||el|||||||||||||||||||||||||class|has|||||||||td|for|true|new|style|className|case|value|break|null|currFocus|tr|lang|replace|hide|false|arr|indexOf|divs|onclick|pInt3|input|sdt|yI|checkValid|table|elProp|Date|dateFmt|tdt|menu|substring|id|qsDivSel|DPDate|getDay|innerHTML|dd|MI|ny|ipts|button|charAt|document|event|loadDate|refresh|minDate|focus|str|maxDate|okI|getP|realFmt|show|sv|focusArr||Math|st|||disabled|aMonStr|9700|isR|rMI|todayI|pInt|height|display|preventDefault|ld|callFunc|loadFromDate|pdp|onblur|yyy|ryI|sb|attr|cellpadding|none|cellspacing|border|onmouseout|MMMM|tmpEval|onmouseover|compareWith|date|HI|lastIndex|left|menuOn|QS|realFullFmt|_f|doStr|_cancelKey|day_Click|autoPickDate|nowrap|prototype|arguments|float|mI|switch|sI|attachEvent|width|tDiv|clearI|menuSel|dDiv|match||||100|nextCtrl|mark|offsetHeight||||type|MMM|shorH|yyyy|rtn|checkRange|yD|DD|splitDate|doExp|exec|while|yy|yMdHms|getDate|_initRe|makeInRange|autoUpdateOnChanged|doCustomDate|disHMS|realValue|showB|pInt2|hideSel|toLowerCase|My97Mark|valueOf|setDisp|MD|update|rightImg|oldValue|navRightImg|leftImg|close|getDateStr|MM|readOnly|firstDayOfWeek|onmousedown|navImg|ps|index|navLeftImg|_fHMS|sd|_blur|dealAutoUpdate|setRealValue|eCont|yminput|bDiv||rMD|_foundInput|split|_fd|||eval||minUnit|ddateRe|_fy|fp|blur|testDate|testDay|maxlength|dpButton|in|cfg|span|isDate|isTime|btns|errMsg|invalidMenu|errDealMode|WdateDiv|qsDiv|isShowOK|RegExp|getWeek|_dealFmt|appendChild|getNewDateStr|titleDiv|nbsp|pp|_fMyPos|align|realDateFmt|draw|elFocus|_setAll|_fillQS|fireEvent|_inputBindEvent|win|text|getSeconds|HH|_tab|test|pickDate|character|mStr|mm|ss|call|cancelBubble|getMinutes|WW||select|which|isShow|keyCode|selectionStart|onkeydown||updownEvent||getHours|getMonth|slice|getFullYear|autoSize|nodeType|2000|cal|yearOffset|WdateFmtErr|aLongMonStr|aWeekStr|setAttribute|My97DP|init|cloneNode|spans|setSelectionRange|upButton|downButton|top|doubleCalendar|timeSpan|OPERA|isShowOthers|valign|defMinDate|defMaxDate|_makeDateInRange|highLineWeekDay|WdayTable|abs|isShowWeek|MTitle|xd7|newdate|right|checkAndUpdate|testDisDate|opposite|sdayRe|center|bak|testSpeDay|ddayRe|testDisDay|sdateRe|testSpeDate|re|selection|initShowAndHide|typeof||isShowClear|FF|default|isShowToday|max|realTimeFmt|01|02|469|ms|13578|startDate|object|13579|02468|quickSel|oldv|tm|yminputfocus|hidden|Number|initQS|showDiv|Event|readonly|tE|isNaN|join|block|ry|setDate|round|86400000|IE|moveStart|nodeName|_ieEmuEventHandler|on|rM|oncleared|HD|body|onpicked|mD|undefined|target|_focus|window|srcElement|initBtn|getElementsByTagName|px|coverDate|attachTabEvent|sD|createTextRange|offsetWidth|returnValue|Wtoday|MMenu|_fM|NavImgll|NavImgl|01345789|dpOkInput|Wselday|createElement|dpTitle|Wweek|WspecialDay|ready|HTMLElement|__defineGetter__|__defineSetter__|WinvalidDay|parentNode|WotherDayOn|addEventListener|WwdayOn|Wwday|Wday|WdayOn|WotherDay|getBoundingClientRect|offsetLeft|clearStr|todayStr|timeStr|dpTimeDown|dpTimeUp|onchange|tB|alert|okStr|moveEnd|dpClearInput|dpControl|disabledDates|collapse|dpTodayInput|err_1|dpQS|specialDays|disabledDays|specialDates|change|position|NavImgr|absolute|dpTime|overflow|YMenu|1235679|048|alwaysUseStartDate|NavImgrr|ssMenu|substr|rowspan|dpTimeStr|1900|hhMenu|Function|vel|mmMenu|createRange|105|autoShowQS|enableKeyboard|WdateDiv2|WdayTable2|parent|onfocus|min|scrollHeight|iframe|contentWindow|click|confirm|errAlertMsg|qsEnabled|fromCharCode|String|aLongWeekStr|getNewP|enableInputMask|ydHmswW|1000|Hms|createEvent|00|HTMLEvents|initEvent|ceil|changing|onpicking|yHms|changed|parseInt|yMd|ISO8601|textarea|srcEl|try|onclearing|stopPropagation|catch|dispatchEvent|weekMethod|Array|setTimeout|197|Time|tegrat|_fH|eulb|roloc|u2192|_fm|79yM|knalb_|pointer|_fs|cursor|ptth|quickStr|u2190|reverse|ferh|rekciPetaD|79ym||elyts|ten|www'.split('|'),0,{})) \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/develop/lang/zh-cn.js b/src/main/webapp/static/My97DatePicker/develop/lang/zh-cn.js new file mode 100644 index 0000000..89af055 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/lang/zh-cn.js @@ -0,0 +1,14 @@ +var $lang={ +errAlertMsg: "Ϸڸʽڳ޶Χ,Ҫ?", +aWeekStr: ["","","һ","","","","",""], +aLongWeekStr:["","","һ","ڶ","","","",""], +aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], +aLongMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], +clearStr: "", +todayStr: "", +okStr: "ȷ", +updateStr: "ȷ", +timeStr: "ʱ", +quickStr: "ѡ", +err_1: 'Сڲܴ!' +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/develop/lang/zh-tw.js b/src/main/webapp/static/My97DatePicker/develop/lang/zh-tw.js new file mode 100644 index 0000000..6e2e6ed --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/lang/zh-tw.js @@ -0,0 +1,14 @@ +var $lang={ +errAlertMsg: "Ϸڸʽڳ޶,ҪN?", +aWeekStr: ["","","һ","","","","",""], +aLongWeekStr:["","","һ","ڶ","","","",""], +aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], +aLongMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], +clearStr: "", +todayStr: "", +okStr: "_", +updateStr: "_", +timeStr: "rg", +quickStr: "x", +err_1: 'Сڲܴ!' +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/develop/readme.txt b/src/main/webapp/static/My97DatePicker/develop/readme.txt new file mode 100644 index 0000000..b3f7611 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/readme.txt @@ -0,0 +1,3 @@ +ʽʱ,ɽļɾȥ + + diff --git a/src/main/webapp/static/My97DatePicker/develop/skin/default/datepicker.css b/src/main/webapp/static/My97DatePicker/develop/skin/default/datepicker.css new file mode 100644 index 0000000..03beece --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/skin/default/datepicker.css @@ -0,0 +1,267 @@ +/* + * My97 DatePicker 4.7 + * Ƥ:default + */ + +/* ѡ DIV */ +.WdateDiv{ + width:180px; + background-color:#FFFFFF; + border:#bbb 1px solid; + padding:2px; +} +/* ˫Ŀ */ +.WdateDiv2{ + width:360px; +} +.WdateDiv *{font-size:9pt;} + +/**************************** + * ͼ ȫAǩ + ***************************/ +.WdateDiv .NavImg a{ + display:block; + cursor:pointer; + height:16px; + width:16px; +} + +.WdateDiv .NavImgll a{ + float:left; + background:transparent url(img.gif) no-repeat scroll 0 0; +} +.WdateDiv .NavImgl a{ + float:left; + background:transparent url(img.gif) no-repeat scroll -16px 0; +} +.WdateDiv .NavImgr a{ + float:right; + background:transparent url(img.gif) no-repeat scroll -32px 0; +} +.WdateDiv .NavImgrr a{ + float:right; + background:transparent url(img.gif) no-repeat scroll -48px 0; +} + +/**************************** + * · + ***************************/ +/* · DIV */ +.WdateDiv #dpTitle{ + height:24px; + margin-bottom:2px; + padding:1px; +} +/* · INPUT */ +.WdateDiv .yminput{ + margin-top:2px; + text-align:center; + height:20px; + border:0px; + width:50px; + cursor:pointer; +} +/* ·ýʱʽ INPUT */ +.WdateDiv .yminputfocus{ + margin-top:2px; + text-align:center; + font-weight:bold; + height:20px; + color:blue; + border:#ccc 1px solid; + width:50px; +} +/* ˵ѡ DIV */ +.WdateDiv .menuSel{ + z-index:1; + position:absolute; + background-color:#FFFFFF; + border:#ccc 1px solid; + display:none; +} +/* ˵ʽ TD */ +.WdateDiv .menu{ + cursor:pointer; + background-color:#fff; +} +/* ˵mouseoverʽ TD */ +.WdateDiv .menuOn{ + cursor:pointer; + background-color:#BEEBEE; +} +/* ˵Чʱʽ TD */ +.WdateDiv .invalidMenu{ + color:#aaa; +} +/* ѡƫ DIV */ +.WdateDiv .YMenu{ + margin-top:20px; + +} +/* ѡƫ DIV */ +.WdateDiv .MMenu{ + margin-top:20px; + *width:62px; +} +/* ʱѡλ DIV */ +.WdateDiv .hhMenu{ + margin-top:-90px; + margin-left:26px; +} +/* ѡλ DIV */ +.WdateDiv .mmMenu{ + margin-top:-46px; + margin-left:26px; +} +/* ѡλ DIV */ +.WdateDiv .ssMenu{ + margin-top:-24px; + margin-left:26px; +} + +/**************************** + * + ***************************/ + .WdateDiv .Wweek { + text-align:center; + background:#DAF3F5; + border-right:#BDEBEE 1px solid; + } +/**************************** + * , + ***************************/ +/* TR */ +.WdateDiv .MTitle{ + background-color:#BDEBEE; +} +.WdateDiv .WdayTable2{ + border-collapse:collapse; + border:#c5d9e8 1px solid; +} +.WdateDiv .WdayTable2 table{ + border:0; +} +/* TABLE */ +.WdateDiv .WdayTable{ + line-height:20px; + border:#c5d9e8 1px solid; +} +.WdateDiv .WdayTable td{ + text-align:center; +} +/* ڸʽ TD */ +.WdateDiv .Wday{ + cursor:pointer; +} +/* ڸmouseoverʽ TD */ +.WdateDiv .WdayOn{ + cursor:pointer; + background-color:#C0EBEF; +} +/* ĩڸʽ TD */ +.WdateDiv .Wwday{ + cursor:pointer; + color:#FF2F2F; +} +/* ĩڸmouseoverʽ TD */ +.WdateDiv .WwdayOn{ + cursor:pointer; + color:#000; + background-color:#C0EBEF; +} +.WdateDiv .Wtoday{ + cursor:pointer; + color:blue; +} +.WdateDiv .Wselday{ + background-color:#A9E4E9; +} +.WdateDiv .WspecialDay{ + background-color:#66F4DF; +} +/* ·ݵ */ +.WdateDiv .WotherDay{ + cursor:pointer; + color:#6A6AFF; +} +/* ·ݵmouseoverʽ */ +.WdateDiv .WotherDayOn{ + cursor:pointer; + background-color:#C0EBEF; +} +/* Чڵʽ,ڷΧڸʽ,ѡ */ +.WdateDiv .WinvalidDay{ + color:#aaa; +} + +/**************************** + * ʱ + ***************************/ +/* ʱ DIV */ +.WdateDiv #dpTime{ + float:left; + margin-top:3px; + margin-right:30px; +} +/* ʱ SPAN */ +.WdateDiv #dpTime #dpTimeStr{ + margin-left:1px; +} +/* ʱ INPUT */ +.WdateDiv #dpTime input{ + width:18px; + height:20px; + text-align:center; + border:#ccc 1px solid; +} +/* ʱ ʱ INPUT */ +.WdateDiv #dpTime .tB{ + border-right:0px; +} +/* ʱ ֺͼ ':' INPUT */ +.WdateDiv #dpTime .tE{ + border-left:0; + border-right:0; +} +/* ʱ INPUT */ +.WdateDiv #dpTime .tm{ + width:7px; + border-left:0; + border-right:0; +} +/* ʱұߵϰť BUTTON */ +.WdateDiv #dpTime #dpTimeUp{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -32px -16px; +} +/* ʱұߵ°ť BUTTON */ +.WdateDiv #dpTime #dpTimeDown{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -48px -16px; +} +/**************************** + * + ***************************/ + .WdateDiv #dpQS { + float:left; + margin-right:3px; + margin-top:3px; + background:url(img.gif) no-repeat 0px -16px; + width:20px; + height:20px; + cursor:pointer; + } +.WdateDiv #dpControl { + text-align:right; +} +.WdateDiv .dpButton{ + height:20px; + width:45px; + border:#ccc 1px solid; + margin-top:2px; + margin-right:1px; +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/develop/skin/twoer/datepicker.css b/src/main/webapp/static/My97DatePicker/develop/skin/twoer/datepicker.css new file mode 100644 index 0000000..05e7318 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/skin/twoer/datepicker.css @@ -0,0 +1,339 @@ +/* + * My97 DatePicker 4.8 + * auther : zhangkun , hejianting(design) + * email : zhangkun_net@hotmail.com + * date : 2012-05-25 + */ +.WdateDiv +{ + position:relative; + padding:5px; + width:180px; + *width:190px; + font-size:12px; + color:#333; + border:solid 1px #DEDEDE; + background-color:#F2F0F1; +} + +.WdateDiv2 +{ + width:360px; +} + +.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS +{ + background:url(img.gif) no-repeat; +} + +.WdateDiv .NavImg a +{ + float:left; + width:16px; + height:16px; + cursor:pointer; +} +.WdateDiv .NavImgll a +{ + background-position:0px 5px; +} +.WdateDiv .NavImgl a +{ + background-position:0px -10px; +} +.WdateDiv .NavImgr a +{ + background-position:0px -25px; + float:right; +} +.WdateDiv .NavImgrr a +{ + background-position:0px -40px; + float:right; +} + +.WdateDiv #dpTitle +{ + padding:3px 0px 0px 0px; + line-height:0px; + height:20px; + *height:23; +} + +.WdateDiv .yminput,.WdateDiv .yminputfocus +{ + margin-left:3px; + width:50px; + height:20px; + line-height:16px; + border:solid 1px #F2F0F1; + cursor:pointer; + background-position:35px -68px; +} + +.WdateDiv .yminputfocus +{ + background-color:#fff; + border:solid 1px #D8D8D8; +} + +.WdateDiv .menuSel{ + z-index:1; + position:absolute; + background-color:#FFFFFF; + border:#A3C6C8 1px solid; + display:none; +} + +.WdateDiv .menu +{ + background:#fff; +} +.WdateDiv .menuOn +{ + color:#fff; + background:#0088CC; +} + +.WdateDiv .invalidMenu{ + color:#aaa; +} + +.WdateDiv .MMenu,.WdateDiv .YMenu +{ + padding:2px; + margin-top:20px; + margin-left:-1px; + width:68px; + border:solid 1px #D9D9D9; +} +.WdateDiv .MMenu table,.WdateDiv .YMenu table +{ + width:100%; +} +.WdateDiv .MMenu table td,.WdateDiv .YMenu table td +{ + padding:0px; + line-height:20px; + text-align:center; + font-size:12px; + cursor: pointer; +} + +.WdateDiv .Wweek { + text-align:center; + background:#DAF3F5; + border-right:#BDEBEE 1px solid; + } + +.WdateDiv td +{ + padding:1px; + line-height:20px; + font-size:12px; + color:#999999; + background:#fff; + cursor:pointer; +} +.WdateDiv .MTitle td +{ + line-height:24px; + color:#7D7D7D; + background:#F2F0F1; + cursor: default; +} + +.WdateDiv .WdayTable2 +{ + border-collapse:collapse; + border:#808080 1px solid; +} +.WdateDiv .WdayTable2 table +{ + border:0; +} + +.WdateDiv .WdayTable{ + line-height:20px; + color:#13777e; + background-color:#edfbfb; +} +.WdateDiv .WdayTable td{ + text-align:center; +} + +.WdateDiv .Wday +{ + color:#323232; +} + +.WdateDiv .WdayOn +{ + color:#fff; + background-color:#0088CC; +} + +.WdateDiv .Wwday +{ + color:#0088CC; +} + +.WdateDiv .WwdayOn +{ + color:#fff; + background-color:#0088CC; +} +.WdateDiv .Wtoday +{ + color:#FF6D10; + background:#E0EDFE; +} +.WdateDiv .Wselday +{ + color:#fff; + background-color:#0088CC; +} +.WdateDiv .WspecialDay{ + background-color:#66F4DF; +} + +.WdateDiv .WotherDay +{ + color:#D4D4D4; +} +.WdateDiv .WotherDayOn +{ + color:#fff; + background-color:#0088CC; +} + +.WdateDiv .WinvalidDay{ + color:#aaa; +} + +.WdateDiv #dpTime +{ + position:relative; + margin-top:5px; +} + +.WdateDiv #dpTime #dpTimeStr +{ + display:inline-block; + width:28px; + *width:30px; + color:#7d7d7d; +} + +.WdateDiv #dpTime input +{ + padding:0px; + margin:0px; + width:25px; + height:20px; + line-height:20px; + text-align:center; + color:#333; + border:#D9D9D9 1px solid; +} + +.WdateDiv #dpTime .tm +{ + width:7px; + border:none; + background:#F2F0F1; +} + +.WdateDiv #dpTime #dpTimeUp +{ + display:none; +} + +.WdateDiv #dpTime #dpTimeDown +{ + display:none; +} + +.WdateDiv #dpQS + { + float:left; + margin-right:3px; + margin-top:9px; + *margin-top:6px; + width:16px; + height:16px; + cursor:pointer; + background-position:0px -90px; + } +.WdateDiv #dpControl +{ + text-align:right; + margin-top:3px; +} +.WdateDiv .dpButton +{ + margin-left:2px; + line-height:18px; + *line-height:16px; + width:45px; + background-color:#C3C3C3; + *background-color:#0055CC; + color:#fff; + border:none; + cursor: pointer; +} +.WdateDiv .dpButton:hover +{ + background-color:#0663A2; +} + +.WdateDiv .hhMenu, +.WdateDiv .mmMenu, +.WdateDiv .ssMenu +{ + position:absolute; + padding:3px; + font-size:12px; + color:#333; + border:solid 1px #DEDEDE; + background-color:#F2F0F1; +} + +.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn +{ + width:18px; + height:18px; + line-height:18px; + text-align:center; + background:#fff; +} +.WdateDiv #dpTime .menuOn +{ + background:#0088CC; +} + +.WdateDiv #dpTime td +{ + background:#F2F0F1; +} + +.WdateDiv .hhMenu +{ + top:-87px; + left:35px; + left:32px\9; +} + +.WdateDiv .mmMenu +{ + top:-47px; + left:35px; + left:32px\9; +} + +.WdateDiv .ssMenu +{ + top:-27px; + left:35px; + left:32px\9; +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/develop/skin/whyGreen/datepicker.css b/src/main/webapp/static/My97DatePicker/develop/skin/whyGreen/datepicker.css new file mode 100644 index 0000000..208e733 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/develop/skin/whyGreen/datepicker.css @@ -0,0 +1,277 @@ +/* + * My97 DatePicker 4.7 + * Ƥ:whyGreen + */ + +/* ѡ DIV */ +.WdateDiv{ + width:180px; + background-color:#fff; + border:#C5E1E4 1px solid; + padding:2px; +} +/* ˫Ŀ */ +.WdateDiv2{ + width:360px; +} +.WdateDiv *{font-size:9pt;} + +/**************************** + * ͼ ȫAǩ + ***************************/ +.WdateDiv .NavImg a{ + cursor:pointer; + display:block; + width:16px; + height:16px; + margin-top:1px; +} + +.WdateDiv .NavImgll a{ + float:left; + background:url(img.gif) no-repeat; +} +.WdateDiv .NavImgl a{ + float:left; + background:url(img.gif) no-repeat -16px 0px; +} +.WdateDiv .NavImgr a{ + float:right; + background:url(img.gif) no-repeat -32px 0px; +} +.WdateDiv .NavImgrr a{ + float:right; + background:url(img.gif) no-repeat -48px 0px; +} +/**************************** + * · + ***************************/ +/* · DIV */ +.WdateDiv #dpTitle{ + height:24px; + padding:1px; + border:#c5d9e8 1px solid; + background:url(bg.jpg); + margin-bottom:2px; +} +/* · INPUT */ +.WdateDiv .yminput{ + margin-top:2px; + text-align:center; + border:0px; + height:20px; + width:50px; + color:#034c50; + background-color:transparent; + cursor:pointer; +} +/* ·ýʱʽ INPUT */ +.WdateDiv .yminputfocus{ + margin-top:2px; + text-align:center; + border:#939393 1px solid; + font-weight:bold; + color:#034c50; + height:20px; + width:50px; +} +/* ˵ѡ DIV */ +.WdateDiv .menuSel{ + z-index:1; + position:absolute; + background-color:#FFFFFF; + border:#A3C6C8 1px solid; + display:none; +} +/* ˵ʽ TD */ +.WdateDiv .menu{ + cursor:pointer; + background-color:#fff; + color:#11777C; +} +/* ˵mouseoverʽ TD */ +.WdateDiv .menuOn{ + cursor:pointer; + background-color:#BEEBEE; +} +/* ˵Чʱʽ TD */ +.WdateDiv .invalidMenu{ + color:#aaa; +} +/* ѡƫ DIV */ +.WdateDiv .YMenu{ + margin-top:20px; +} +/* ѡƫ DIV */ +.WdateDiv .MMenu{ + margin-top:20px; + *width:62px; +} +/* ʱѡλ DIV */ +.WdateDiv .hhMenu{ + margin-top:-90px; + margin-left:26px; +} +/* ѡλ DIV */ +.WdateDiv .mmMenu{ + margin-top:-46px; + margin-left:26px; +} +/* ѡλ DIV */ +.WdateDiv .ssMenu{ + margin-top:-24px; + margin-left:26px; +} + +/**************************** + * + ***************************/ + .WdateDiv .Wweek { + text-align:center; + background:#DAF3F5; + border-right:#BDEBEE 1px solid; + } +/**************************** + * , + ***************************/ + /* TR */ +.WdateDiv .MTitle{ + color:#13777e; + background-color:#bdebee; +} +.WdateDiv .WdayTable2{ + border-collapse:collapse; + border:#BEE9F0 1px solid; +} +.WdateDiv .WdayTable2 table{ + border:0; +} +/* TABLE */ +.WdateDiv .WdayTable{ + line-height:20px; + color:#13777e; + background-color:#edfbfb; + border:#BEE9F0 1px solid; +} +.WdateDiv .WdayTable td{ + text-align:center; +} +/* ڸʽ TD */ +.WdateDiv .Wday{ + cursor:pointer; +} +/* ڸmouseoverʽ TD */ +.WdateDiv .WdayOn{ + cursor:pointer; + background-color:#74d2d9 ; +} +/* ĩڸʽ TD */ +.WdateDiv .Wwday{ + cursor:pointer; + color:#ab1e1e; +} +/* ĩڸmouseoverʽ TD */ +.WdateDiv .WwdayOn{ + cursor:pointer; + background-color:#74d2d9; +} +.WdateDiv .Wtoday{ + cursor:pointer; + color:blue; +} +.WdateDiv .Wselday{ + background-color:#A7E2E7; +} +.WdateDiv .WspecialDay{ + background-color:#66F4DF; +} +/* ·ݵ */ +.WdateDiv .WotherDay{ + cursor:pointer; + color:#0099CC; +} +/* ·ݵmouseoverʽ */ +.WdateDiv .WotherDayOn{ + cursor:pointer; + background-color:#C0EBEF; +} +/* Чڵʽ,ڷΧڸʽ,ѡ */ +.WdateDiv .WinvalidDay{ + color:#aaa; +} + +/**************************** + * ʱ + ***************************/ +/* ʱ DIV */ +.WdateDiv #dpTime{ + float:left; + margin-top:3px; + margin-right:30px; +} +/* ʱ SPAN */ +.WdateDiv #dpTime #dpTimeStr{ + margin-left:1px; + color:#497F7F; +} +/* ʱ INPUT */ +.WdateDiv #dpTime input{ + height:20px; + width:18px; + text-align:center; + color:#333; + border:#61CAD0 1px solid; +} +/* ʱ ʱ INPUT */ +.WdateDiv #dpTime .tB{ + border-right:0px; +} +/* ʱ ֺͼ ':' INPUT */ +.WdateDiv #dpTime .tE{ + border-left:0; + border-right:0; +} +/* ʱ INPUT */ +.WdateDiv #dpTime .tm{ + width:7px; + border-left:0; + border-right:0; +} +/* ʱұߵϰť BUTTON */ +.WdateDiv #dpTime #dpTimeUp{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -32px -16px; +} +/* ʱұߵ°ť BUTTON */ +.WdateDiv #dpTime #dpTimeDown{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -48px -16px; +} +/**************************** + * + ***************************/ + .WdateDiv #dpQS { + float:left; + margin-right:3px; + margin-top:3px; + background:url(img.gif) no-repeat 0px -16px; + width:20px; + height:20px; + cursor:pointer; + } +.WdateDiv #dpControl { + text-align:right; + margin-top:3px; +} +.WdateDiv .dpButton{ + height:20px; + width:45px; + margin-top:2px; + border:#38B1B9 1px solid; + background-color:#CFEBEE; + color:#08575B; +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/docs/css/base.css b/src/main/webapp/static/My97DatePicker/docs/css/base.css new file mode 100644 index 0000000..6267c3a --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/css/base.css @@ -0,0 +1,110 @@ +* { + margin: 0; + padding: 0; +} +body { + background: #5b5b5b; + color: #000; + text-align: center; + line-height: 1.6; +} +body, input, select, textarea, table { + font-family: "",Arial, Simsun, Verdana, sans-serif; + font-size: 9pt; + color:#333; +} +img { + border: none; +} +a { + color: #4264BD; +} +li { + line-height:20px; +} +.dCenter { + width: 800px; + margin: 0 auto; + text-align: left; +} + +.dBody{ + background:url("../images/body.jpg") repeat-y top; +} + +.nav { + list-style:none; + float: right; + margin-right: 25px; +} +.nav li { + margin-left: 20px; + float: left; +} + +.navbar { + height: 0px; + line-height: 28px; + margin-bottom: 6px; + color: #fff; + font-size: 14px; +} +.navbar a { + color: #fff; + text-decoration: none; +} +.navbar a:hover { + text-decoration: none; + color: #ccc; +} + +.res-block { + BACKGROUND: url("../images/block/block-top.gif") no-repeat; MARGIN-BOTTOM: 15px; WIDTH: 210px; PADDING-TOP: 5px +} +.res-block-inner { + PADDING-RIGHT: 11px; PADDING-LEFT: 11px; BACKGROUND: url("../images/block/block-body.gif") repeat-y left; PADDING-BOTTOM: 6px; PADDING-TOP: 6px +} +.res-block-bottom { + BACKGROUND: url("../images/block/block-bottom.gif") no-repeat; WIDTH: 210px;height:5px; +} +.res-block H3 { + MARGIN-BOTTOM: 8px; FONT: bold 12px ,tahoma,arial,sans-serif; COLOR: #555 +} +.res-block UL { + FONT: 12px tahoma,arial,sans-serif; MARGIN-LEFT: 15px; COLOR: #555; LIST-STYLE-TYPE: disc +} +.res-block UL LI { + MARGIN: 0px 0px 5px 3px +} +#footer { + background:url("../images/footer.jpg") no-repeat; + height:47px; + text-align:center; + padding-top:9px; + color:#CCC; + font-family:Arial; +} +#footer a { + color: #DDD; + text-decoration: none; +} +/*.logo { + float: left; + margin: 6px 0 0 13px; +} + +#footer { + margin-bottom: 25px; + line-height: normal; + color: #666; + text-align: center; + clear: both; +} +#footer a { + color: #666; +} +#footer a{text-decoration:none;} +#footer a:hover{text-decoration:underline;color:#333;} +* html .mmlink{width:200px;float:right;margin-right:250px;} +.mmlink{width:250px;float:right;margin-right:450px; } +*/ \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/docs/demo.htm b/src/main/webapp/static/My97DatePicker/docs/demo.htm new file mode 100644 index 0000000..0b60b65 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo.htm @@ -0,0 +1,97 @@ + + + + <- ҵڿؼ + + + +" + onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:false,startDate:'%y-%M-01 00:00:00',alwaysUseStartDate:true});"/> + +



      +demoʹٷҳ http://www.my97.net + +

      +

      ϸĶ


      +
      +ע:˰汾Ϊ 4.8 Beta2 build 20111221
      +
      +:
      +[]preloadԤѡ
      +[ǿ]֤ܿɱرerrDealMode=-1
      +[޸]㷨ģʽ,weekMethod
      +[޸]ȥMy97DatePicker.htm
      +[޸]positionij(ԭΪ)
      +[]
      +[]onchangeܴ
      +[]Safari5
      +[]<script>ձǩʱĴ
      +[]ƽģʽµļż
      +[]˫¿ѡ
      +[]iframe,λƫƵ(ż)
      +
      +
      +
      +ʹ÷:
      +
      +1. ȥٷվ,㵱ǰصǷµİ汾,ܶbugΪʹõIJ°汾ɵ
      +ٷҳ:http://www.my97.net
      +
      +
      +2. My97DatePickerĿ¼,ĿӦĿ¼
      +
      +My97DatePickerĿ¼¸ļ:
      +  1.1 My97DatePickerĿ¼һ,ƻĿ¼ṹ,Ҳɶļ,ԸĿ¼
      +  1.2 Ŀ¼ļ;:
      +    WdatePicker.js ļ,ڵõĵطʹøļ,ɶ,xx_WdatePicker.jsʽ
      +    calendar.js ڿļ,
      +    Ŀ¼lang ļ,ԸҪļ
      +    Ŀ¼skin Ƥļ,ԸҪƤļ
      +
      +
      +3. ԸԼҪ,ɾҪƤļ
      +
      +
      +4. ԸԼҪ,µƤ
      +Ƥĵַ:http://www.my97.net/dp/skin.asp
      +
      +
      +5. ϸĶʾʹ˵,󲿷ⶼͨ,ϸ
      +ʾ:http://www.my97.net/dp/demo/
      +
      +
      +6. ޷
      +Ȳο:http://www.my97.net/dp/support.asp
      +
      +
      +7. ,֧ҳ޷
      +֧ͨҳṩϵʽϵ,ע:ʱ,һҪصHTMLϸĴϢ
      +
      +
      +8. ʲô,֧ͨҳṩϵʽϵ
      +
      +
      +9. ڿؼЭȤ,Է:http://www.my97.net/dp/license.asp
      +
      +
      +10.ףĿ˳,¼н!
      +
      +---------------------------------------------------------------------
      +ٷҳ
      +http://www.my97.net
      +
      +ʾʹ˵
      +http://www.my97.net/dp/demo/
      +
      +Ƥ:
      +http://www.my97.net/dp/skin.asp
      +
      +Э
      +http://www.my97.net/dp/license.asp  
      +
      +Դ:
      +http://www.my97.net/dp/source.asp
      +
      +֧ҳ
      +http://www.my97.net/dp/support.asp
      diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/index.htm b/src/main/webapp/static/My97DatePicker/docs/demo/index.htm new file mode 100644 index 0000000..78f8b86 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/index.htm @@ -0,0 +1,25 @@ + + + + +My97ڿؼ ʾ & ĵ My97 DatePicker Demo & Doc + + + + + + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.1.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.1.asp.htm new file mode 100644 index 0000000..4ca0c69 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.1.asp.htm @@ -0,0 +1,163 @@ + + + + + + +My97ڿؼ ʾ 湦 My97 Datepicker Demo + + + + + + +
      +
      + + +

      . ܼʾ

      +

      1. 湦

      +
        +
      1. ֵֶ֧ģʽ +

        ֳ֧inputý,֧ʹԪ:<img><div>ȴWdatePickerõڿ

        +
        +

        ʾ1-1-1

        +

        + +
        + <input id="d11" type="text" onClick="WdatePicker()"/>

        +
        +
        +

        ʾ1-1-2 ͼ괥

        +

        + +
        + <input id="d12" type="text"/>
        + <img onclick="WdatePicker({el:'d12'})" src="../skin/datePicker.gif" width="16" height="22" align="absmiddle">
        + ע:ֻҪؼid

        +
        +
      2. +
      3. ,,ѡ +

        ʱ򶼾߱
        + 1. + ͨͼѡ
        +
        +
        + 2. ֱʹü
        +
        +
        + 3. ֱӴӵѡ
        +
        +
        + :ʾ,ûͬһť5ʱ,Զ

        +
      4. +
      5. ֧ʾ +

        ͨisShowWeekԾǷ,ڷڵʱ򻹿ͨԴԶ¼APIѡ

        +
        +
        +

        ʾ1-2-1 ʾӦ

        +

        + +
        + <input id="d121" type="text" onfocus="WdatePicker({isShowWeek:true})"/>
        +
        + ע:㷨οISO8601ķ,Դ,:http://en.wikipedia.org/wiki/ISO_week_date
        +
        + 㷨ѡ(4.8)
        + :weekMethod
        +㷨ͬĵطһЩ
        +㷨
        +1. ISO8601:涨һΪһ,Ĭֵ
        +2. MSExcel:11ڵ

        +
        +
        +

        ʾ1-2-2 onpicked¼ֵܸı

        +

        + +    + ѡ˵ + + (Wʽ), ʹWWʽ: + +
        + <input type="text" class="Wdate" id="d122" onFocus="WdatePicker({isShowWeek:true,onpicked:function() {$dp.$('d122_1').value=$dp.cal.getP('W','W');$dp.$('d122_2').value=$dp.cal.getP('W','WW');}})"/>
        +
        + onpicked ÷Զ¼
        + $dp.cal.getP ÷ú
        +

        +
        +
      6. +
      7. ֻ,ĩ +

        readOnly true false ָڿǷֻ
        + highLineWeekDay ture false ָǷĩ

        +
      8. +
      9. ťԶ +

        հťͽ찴ť,ԸҪԶ,ǷֱӦ isShowClear isShowToday Ĭֵtrue

        +
        +

        ʾ1-5 չ

        +

        ðreadOnlyΪtrue,ʹհť,ûȻֵdelete
        + +
        + <input class="Wdate" type="text" id="d15" onFocus="WdatePicker({isShowClear:false,readOnly:true})"/>

        +
        +
      10. +
      11. Զѡʾλ +

        ؼҳ߽ʱ,Զѡʾλ,ûбҪĵᱻҳ߽ס.

        +
      12. +
      13. Զ嵯λ +

        ؼҳ߽ʱ,Զѡʾλ.㻹ʹpositionԵλ.

        +
        +
        +

        ʾ1-6 ͨposition,Զ嵯λ

        +

        ʹpositonָ,ڵΪ{left:100,top:50}
        + +
        + <input class="Wdate" type="text" id="d16" onfocus="WdatePicker({position:{left:100,top:50}})"/>
        +
        + positionԵϸ÷Ա

        +
        +
      14. +
      15. Զڵĵһ(4.6) +

        ҵϰ߲ͬ,ЩϲΪһ,ЩһΪһ.
        +:firstDayOfWeek: 0 - 6 һ,0: 1:һ Դ

        +
        +

        ʾ1-7 һΪһ

        +

        + +
        + <input class="Wdate" type="text" id="d17" onfocus="WdatePicker({firstDayOfWeek:1})"/>
        +

        +
        +
      16. +
      +

      2. ɫ

      +

      3. ԺԶƤ

      +

      4. ڷΧ

      +

      5. Զ¼

      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.2.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.2.asp.htm new file mode 100644 index 0000000..f4df0c4 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.2.asp.htm @@ -0,0 +1,382 @@ + + + + + + +My97ڿؼ ʾ ɫ 湦 My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      2. ɫ

      +
        +
      1. ƽʾ + +

        ڿؼ֧ƽʾ,ֻҪһeContԾͿ԰ʹ,败,ֱʾҳ

        +
        +
        +

        ʾ2-1 ƽʾʾ

        +
        + +

        <div id="div1"></div>
        + <script>
        + WdatePicker({eCont:'div1',onpicked:function(dp){alert('ѡ:'+dp.cal.getDateStr())}})
        + </script>
        +
        + $dp.cal.getDateStr ÷ú

        +
        +
      2. +
      3. ֶ֧ + +

        ˿Խֵظinput,ͨelԽֵظԪ(:textarea,div,span),innerHTMLԵHTMLԪ

        +
        +

        ʾ2-2 ڷص<span>

        +

        2008-01-01
        +
        + :
        + <span id="demospan">2008-01-01</span>
        + <img onClick="WdatePicker({el:'demospan'})" src="../../../skin/datePicker.gif" width="16" height="22" align="absmiddle" style="cursor:pointer" />

        +
        +
      4. +
      5. ʼڹ
        + ע:ڸʽ realDateFmt realTimeFmt һ¶ dateFmt һ +

        ʱĿҪѡ֮,Ĭϵ㿪ʼڶǵǰ,ѡdz鷳,ͨʼڹܼalwaysUseStartDateɽ

        +
        +

        ʾ2-3-1 ʼڼӦ

        +

        ĬϵʼΪ 1980-05-01
        + ڿΪֵʱ,ʹ 1980-05-01 Ϊʼ
        +
        + +
        + <input type="text" id="d221" onFocus="WdatePicker({startDate:'1980-05-01'})"/>

        +
        +
        +

        ʾ2-3-2 alwaysUseStartDateӦ

        +

        ĬϵʼΪ 1980-05-01
        + ڿǺֵ,ʼʹ 1980-05-01 Ϊʼ
        +
        + +
        + <input type="text" id="d222" onFocus="WdatePicker({startDate:'1980-05-01',alwaysUseStartDate:true})"/>

        +
        +
        +

        ʾ2-3-3 ʹò

        +

        ʹþֵ̬,ʹö̬(:%y,%Mֱʾǰ)
        +
        + ʾ,ʹõ굱µ1,ʱʹ00:00:00Ϊʼʱ
        +
        + +
        + <input type="text" id="d233" onFocus="WdatePicker({startDate:'%y-%M-01 00:00:00',dateFmt:'yyyy-MM-dd HH:mm:ss',alwaysUseStartDate:true})"/>

        +
        +
      6. +
      7. Զʽ + +

        yMdHmswWֱʱ,ЩԪԶԻڸʽ.

        +
        + ڸʽ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ʽ˵
        yݱʾΪλ֡ݶλнʾλλ
        yy ͬϣСλǰ油㡣
        yyyݱʾΪλ֡λǰ油㡣
        yyyyݱʾΪλ֡λǰ油㡣
        M·ݱʾΪ 1 12
        MMͬϣСλǰ油㡣
        MMM·ݵд һ ʮ (Ӣ״̬ Jan to Dec)
        MMMM·ݵȫ һ ʮ (Ӣ״̬ January to December)
        dڱʾΪ 1 31 ֡
        ddͬϣСλǰ油㡣
        H СʱʾΪ 0 23 ֡
        HHͬϣСλǰ油㡣
        mӱʾΪ 0 59 ֡
        mmͬϣСλǰ油㡣
        sʾΪ 0 59 ֡
        ssͬϣСλǰ油㡣
        wڶӦ 0 () - 6 ()
        Dڵд һ (Ӣ״̬ Sun to Sat)
        DDڵȫ һ (Ӣ״̬ Sunday to Saturday)
        WܶӦ (1 - 53)
        WWͬϣСλǰ油 (01 - 53)
        +
        + ʾ
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ʽֵַ
        yyyy-MM-dd HH:mm:ss2008-03-12 19:20:00
        yyM083
        yyyyMMdd20080312
        :yyyyMd HHʱmm :2008312 19ʱ20
        H:m:s19:20:0
        y8
        MMMM d, yyyy 12, 2008
        +
        +

        ʾ 2-4-1: ʱ

        +

        + +
        + <input type="text" id="d241" onfocus="WdatePicker({dateFmt:'yyyyMMdd HHʱmmss'})" class="Wdate" style="width:300px"/>
        +
        + ע:βѡڵԭ, autoPickDate

        +
        +
        +

        ʾ 2-4-2 ʱ

        +

        + +
        + <input type="text" id="d242" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'H:mm:ss'})" class="Wdate"/>
        +
        + ע:ǰʹƤ(skin),ῴһͬƤ,ƤԶͶ̬лƤ

        +
        +
        +

        ʾ 2-4-3

        +

        + +
        + <input type="text" id="d243" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyyMM'})" class="Wdate"/>

        +
        +
        +

        ʾ 2-4-4 ȡϵͳʶֵ(Ҫ)

        +

        199975 Dzܹϵͳʶ,תΪܹʶ 1999-07-05
        +
        + + ʵֵ: + +
        + <input id="d244" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyyMd',vel:'d244_2'})"/>
        + <input id="d244_2" type="text" />
        +
        + ע:ʵӦ,һvelָΪһhiddenؼ,Ϊ˰ʵֵչʾ,ʹı
        + ؼ: vel ָһؼؼID,value(input),ڴ洢ʵֵ(ҲrealDateFmtrealTimeFmtʽֵ)

        +
        +
        +

        ʾ 2-4-5 , , (4.6)

        +

        + +
        + <input type="text" id="d245" onfocus="WdatePicker({dateFmt:'DD, MMMM d, yyyy'})" class="Wdate"/>

        +
        +
      8. +
      9. ˫(4.6) +

        ͬʱµ

        +
        +

        ʾ2-5 ˫

        +

        + +
        + <input class="Wdate" type="text" onfocus="WdatePicker({doubleCalendar:true,dateFmt:'yyyy-MM-dd'})"/>
        +
        + ע:˫һֻڰԪصij,øʱ,autoPickDateԶΪtrue

        +
        +
      10. +
      11. Զ + +

        Ϊ3ģʽ:ʾ(Ĭ) Զ ,ڿеֵϸʽʱ,ϵͳ᳢Զ޸,޸ʧܻõľģʽд,жϹܷdzԱ֤ûֵһϷֵ

        +
        +

        ʾ2-6-1 Ϸʾ

        +

        ڿһϷ(:1997-02-29),
        + ʹĬݴģʽ ʾģʽ errDealMode = 0 ʱ,ʾ
        + +
        +
        + ע:1997겻Ŷ

        +
        +
        +

        ʾ2-6-2 ƷΧҲΪһϷ

        +

        2000-01-10 ,¿ 2000-01-10(2000-01-12)ҲᱻΪDzϷ
        + Զģʽ errDealMode = 1 ʱ,Զָǰһȷֵ
        + +

        +
        +
        +

        ʾ2-6-3 ʹЧЧڹƵҲΪһϷ

        +

        :
        + 2008-02-20 Ч
        + 2008-02-02 2008-02-09 2008-02-16 2008-02-23 Ч
        + Ч
        + Գ¿Щ,뿪
        +
        + ģʽ errDealMode = 2 ʱ,ʾ͸,ֻһ,ʱڿ򲻻
        + +
        +
        + ע::WdateFmtErrskinĿ¼WdatePicker.cssж

        +
        +
      12. +
      13. ޼ʾ + +

        ڿؼ,㶼ҪĻᱻiframeڵӰͻ,ΪMy97ڿؼǿԿ޼ʾ

        +
        +

        ʾ2-7 ޼ʾ

        +

        ޿Խiframe,ôǶ׿ܶص,ʹйҲ
        + ע:Javascript޷Խframeset,My97ڿؼ޿Խiframe,κεframesetʹiframe

        + +
        +
      14. +
      15. + +

        ݸʽΪyyyʽʱ,ݲyearOffset(Ĭֵ1911Ԫ),ʵ

        +
        +

        ʾ2-8 ʾ

        +

        + +
        + <input type="text" id="d28" onClick="WdatePicker({dateFmt:'yyy/MM/dd'})"/>
        +
        + ע:ݸʽóyyyʱ,ڽȥһyearOffset(ĬֵΪ:1911),ʹĬֵ,IJ,ͨʽ

        +
        +
      16. +
      17. +

        ڿֵʱ,޸ijԺ,ֻҪťͿʵʱڵı༭

        +
        +

        ʾ2-9 ںʱı༭ʾ

        +

        ԳԶе·ݸΪ1,Ȼ,ᷢ 2000-02-29 01:00:00 Ϊ 2000-01-29 01:00:00
        + +

        +
        +
      18. +
      19. Ϊ̴ + +

        elֵthis,ʡ,еel:thisԲд
        + ڿΪdisabledʱ,ֹ(ѡ)
        + ûжonpicked¼,Զıonchange¼
        + ûжoncleared¼,ʱ,Զonchange¼

        +
      20. +
      21. + +

        readOnly,ָڿǷֻ
        + highLineWeekDay,ָǷĩ
        + isShowOthers,ָǷʾµ
        + class="Wdate"ͻѡұ߳ͼ

        +
      22. +
      +

      3. ԺԶƤ

      +

      4. ڷΧ

      +

      5. Զ¼

      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.3.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.3.asp.htm new file mode 100644 index 0000000..b5e71e7 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.3.asp.htm @@ -0,0 +1,97 @@ + + + + + + +My97ڿؼ ʾ ԺƤ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      3. ԺԶƤ

      +
      +
        +
      1. ֧ + +

        ͨlang,Ϊÿڿؼ,ȻҲͨWdatePicker.jsȫֵ
        + б԰װ˵

        +
        +

        ʾ3-1 ʾ

        +

        : + +
        + <input id="d311" class="Wdate" type="text" onFocus="WdatePicker({lang:'zh-tw'})"/>

        +

        Ӣ: + +
        + <input id="d312" class="Wdate" type="text" onFocus="WdatePicker({lang:'en'})"/>

        +

        : + +
        + <input id="d313" class="Wdate" type="text" onFocus="WdatePicker({lang:'zh-cn'})"/>
        +
        + ע:Ĭlang='auto',Զѡ.
        +
        + :ܶĿ,й̶ѡ,ϣѡǿij,:̨ͨԵѡ,ʵʵǺ׵,My97Datepickerֶ֧ļ,cn_WdatePicker.js,en_WdatePicker.js(ע,WdatePicker.jsβ)ȵ,ЩWdatePicker.jsòͬĬ,Ƥ,ʽõIJ,Ȼҳϵͳ벻ͬxx_WdatePicker.js
        +

        +
        +
      2. +
      3. ԶͶ̬лƤ + + תƤ +

        ͨskin,ΪÿڿؼƤ,ȻҲͨWdatePicker.jsȫֵƤ
        + ƤбƤװ˵Ƥ

        +
        +

        ʾ3-2 Ƥʾ

        +

        ĬƤdefault: skin:'default'
        + +
        + <input id="d321" class="Wdate" type="text" onfocus="WdatePicker()"/>
        +
        + ע:WdatePickerskin='default',Դ˴ʡ,ͬ,WdatePickerskinó'whyGreen'ôڲָƤ¶ʹ'whyGreen'Ƥ

        +


        + whyGreenƤ: skin:'whyGreen'
        +
        + +
        + <input id="d322" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen'})"/>

        + ע:Ƥ,뵽Ƥ

        +
        +
      4. +
      +

      4. ڷΧ

      +

      5. Զ¼

      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.4.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.4.asp.htm new file mode 100644 index 0000000..dfbfbb0 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.4.asp.htm @@ -0,0 +1,335 @@ + + + + + + +My97ڿؼ ʾ ڷΧ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      4. ڷΧ

      +
        +
      1. ̬
        + ע:ڸʽ realDateFmt realTimeFmt һ¶ dateFmt һ +

        ԸͨminDate(С),maxDate()Ϊֵ̬,޶ڵķΧ

        +

        ʾ4-1-1 ڵķΧ 2006-09-102008-12-20

        +


        +<input id="d411" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',minDate:'2006-09-10',maxDate:'2008-12-20'})"/>

        +
        +

        ʾ4-1-2 ڵķΧ 2008-3-8 11:30:00 2008-3-10 20:59:30

        +


        +<input type="text" class="Wdate" id="d412" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2008-03-08 11:30:00',maxDate:'2008-03-10 20:59:30'})" value="2008-03-09 11:00:00"/>

        +
        +

        ʾ4-1-3 ڵķΧ 20082 200810

        +


        +<input type="text" class="Wdate" id="d413" onfocus="WdatePicker({dateFmt:'yyyyM',minDate:'2008-2',maxDate:'2008-10'})"/>

        +
        +

        ʾ4-1-4 ڵķΧ 8:00:00 11:30:00

        +


        +<input type="text" class="Wdate" id="d414" onfocus="WdatePicker({dateFmt:'H:mm:ss',minDate:'8:00:00',maxDate:'11:30:00'})"/>

        +
      2. +
      3. ̬
        + ע:ڸʽ realDateFmt realTimeFmt һ¶ dateFmt һ +

        ͨϵͳĶ̬,%y(ǰ),%M(ǰ)޶ڷΧ,㻹ͨ{}бʽ,:{%d+1}:ʾ
        +
        + ̬

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ʽ˵
        %y ǰ
        %M ǰ
        %d ǰ
        %ldһ
        %H ǰʱ
        %m ǰ
        %s ǰ
        {}ʽ,:{%d+1}:ʾ
        #F{}{}֮ǺдԶJS
        +
        +

        ʾ4-2-1 ֻѡǰ()

        +


        +<input id="d421" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"/>

        +
        +
        +

        ʾ4-2-2 ʹʽ ֻѡԺ()

        +


        +<input id="d422" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"/>

        +
        +
        +

        ʾ4-2-3 ֻѡµ1һ

        +


        +<input id="d423" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld'})"/>

        +
        +
        +

        ʾ4-2-4 ֻѡ7:00:0021:00:00

        +


        +<input id="d424" class="Wdate" type="text" onfocus="WdatePicker({dateFmt:'yyyy-M-d H:mm:ss',minDate:'%y-%M-%d 7:00:00',maxDate:'%y-%M-{%d+1} 21:00:00'})"/>

        +
        +
        +

        ʾ4-2-5 ʹʽ ֻѡ 20Сʱǰ 30Сʱ

        +


        +<input id="d425" class="Wdate" type="text" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d {%H-20}:%m:%s',maxDate:'%y-%M-%d {%H+30}:%m:%s'})"/>

        +
        +
      4. +
      5. űԶ
        + ע:ڸʽ realDateFmt realTimeFmt һ¶ dateFmt һ +

        ϵͳṩ$dp.$D$dp.$DVAPI,㻹ͨ #F{} ԶĽű,κ

        +

        ʾ4-3-1 ǰڲܴںڶܴ 2020-10-01

        +

        ͬЧڴ + + + +
        + <input id="d4311" class="Wdate" type="text" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4312\')||\'2020-10-01\'}'})"/>
        +<input id="d4312" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4311\')}',maxDate:'2020-10-01'})"/>
        +
        + ע:
        + ڵڸʽͬ
        +
        $dp.$ ൱ document.getElementById .
        +ôΪʲô ' ʹ \' ? Ϊ " ' Χĺʹ,ʹת \ ,ʾJS﷨.
        +طʹʱע \' ij " ' ʹ.
        +
        +#F{$dp.$D(\'d4312\')||\'2020-10-01\'} + ʾ d4312 Ϊʱ, 2020-10-01 ֵΪֵ
        +

        +
        +

        ʾ4-3-2 ǰ+3 ܴ

        +

        ڴ + + + +
        +<input type="text" class="Wdate" id="d4321" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4322\',{d:-3});}'})"/>
        +<input type="text" class="Wdate" id="d4322" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4321\',{d:3});}'})"/>
        +
        + ʹ $dp.$D Խڿеֵ,϶ڲ:
        +: id={ַ}Ҫıidֵ , obj={}ڲ
        +ڲ÷:
        +y,M,d,H,m,sֱʱ
        +
        +Ϊʱ,ʾֱȡֵ,(ʾ4-3-1еIJǿյ)
        +{M:5,d:7} ʾ 7
        +{y:1,d:-3} ʾ 13
        +{d:1,H:1} ʾһ1Сʱ

        +
        +

        ʾ4-3-3 ǰ+32 ܴ ǰڶܴ 2020-4-3ȥ32 ܴ 2020-4-3

        +

        סڴ + + + +
        +<input type="text" class="Wdate" id="d4331" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4332\',{M:-3,d:-2})||$dp.$DV(\'2020-4-3\',{M:-3,d:-2})}'})"/>
        +<input type="text" class="Wdate" id="d4332" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4331\',{M:3,d:2});}',maxDate:'2020-4-3'})"/>
        +
        +ע:
        +
        #F{$dp.$D(\'d4332\',{M:-3,d:-2}) || $dp.$DV(\'2020-4-3\',{M:-3,d:-2})}
        +ʾ d4332 Ϊʱ, $dp.$DV(\'2020-4-3\',{M:-3,d:-2})} ֵΪֵ

        +

        ʹ $dp.$DV Խʽֵ,϶ڲ:
        + : value={ַ}Ҫֵ , obj={}ڲ
        + ÷ͬ $dp.$D , $dp.$DV(\'2020-4-3\',{M:-3,d:-2}) ʾ 2020-4-3ȥ32

        +
        +

        ʾ4-3-4 JS,κҪ

        +

        Զתɵһ,Ȼ,ʾûʵʵ;,ֻΪʾĿ
        + + +
        +<script>
        +//һ
        +function randomDate(){
        +var Y = 2000 + Math.round(Math.random() * 10);
        +var M = 1 + Math.round(Math.random() * 11);
        +var D = 1 + Math.round(Math.random() * 27);
        +return Y+'-'+M+'-'+D;
        +}
        +</script>
        +<input type="text" class="Wdate" id="d434" onFocus="var date=randomDate();WdatePicker({minDate:date,maxDate:date})"/>

        +
        +
      6. +
      7. Ч +

        ʹô˹ܽӦ,:disabledDays (06 ֱ )

        +

        ʾ4-4-1 Ӧ

        +


        +<input id="d441" type="text" class="Wdate" onFocus="WdatePicker({disabledDays:[6]})"/>

        +
        +

        ʾ4-4-2 Ӧ

        +


        + <input id="d442" type="text" class="Wdate" onFocus="WdatePicker({disabledDays:[0,6]})"/>

        +
        +
      8. +
      9. Ч
        + ע:ڸʽ realDateFmt realTimeFmt һ¶ dateFmt һ +

        ʹô˹ܽ,ָһ,ֻҪϤʽ,Ծ鷢

        + ÷(ƥ):
        +Ϥʽ,ƥ÷
        +Ϥ,Բοijʾ
        +['2008-02-01','2008-02-29'] ʾ 2008-02-01 2008-02-29
        +['2008-..-01','2008-02-29'] ʾ 2008-·-01 2008-02-29
        +['200[0-8]]-02-01','2008-02-29'] ʾ [20002008]-02-01 2008-02-29
        +['^2006'] ʾ 2006

        +

        ,ʹ %y %M %d %H %m %s ȱ, ÷̬ͬ ע:%ldʹ
        + ['....-..-01','%y-%M-%d'] ʾ ݺ·ݵĵһͽ
        + ['%y-%M-{%d-1}','%y-%M-{%d+1}'] ʾ

        +

        Ȼ,˿,ʱ
        + ['....-..-.. 10\:00\:00'] ʾ ÿ10 (ע : Ҫ ʹ \: )

        +

        ٶ,鷢ܰ!

        +
        +

        ʾ4-5-1 ÿ·ݵ 5 15 25

        +


        +<input id="d451" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['5$']})"/>
        +
        +ע +:'5$' ʾ 5 β ע $ ÷

        +
        +

        ʾ4-5-2 2000-01-01

        +


        +<input id="d452" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['^19']})"/>
        +
        + ע:'^19' ʾ 19 ͷ ע ^ ÷
        + Ȼ,ʹminDateʵƵĹ Ҫ ʾ ^ ÷

        +
        +

        ʾ4-5-3 min/maxDateʹ,԰ѿѡڷָɶ

        +

        ʾ¿ڷָ ֱ: 1-3 8-10 16-24 26,27 29-ĩ
        +
        +<input id="d453" type="text" class="Wdate" onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$','1[1-5]$','2[58]$']})"/>

        +
        +

        ʾ4-5-4 min/maxDate disabledDays disabledDates ʹ ʹҪdz̵Ҳ

        +


        +<input id="d454" type="text" class="Wdate" onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$','1[1-5]$','2[58]$'],disabledDays:[1,3,6]})"/>

        +
        +

        ʾ4-5-5 ǰһСʱͺһСʱʱ ʹ %y %M %d %H %m %s ȱ

        +

        Сʱʱ,ֵᷢȻʱӦǰһСʱͺһСʱǻɫ
        + +
        + <input id="d2a25" type="text" class="Wdate" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',disabledDates:['%y-%M-%d {%H-1}\:..\:..','%y-%M-%d {%H+1}\:..\:..']})"/>
        +
        + ע:%y %M %d̬

        +
        +

        ʾ4-5-6 #F{}Ҳǿʹõ

        +

        ʾԶ庯 0-23еκһСʱ
        + Сʱѡ,ᷢһСʱõ,ÿνõСʱͬ
        + + +
        +<script>
        +function randomH(){
        +//һ 0-23
        +var H = Math.round(Math.random() * 23);
        +if(H<10) H='0'+H;
        +// '^' +
        +return '^'+H;
        +}
        +</script>
        +<input type="text" class="Wdate" id="d456" onFocus="WdatePicker({dateFmt:'HH:mm:ss',disabledDates:['#F{randomH()}']})"/>

        +
      10. +
      11. Ч +

        ʹЧڿԺܷĽòõ,ֻҪٲڵ,ЧڵĹܾͷdzʺ.
        + ؼ: opposite ĬΪfalse, Ϊtrueʱ,ЧڱЧ,ԶЧ,첻

        +
        +

        ʾ4-6 ֻ ÿ·ݵ 5 15 25

        +


        +<input id="d46" type="text" class="Wdate" onFocus="WdatePicker({opposite:true,disabledDates:['5$']})"/>
        +
        +ע +:'5$' ʾ 5 β ע $ ÷

        +
        +
      12. +
      13. +

        ڵ÷ȫЧЧȫͬ,oppositeԶЧ
        +
        + ؼ:
        + specialDays (06 ֱ ) ÷ͬЧ
        + specialDates ÷ͬЧ,ǶʱЧ

        +
        +

        ʾ4-7-1 ÿ һ

        +


        +<input id="d471" type="text" class="Wdate" onFocus="WdatePicker({specialDays:[1,5]})"/>

        +
        +
        +

        ʾ4-7-2 ÿ 1 15

        +


        +<input id="d472" type="text" class="Wdate" onFocus="WdatePicker({specialDates:['....-..-01','....-..-15']})"/>

        +
        +
      14. +
      +

      5. Զ¼

      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp-.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp-.htm new file mode 100644 index 0000000..1397e1d --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp-.htm @@ -0,0 +1,260 @@ + + + + + + +My97ڿؼ ʾ Զ¼ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      5. Զ¼

      +
        +
      1. Զ¼ + +

        ҪһЩӵIJ,Ҳص,ڿؼԴԶ¼.,㻹Զ¼еṩAPIչ,ԿͨٵĴ㼰Ի.
        +
        + ע漸Ҫָ,ı̴ܶ
        + this: ָı
        + dp: ָ$dp
        + dp.cal: ָڿؼ

        + ע:ԭͱʹ function(dp){} ģʽ,,ںڲſʹdp

        +
      2. +
      3. onpicking onpicked ¼ + +
        +

        ʾ5-2-1 onpicking¼ʾ

        +

        + +
        + <input type="text" id="5421" onFocus="WdatePicker({onpicking:function(dp){if(!confirm('ڿԭֵΪ: '+dp.cal.getDateStr()+', Ҫѡֵ:' + dp.cal.getNewDateStr() + '?')) return true;}})" class="Wdate"/>
        +
        + ע:ע⵽dp.cal.getDateStrdp.cal.getNewDateStr÷? ú

        +
        +
        +

        ʾ5-2-2 ʹonpickedʵѡ

        +

        ѡһڵʱ,ڶѡԶ
        + ڴ: + + + +
        + ע:һؼд
        + <input id="d5221" class="Wdate" type="text" onFocus="var d5222=$dp.$('d5222');WdatePicker({onpicked:function(){d5222.focus();},maxDate:'#F{$dp.$D(\'d5222\')}'})"/>
        +
        +<input id="d5222" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})"/>
        +
        + ע:$dp.$һú,൱document.getElementById

        +
        +
        +

        ʾ5-2-3 ѡֵֵı

        +

        + + + + + + + + ʱ + + + + + + + +
        + <input type="text" id="d523_y" size="5"/> +
        + <input type="text" id="d523_M" size="3"/> +
        + <input type="text" id="d523_d" size="3"/> +
        + <input type="text" id="d523_HH" size="3"/> + ʱ
        + <input type="text" id="d523_mm" size="3"/> +
        + <input type="text" id="d523_ss" size="3"/> +
        + <img onclick="WdatePicker({el:'d523',dateFmt:'yyyy-MM-dd HH:mm:ss',onpicked:pickedFunc})" src="../../../skin/datePicker.gif" width="16" height="22" align="absmiddle" style="cursor:pointer"/>
        + <script>
        + function pickedFunc(){
        + $dp.$('d523_y').value=$dp.cal.getP('y');
        + $dp.$('d523_M').value=$dp.cal.getP('M');
        + $dp.$('d523_d').value=$dp.cal.getP('d');
        + $dp.$('d523_HH').value=$dp.cal.getP('H');
        + $dp.$('d523_mm').value=$dp.cal.getP('m');
        + $dp.$('d523_ss').value=$dp.cal.getP('s');
        + }
        + </script>
        +
        + ע:el:'d523',㲻Ҫd523,԰ijhidden,elԱָ
        + $dp.$$dp.cal.getPú

        +
        +
      4. +
      5. onclearing oncleared ¼ + +
        +

        ʾ5-3-1 ʹonclearing¼ȡղ

        +

        + +
        + <input type="text" class="Wdate" id="d531" onFocus="WdatePicker({onclearing:function(){if(!confirm('ڿֵΪ:'+this.value+', ȷʵҪ?'))return true;}})"/>
        +
        + ע:onclearingtrueʱ,ϵͳ¼ȡ,
        + û$dp,ԺԭʡԲdp

        +
        +
        +

        ʾ5-3-2 ʹcalȡõǰѡ·(ʹ dp.cal)

        +

        + +
        + <input type="text" class="Wdate" id="d532" onFocus="WdatePicker({oncleared:function(dp){alert('ǰѡ·Ϊ:'+dp.cal.date.M);}})"/>

        +
        +
        +

        ʾ5-3-3 ۺʹ¼

        +

        + + +
        + <script>
        + function d533_focus(element){
        + var clearingFunc = function(){ + if(!confirm('ڿֵΪ:'+this.value+', ȷʵҪ?')) return true; + }
        + var clearedFunc = function(){ + alert('ڿѱ'); + }
        + WdatePicker({el:element,onclearing:clearingFunc,oncleared:clearedFunc})
        + }
        + </script>
        + <input type="text" class="Wdate" id="d533" onFocus="d533_focus(this)"/>

        +
        +
      6. +
      7. ʱ changingchanged

        ʱ붼жӦchangingchanged¼,ֱ:
        + ychanging ychanged
        + Mchanging Mchanged
        + dchanging dchanged
        + Hchanging Hchanged
        + mchanging mchanged
        + schanging schanged
        +

        +
        +

        ʾ5-4-1 ոıʱϢ

        +

        + + +
        + <input type="text" class="Wdate" onFocus="WdatePicker({dchanging:cDayFunc, Mchanging:cMonthFunc, ychanging:cYearFunc, dchanged:cDayFunc, Mchanged:cMonthFunc, ychanged:cYearFunc})"/>
        + <script>
        + function cDayFunc(){
        +cFunc('d');
        +}
        +function cMonthFunc(){
        +cFunc('M');
        +}
        +function cYearFunc(){
        +cFunc('y');
        +}
        +function cFunc(who){
        +var str,p,c = $dp.cal;
        +if(who=='y'){
        +str='';
        +p='y';
        +}
        +else if(who=='M'){
        +str='·';
        +p='M';
        +}
        +else if(who=='d'){
        +str='';
        +p='d';
        +}
        +alert(str+'ı!\n$dp.cal.date.'+p+'='+c.date[p]+'\n$dp.cal.newdate.'+p+'='+c.newdate[p]);
        +}
        +</script>

        +
        + õ $dp.cal.date $dp.cal.newdate ,ܴ﷢ǵIJ֮ͬ?
        + йԵú +

        +
        +


        +

        +
      8. +
      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp.htm new file mode 100644 index 0000000..1397e1d --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.5.asp.htm @@ -0,0 +1,260 @@ + + + + + + +My97ڿؼ ʾ Զ¼ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      5. Զ¼

      +
        +
      1. Զ¼ + +

        ҪһЩӵIJ,Ҳص,ڿؼԴԶ¼.,㻹Զ¼еṩAPIչ,ԿͨٵĴ㼰Ի.
        +
        + ע漸Ҫָ,ı̴ܶ
        + this: ָı
        + dp: ָ$dp
        + dp.cal: ָڿؼ

        + ע:ԭͱʹ function(dp){} ģʽ,,ںڲſʹdp

        +
      2. +
      3. onpicking onpicked ¼ + +
        +

        ʾ5-2-1 onpicking¼ʾ

        +

        + +
        + <input type="text" id="5421" onFocus="WdatePicker({onpicking:function(dp){if(!confirm('ڿԭֵΪ: '+dp.cal.getDateStr()+', Ҫѡֵ:' + dp.cal.getNewDateStr() + '?')) return true;}})" class="Wdate"/>
        +
        + ע:ע⵽dp.cal.getDateStrdp.cal.getNewDateStr÷? ú

        +
        +
        +

        ʾ5-2-2 ʹonpickedʵѡ

        +

        ѡһڵʱ,ڶѡԶ
        + ڴ: + + + +
        + ע:һؼд
        + <input id="d5221" class="Wdate" type="text" onFocus="var d5222=$dp.$('d5222');WdatePicker({onpicked:function(){d5222.focus();},maxDate:'#F{$dp.$D(\'d5222\')}'})"/>
        +
        +<input id="d5222" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})"/>
        +
        + ע:$dp.$һú,൱document.getElementById

        +
        +
        +

        ʾ5-2-3 ѡֵֵı

        +

        + + + + + + + + ʱ + + + + + + + +
        + <input type="text" id="d523_y" size="5"/> +
        + <input type="text" id="d523_M" size="3"/> +
        + <input type="text" id="d523_d" size="3"/> +
        + <input type="text" id="d523_HH" size="3"/> + ʱ
        + <input type="text" id="d523_mm" size="3"/> +
        + <input type="text" id="d523_ss" size="3"/> +
        + <img onclick="WdatePicker({el:'d523',dateFmt:'yyyy-MM-dd HH:mm:ss',onpicked:pickedFunc})" src="../../../skin/datePicker.gif" width="16" height="22" align="absmiddle" style="cursor:pointer"/>
        + <script>
        + function pickedFunc(){
        + $dp.$('d523_y').value=$dp.cal.getP('y');
        + $dp.$('d523_M').value=$dp.cal.getP('M');
        + $dp.$('d523_d').value=$dp.cal.getP('d');
        + $dp.$('d523_HH').value=$dp.cal.getP('H');
        + $dp.$('d523_mm').value=$dp.cal.getP('m');
        + $dp.$('d523_ss').value=$dp.cal.getP('s');
        + }
        + </script>
        +
        + ע:el:'d523',㲻Ҫd523,԰ijhidden,elԱָ
        + $dp.$$dp.cal.getPú

        +
        +
      4. +
      5. onclearing oncleared ¼ + +
        +

        ʾ5-3-1 ʹonclearing¼ȡղ

        +

        + +
        + <input type="text" class="Wdate" id="d531" onFocus="WdatePicker({onclearing:function(){if(!confirm('ڿֵΪ:'+this.value+', ȷʵҪ?'))return true;}})"/>
        +
        + ע:onclearingtrueʱ,ϵͳ¼ȡ,
        + û$dp,ԺԭʡԲdp

        +
        +
        +

        ʾ5-3-2 ʹcalȡõǰѡ·(ʹ dp.cal)

        +

        + +
        + <input type="text" class="Wdate" id="d532" onFocus="WdatePicker({oncleared:function(dp){alert('ǰѡ·Ϊ:'+dp.cal.date.M);}})"/>

        +
        +
        +

        ʾ5-3-3 ۺʹ¼

        +

        + + +
        + <script>
        + function d533_focus(element){
        + var clearingFunc = function(){ + if(!confirm('ڿֵΪ:'+this.value+', ȷʵҪ?')) return true; + }
        + var clearedFunc = function(){ + alert('ڿѱ'); + }
        + WdatePicker({el:element,onclearing:clearingFunc,oncleared:clearedFunc})
        + }
        + </script>
        + <input type="text" class="Wdate" id="d533" onFocus="d533_focus(this)"/>

        +
        +
      6. +
      7. ʱ changingchanged

        ʱ붼жӦchangingchanged¼,ֱ:
        + ychanging ychanged
        + Mchanging Mchanged
        + dchanging dchanged
        + Hchanging Hchanged
        + mchanging mchanged
        + schanging schanged
        +

        +
        +

        ʾ5-4-1 ոıʱϢ

        +

        + + +
        + <input type="text" class="Wdate" onFocus="WdatePicker({dchanging:cDayFunc, Mchanging:cMonthFunc, ychanging:cYearFunc, dchanged:cDayFunc, Mchanged:cMonthFunc, ychanged:cYearFunc})"/>
        + <script>
        + function cDayFunc(){
        +cFunc('d');
        +}
        +function cMonthFunc(){
        +cFunc('M');
        +}
        +function cYearFunc(){
        +cFunc('y');
        +}
        +function cFunc(who){
        +var str,p,c = $dp.cal;
        +if(who=='y'){
        +str='';
        +p='y';
        +}
        +else if(who=='M'){
        +str='·';
        +p='M';
        +}
        +else if(who=='d'){
        +str='';
        +p='d';
        +}
        +alert(str+'ı!\n$dp.cal.date.'+p+'='+c.date[p]+'\n$dp.cal.newdate.'+p+'='+c.newdate[p]);
        +}
        +</script>

        +
        + õ $dp.cal.date $dp.cal.newdate ,ܴ﷢ǵIJ֮ͬ?
        + йԵú +

        +
        +


        +

        +
      8. +
      +

      6. ѡ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.6.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.6.asp.htm new file mode 100644 index 0000000..adf9a8b --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/2.6.asp.htm @@ -0,0 +1,71 @@ + + + + + + +My97ڿؼ ʾ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ܼʾ

      +

      6. ѡ

      +

      ˹ָ5õ,Էûѡ,ָ,ϵͳԶ
      + :
      + qsEnabled Ƿÿѡ, ע:ڸʽﲻ d() Ԫʱ,ѡһֱʾ,մԿ
      + quickSel ѡ,Դ5ѡ,ڸʽͬmin/maxDate
      +
      + ע:
      +
      ڸʽ realDateFmt realTimeFmt ƥ
      + ʹþֵ̬,ʹö̬(:%y,%Mֱʾǰ)
      +

      +
      +

      ʾ6-1 2̬

      +

      + +
      + <input class="Wdate" type="text" onfocus="WdatePicker({dateFmt:'yyyyMMdd',qsEnabled:true,quickSel:['2000-1-10','2000-2-20']})"/>
      +
      + ע:ݲ5ʱ,ϵͳԶȫ

      +
      +
      +

      ʾ6-2 2̬,1̬

      +

      + +
      + <input type="text" class="Wdate" onFocus="WdatePicker({dateFmt:'yyyyMMdd',qsEnabled:true,quickSel:['2000-10-01','%y-%M-01','%y-%M-%ld']})"/>
      +
      + ע:ݲ5ʱ,ϵͳԶȫ

      +
      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/3.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/3.asp.htm new file mode 100644 index 0000000..1abde53 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/3.asp.htm @@ -0,0 +1,431 @@ + + + + + + +My97ڿؼ ʾ ˵ My97 Datepicker Demo + + + + + + +
      +
      + +

      . ˵

      +

      1.

      +
        +
      1. Ա + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Ĭֵ˵
        ̬:ֻWdatePicker.js,һ,޸ľ̬Եֵ
        $wdatebooltrueǷԶWdate Ϊtrueʱ,ֱWdatePicker.jsҳʹ class="Wdate"
        + WdateskinĿ¼µWdatePicker.cssļж
        + ʹĬֵ
        $dpPathstring''Ƿʾָľλ,һΪռ(Զ),Ϊֹ³򴴽õ
        + ÷:
        + ,httpеĵַΪ http://localhost/proName/My97DatePicker/
        + $dpPath = '/proName/My97DatePicker/';
        + ʹĬֵ
        $crossFramebooltrueǷ,һΪtrue,ʱԽ˹ܹر
        :WdatePicker
        elElement StringnullָһؼؼID,valueinnerHTML(input,textarea,span,div,pȱǩ),û洢ʾֵ(ҲdateFmtʽֵ)
        velElement StringnullָһؼؼID,value(input),ڴ洢ʵֵ(ҲrealDateFmtrealTimeFmtʽֵ)
        doubleCalendarboolfalseǷ˫ģʽ,Ϊtrue,򵯳ͬʱʾ2µڿ
        enableKeyboardbooltrue̿ƿ
        enableInputMaskbooltrueı뿪
        autoUpdateOnChangedboolnull޸ʱԪʱ,Զµel,Ĭǹرյ(:ҪȷڲŸ)
        + Ϊfalseʱ Զ
        +Ϊtrueʱ Զ
        +Ϊnullʱ(Ĭֵ) ԪҲȷťʱ Ϊfalse,Ϊtrue
        weekMethodstringISO8601㷨ͬĵطһЩ
        +㷨
        +1. ISO8601:涨һΪһ,Ĭֵ
        +2. MSExcel:11ڵ
        +
        +:http://en.wikipedia.org/wiki/ISO_week_date
        positionobject{} ѡʾλ
        + ע:굥λpx,Եǰ(ܹӰ),ĬϵͳҳСԶѡ
        + :
        + {left:100,top:50}ʾ̶[100,50]
        + {top:50}ʾԶ,ָΪ 50
        + {left:100}ʾԶ,ָΪ 100
        + οʾ
        langstring'auto'ֵΪ'auto'ʱ ԶݿͻԶѡ
        + ֵΪ ʱ langListѡӦ
        + Բο
        skinstring'default'Ƥ ĬԴ defaultwhyGreenƤ
        + cssǿĻ,ԼƤ
        + ԲοƤ
        dateFmtstring'yyyy-MM-dd'ʾʽ
        + ԲοԶʽ
        realDateFmtstring'yyyy-MM-dd'ʶ,ڸʽ
        + Ч(disabledDates),(maxDate),С(minDate)Լڶƥ
        + ʹĬֵ
        realTimeFmtstring'HH:mm:ss'
        realFullFmtstring'%Date %Time'
        minDatestring'1900-01-01 00:00:00'С(עҪrealƥ)
        maxDatestring'2099-12-31 23:59:59'(עҪrealƥ)
        startDatestring'' ʼ,ȵڿʱʾʼ
        + Ϊʱ,ʹýΪʼ(Ĭֵ)
        + ʹôΪʼ(עҪrealƥ)
        + Բοʼʾ
        firstDayOfWeekint0ܵĵһ 0ʾ 1ʾһ
        isShowWeekboolfalseǷʾ
        + Բοʾʾ
        highLineWeekDaybooltrueǷʾ
        isShowClearbooltrueǷʾհť
        isShowTodaybooltrueǷʾ찴ť
        isShowOthersbooltrueΪtrueʱ,һпհ״ʾµڣĩпհ״ʾµ,ʾ
        readOnlyboolfalseǷֻ
        errDealModeint0ģʽ 3ģʽ 0 - ʾ 1 - Զ 2 -
        autoPickDateboolnullΪfalseʱ ڵʱԶ,Ҫͨȷ
        + Ϊtrueʱ ڼɷֵ
        + Ϊnullʱ(Ƽʹ) ʱΪfalse Ϊtrue
        qsEnabledbooltrueǷÿѡ
        autoShowQSboolfalseǷĬʾѡ
        quickSelArraynullѡ,Դ5ѡ
        + ע:ڸʽ realDateFmt realTimeFmt realFullFmt ƥ
        + Բοѡʾ
        disabledDaysArraynullʹô˹ܽӦ
        + 06 ֱ
        + ԲοЧʾ
        disabledDatesArraynullʹô˹ָܽһ
        + ԲοЧʾ
        oppositeboolfalseĬΪfalse, Ϊtrueʱ,ЧڱЧ
        + ע:ԶЧ첻
        + ԲοЧʾ
        specialDatesArraynull,ָڽиʾ
        + Բοʾ
        specialDaysArraynull,ʹô˹ܽӦڽиʾ
        + 06 ֱ
        + Բοʾ
        onpickingfunctionnullĸΪ¼
        + ԲοԶ¼ʾ
        onpickedfunctionnull
        onclearingfunctionnull
        onclearedfunctionnull
        ychanging ychanged
        +Mchanging Mchanged
        +dchanging dchanged
        +Hchanging Hchanged
        +mchanging mchanged
        +schanging schanged
        functionnull(4.6Beta3)
        +
        + y M d H m s ֱʾʱ
        + changing ¼Ըı֮ǰ
        + changed ¼Ըı֮
        +
        + Բοʾ5-4-1
        +
      2. +
      3. ȫĬֵ +

        ͨWdatePicker.jsԿԱÿεöֵ,Ϊɴܶ෽.
        + ĬMy97ΪÿԶĬֵ,ЩĬֵWdatePicker.js޸ĵ
        + Ը˵ϲøЩֵ
        +
        + ȽϲϲĬϵƤdefault ϲ whyGreen Ƥ,
        + ֱWdatePicker.jsskinֵΪ whyGreen
        + ,ÿεÿؼʱ򶼴 skin:'whyGreen'
        + ѧ?

        +
      4. +
      5. õؼ +

        ڿؼʹ onfocus onclick ¼WdatePickerڿؼ
        + WdatePicker({}){}еݶֻԵǰʵЧ,Աе
        + Щ,ﵽ
        + My97ڿؼⷽ÷dz.

        +
      6. +
      7. ÿл +

        öWdatePicker.jsļ, +cn_WdatePicker.js,en_WdatePicker.js,simple_WdatePicker.js
        + ڲͬҳ벻ͬ WdatePicker.js ﵽÿлĿ.
        + ע:ļ _WdatePicker.js(Сд) Ϊ׺, <yourname>_WdatePicker.js

        +
      8. +
      +

      2.

      +
        +
      1. б

        My97DatePickerĿ¼иconfig.js(4.8ԺWdatePicker.js),жδ:
        + var langList =
        + [
        +{name:'en', charset:'UTF-8'},
        +{name:'zh-cn', charset:'gb2312'},
        +{name:'zh-tw', charset:'GBK'}
        +];
        +
        +б,ÿnamecharset.
        +name ʾԵ(ַͬ),õʱ,langֻбе,Զصһ
        +charset ʾӦĿ¼µjsļӦıʽ

        +
      2. +
      3. ԰װ˵ +

        ʵ:
        + 1 ļ lang Ŀ¼
        + 2 config.js б

        +
      4. +
      +

      3. Ƥ

      +
        +
      1. Ƥб +

        My97DatePickerĿ¼иconfig.js(4.8ԺWdatePicker.js),жδ: +
        + var skinList =
        + [
        +{name:'default', charset:'gb2312'},
        +{name:'whyGreen', charset:'gb2312'},
        +{name:'blue', charset:'gb2312'},
        +{name:'simple', charset:'gb2312'}
        +];
        +
        + Ƥб,ÿnamecharset.
        + name ʾƤ,õʱ,skinֻбе,Զصһ
        + charset ʾӦƤĿ¼µcssļ:datepicker.cssӦıʽ

        +
      2. +
      3. Ƥװ˵

        ʵ:
        +1 Ƥļ skin Ŀ¼
        +2 config.js Ƥб +
        +
        + ע:װƤӰ,һֻװԼʹõƤ,3±Ƚ

        +
      4. +
      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp-.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp-.htm new file mode 100644 index 0000000..de570c0 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp-.htm @@ -0,0 +1,177 @@ + + + + + + +My97ڿؼ ʾ 湦 My97 Datepicker Demo + + + + + + +
      +
      + +

      һ.

      +

      . ܼʾ

      +

      . ˵

      +

      . ʹ

      +

      1. ʹøڿؼļмJS(һļ,ļԶ,ɾ), <script language="javascript" type="text/javascript" src="datepicker/WdatePicker.js"></script>
      + ע:src="datepicker/WdatePicker.js" ʵı·
      +
      + 2. WdatePicker
      + WdatePicker ÷:
      +
      + ,jsǺ˽Ļ
      һҪ࿴ĵ
      + ÿһʾʾ涼ش, ؼֱ,ؼֵúֱ Ӧú׿
      +
      + һˮ׼
      +
      ϣܴͷβѹܽܺúÿһ,󲿷ֹ㶼
      +
      + Ǹ
      + ͨ˵ú

      +

      . ú

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ֵ
      $dp.showvoidȫʾѡ
      $dp.hidevoidȫѡ
      $dp.$DStringȫid [string]: ID
      + arg [object]: ڲ,ó
      + {y:[ֵ],M:[ֵ],d:[ֵ],H:[ֵ],m:[ֵ],s:[ֵ]}
      + y,M,d,H,m,s ֱ ʱ
      + {M:3,d:7} ʾ 37
      + {d:1,H:1} ʾ11Сʱ
      idӦڿеַ,϶ڲ,ʹrealʽڴ
      + ο ʾ 4-3-2
      $dp.$DVStringȫv [string]: ַ
      + arg [object]: ͬarg
      ַ,϶ڲ,ʹrealʽڴ
      + ο ʾ 4-3-3
      ºֻ¼Զ庯Ч
      $dp.cal.getPString¼functionp [string]: yMdHmswWDֱ,,,ʱ,,,(0-6),(1-52),(һ-)
      + f [string]: format ʽַ
      + ÷ο 1.4 Զʽ
      ָԱʽַʽֵ[],changing,picking,clearing¼зѡǰֵ
      + ο ʾ 1-2-2
      $dp.cal.getDateStrString ¼functionf [string]: ʽַ,ΪʱʹdateFmt
      ָԱʽַʽֵ[ֵ],changing,picking,clearing¼зѡǰֵ
      $dp.cal.getNewPString¼function÷ͬ$dp.cal.getPָԱʽַʽֵ[],changing,picking,clearing¼зѡֵ
      $dp.cal.getNewDateStrString¼function÷ͬ$dp.cal.getDateStrָԱʽַʽֵ[ֵ],changing,picking,clearing¼зѡֵ
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      ֵ
      $dp.cal.dateobject¼function$dp.cal.date.y:
      + $dp.cal.date.M:
      + $dp.cal.date.d:
      + $dp.cal.date.H: ʱ
      + $dp.cal.date.m:
      + $dp.cal.date.s:
      changing,picking,clearing¼зѡǰڶ
      $dp.cal.newdateobject¼function÷ͬ$dp.cal.datechanging,picking,clearing¼зѡڶ
      +

      . ѽ

      +

      κ,Ȳο ֧
      + Ҳ,ֱblog,ͨϵʽϵ

      +

      . ϵMy97

      +

      * ʹù,иõĽ
      + * ӭ
      + * BLOG: http://my97.cnblogs.com
      + * MAIL: support$my97.net($@)
      + * blogԻEmail,ϸ˵,ܶⶼΪûϸ˵µ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp.htm new file mode 100644 index 0000000..de570c0 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/999.asp.htm @@ -0,0 +1,177 @@ + + + + + + +My97ڿؼ ʾ 湦 My97 Datepicker Demo + + + + + + +
      +
      + +

      һ.

      +

      . ܼʾ

      +

      . ˵

      +

      . ʹ

      +

      1. ʹøڿؼļмJS(һļ,ļԶ,ɾ), <script language="javascript" type="text/javascript" src="datepicker/WdatePicker.js"></script>
      + ע:src="datepicker/WdatePicker.js" ʵı·
      +
      + 2. WdatePicker
      + WdatePicker ÷:
      +
      + ,jsǺ˽Ļ
      һҪ࿴ĵ
      + ÿһʾʾ涼ش, ؼֱ,ؼֵúֱ Ӧú׿
      +
      + һˮ׼
      +
      ϣܴͷβѹܽܺúÿһ,󲿷ֹ㶼
      +
      + Ǹ
      + ͨ˵ú

      +

      . ú

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ֵ
      $dp.showvoidȫʾѡ
      $dp.hidevoidȫѡ
      $dp.$DStringȫid [string]: ID
      + arg [object]: ڲ,ó
      + {y:[ֵ],M:[ֵ],d:[ֵ],H:[ֵ],m:[ֵ],s:[ֵ]}
      + y,M,d,H,m,s ֱ ʱ
      + {M:3,d:7} ʾ 37
      + {d:1,H:1} ʾ11Сʱ
      idӦڿеַ,϶ڲ,ʹrealʽڴ
      + ο ʾ 4-3-2
      $dp.$DVStringȫv [string]: ַ
      + arg [object]: ͬarg
      ַ,϶ڲ,ʹrealʽڴ
      + ο ʾ 4-3-3
      ºֻ¼Զ庯Ч
      $dp.cal.getPString¼functionp [string]: yMdHmswWDֱ,,,ʱ,,,(0-6),(1-52),(һ-)
      + f [string]: format ʽַ
      + ÷ο 1.4 Զʽ
      ָԱʽַʽֵ[],changing,picking,clearing¼зѡǰֵ
      + ο ʾ 1-2-2
      $dp.cal.getDateStrString ¼functionf [string]: ʽַ,ΪʱʹdateFmt
      ָԱʽַʽֵ[ֵ],changing,picking,clearing¼зѡǰֵ
      $dp.cal.getNewPString¼function÷ͬ$dp.cal.getPָԱʽַʽֵ[],changing,picking,clearing¼зѡֵ
      $dp.cal.getNewDateStrString¼function÷ͬ$dp.cal.getDateStrָԱʽַʽֵ[ֵ],changing,picking,clearing¼зѡֵ
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      ֵ
      $dp.cal.dateobject¼function$dp.cal.date.y:
      + $dp.cal.date.M:
      + $dp.cal.date.d:
      + $dp.cal.date.H: ʱ
      + $dp.cal.date.m:
      + $dp.cal.date.s:
      changing,picking,clearing¼зѡǰڶ
      $dp.cal.newdateobject¼function÷ͬ$dp.cal.datechanging,picking,clearing¼зѡڶ
      +

      . ѽ

      +

      κ,Ȳο ֧
      + Ҳ,ֱblog,ͨϵʽϵ

      +

      . ϵMy97

      +

      * ʹù,иõĽ
      + * ӭ
      + * BLOG: http://my97.cnblogs.com
      + * MAIL: support$my97.net($@)
      + * blogԻEmail,ϸ˵,ܶⶼΪûϸ˵µ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo.css b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo.css new file mode 100644 index 0000000..3e94f73 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo.css @@ -0,0 +1,61 @@ + +p,table { + font-weight:normal; +} +td { + padding:3px; + background-color:#ffffff; +} +th { + text-align:center; + padding:3px; + background-color:#ccc; +} +#content { + padding-left:50px; + padding-right:40px; +} +#content h2 { + font-size: 18px; + color: #1E9300; + padding-top:30px; + margin-bottom: 8px; +} +#content h2 a { + color: #1E9300; +} +#content h3 { + margin-top:24px;margin-bottom: 8px; FONT: bold 14px 宋体,tahoma,arial,sans-serif; COLOR:#0033CC; +} +#content h3 a { + color: #0033CC; +} +#content ul { + margin-left: 20px; +} +#content ol { + margin:16px 0px 8px 36px; FONT: bold 9pt 宋体,tahoma,arial,sans-serif; +} +#content ol li{ + margin-top:16px; +} +#content div { + margin-top:20px; + margin-bottom:10px; + border:#333 solid 1px; +} + +#content div h4 { + font-size:9pt; + padding:3px; + background:#EEE; + margin-bottom:5px; +} +#content div p { + padding:5px; +} + +.STYLE1 { + color: #FF0000; +} +.STYLE2 {color: #0000FF} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe.htm new file mode 100644 index 0000000..bc25181 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe.htm @@ -0,0 +1,45 @@ + + + + +My97 DatePicker 4.0 ʾ-1 + + + + +

      Ƕ1:

      +

      ʽΪ:yyyy-MM-dd HH:mm
      + +

      +

      + +

      +

       

      +

       

      +
      + +
      + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe2.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe2.htm new file mode 100644 index 0000000..5518778 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/demo_iframe2.htm @@ -0,0 +1,16 @@ + + + + +My97 DatePicker 4.0 ʾ-2 + + + + +

      Ƕ2:

      +

      + +

      +

      Ƕ2:

      + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/left.htm b/src/main/webapp/static/My97DatePicker/docs/demo/resource/left.htm new file mode 100644 index 0000000..5d0737c --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/left.htm @@ -0,0 +1,120 @@ + + + + + +My97 DatePicker ʾ - Ŀ¼ + + + + + +
      +
      +

      My97DatePicker ʾĵ

      +

      һ.

      + +

      . ܼʾ

      + +

      . ˵

      + +

      . ʹ

      +

      . ú

      +

      . ѽ

      +

      . ϵMy97

      +
      + + +
      +
      +
      + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/main.asp b/src/main/webapp/static/My97DatePicker/docs/demo/resource/main.asp new file mode 100644 index 0000000..60d79ca --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/docs/demo/resource/main.asp @@ -0,0 +1,64 @@ + + + + + + +My97ڿؼ ʾ My97 Datepicker Demo + + + + + + +
      +
      +

      һ.

      +

      1.

      +

      Ŀǰİ汾:4.8

      +

      2. ע

      +
        +
      • My97DatePickerĿ¼һ,ƻĿ¼ṹ,Ҳɶļ,ԸĿ¼
      • +
      • My97DatePicker.htmDZļ,ɾ(4.8Ժ󲻴ڴļ)
      • +
      • Ŀ¼ļ;:
        + WdatePicker.js ļ,ڵõĵطʹøļ,ɶ,xx_WdatePicker.jsʽ
        + config.js ԺƤļ,(4.8ԺϲWdatePicker.js)
        + calendar.js ڿļ,
        + My97DatePicker.htm ʱҳļ,ɾ(4.8Ժ󲻴ڴļ)
        + Ŀ¼lang ļ,ԸҪļ
        + Ŀ¼skin Ƥļ,ԸҪƤļ
      • +
      • WdatePicker.js:$wdate=trueʱ,inputclass="Wdate"ͻѡұ߳ͼ,ϲʽ,԰class="Wdate"ȥ,Ҳͨ޸skinĿ¼µWdatePicker.cssļ޸ʽ
      • +
      +

      3. ֵ֧

      +

      IE 6.0+ , Firefox 2.0+ , Chrome, Opera 9.5+ , Safari 3.0+
      +

      +

       

      +

      ע:IE 8.0ֵ֧,IE8ʹ,ȡϵ,ظHTML

      +

      . ܼʾ

      +

      . ˵

      +

      . ʹ

      +
      +
      +
      +
      +
      +
      + + +
      + + + diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic1.jpg b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic1.jpg new file mode 100644 index 0000000..53b6113 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic1.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic2.jpg b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic2.jpg new file mode 100644 index 0000000..dac6df5 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic2.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic3.jpg b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic3.jpg new file mode 100644 index 0000000..0ed0349 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/demo/resource/pic3.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/docs/images/block/block-body.gif b/src/main/webapp/static/My97DatePicker/docs/images/block/block-body.gif new file mode 100644 index 0000000..634e86e Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/images/block/block-body.gif differ diff --git a/src/main/webapp/static/My97DatePicker/docs/images/block/block-bottom.gif b/src/main/webapp/static/My97DatePicker/docs/images/block/block-bottom.gif new file mode 100644 index 0000000..5f9eb3d Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/images/block/block-bottom.gif differ diff --git a/src/main/webapp/static/My97DatePicker/docs/images/block/block-top.gif b/src/main/webapp/static/My97DatePicker/docs/images/block/block-top.gif new file mode 100644 index 0000000..cf3fb24 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/images/block/block-top.gif differ diff --git a/src/main/webapp/static/My97DatePicker/docs/images/body.jpg b/src/main/webapp/static/My97DatePicker/docs/images/body.jpg new file mode 100644 index 0000000..a47fda8 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/images/body.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/docs/images/footer.jpg b/src/main/webapp/static/My97DatePicker/docs/images/footer.jpg new file mode 100644 index 0000000..b4b0465 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/docs/images/footer.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/lang/en.js b/src/main/webapp/static/My97DatePicker/lang/en.js new file mode 100644 index 0000000..3159885 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/lang/en.js @@ -0,0 +1,14 @@ +var $lang={ +errAlertMsg: "Invalid date or the date out of range,redo or not?", +aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], +aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], +aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], +aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"], +clearStr: "Clear", +todayStr: "Today", +okStr: "OK", +updateStr: "OK", +timeStr: "Time", +quickStr: "Quick Selection", +err_1: 'MinDate Cannot be bigger than MaxDate!' +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/lang/zh-cn.js b/src/main/webapp/static/My97DatePicker/lang/zh-cn.js new file mode 100644 index 0000000..70e5e4f --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/lang/zh-cn.js @@ -0,0 +1,14 @@ +var $lang={ +errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?", +aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], +aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], +aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], +aLongMonStr: ["\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"], +clearStr: "\u6E05\u7A7A", +todayStr: "\u4ECA\u5929", +okStr: "\u786E\u5B9A", +updateStr: "\u786E\u5B9A", +timeStr: "\u65F6\u95F4", +quickStr: "\u5FEB\u901F\u9009\u62E9", +err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!' +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/lang/zh-tw.js b/src/main/webapp/static/My97DatePicker/lang/zh-tw.js new file mode 100644 index 0000000..b92e0ee --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/lang/zh-tw.js @@ -0,0 +1,14 @@ +var $lang={ +errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?", +aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], +aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], +aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], +aLongMonStr: ["\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"], +clearStr: "\u6E05\u7A7A", +todayStr: "\u4ECA\u5929", +okStr: "\u78BA\u5B9A", +updateStr: "\u78BA\u5B9A", +timeStr: "\u6642\u9593", +quickStr: "\u5FEB\u901F\u9078\u64C7", +err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!' +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/skin/WdatePicker.css b/src/main/webapp/static/My97DatePicker/skin/WdatePicker.css new file mode 100644 index 0000000..08b7439 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/skin/WdatePicker.css @@ -0,0 +1,2 @@ +.Wdate{border:#999 1px solid;height:20px;background:#fff url(datePicker.gif) no-repeat right;} +.WdateFmtErr{font-weight:bold;color:red;} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/skin/datePicker.gif b/src/main/webapp/static/My97DatePicker/skin/datePicker.gif new file mode 100644 index 0000000..9484316 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/datePicker.gif differ diff --git a/src/main/webapp/static/My97DatePicker/skin/default/datepicker.css b/src/main/webapp/static/My97DatePicker/skin/default/datepicker.css new file mode 100644 index 0000000..29d5432 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/skin/default/datepicker.css @@ -0,0 +1,246 @@ +/* + * My97 DatePicker 4.7 + */ + +.WdateDiv{ + width:180px; + background-color:#FFFFFF; + border:#bbb 1px solid; + padding:2px; +} + +.WdateDiv2{ + width:360px; +} +.WdateDiv *{font-size:9pt;} + +.WdateDiv .NavImg a{ + display:block; + cursor:pointer; + height:16px; + width:16px; +} + +.WdateDiv .NavImgll a{ + float:left; + background:transparent url(img.gif) no-repeat scroll 0 0; +} +.WdateDiv .NavImgl a{ + float:left; + background:transparent url(img.gif) no-repeat scroll -16px 0; +} +.WdateDiv .NavImgr a{ + float:right; + background:transparent url(img.gif) no-repeat scroll -32px 0; +} +.WdateDiv .NavImgrr a{ + float:right; + background:transparent url(img.gif) no-repeat scroll -48px 0; +} + +.WdateDiv #dpTitle{ + height:24px; + margin-bottom:2px; + padding:1px; +} + +.WdateDiv .yminput{ + margin-top:2px; + text-align:center; + height:20px; + border:0px; + width:50px; + cursor:pointer; +} + +.WdateDiv .yminputfocus{ + margin-top:2px; + text-align:center; + font-weight:bold; + height:20px; + color:blue; + border:#ccc 1px solid; + width:50px; +} + +.WdateDiv .menuSel{ + z-index:1; + position:absolute; + background-color:#FFFFFF; + border:#ccc 1px solid; + display:none; +} + +.WdateDiv .menu{ + cursor:pointer; + background-color:#fff; +} + +.WdateDiv .menuOn{ + cursor:pointer; + background-color:#BEEBEE; +} + +.WdateDiv .invalidMenu{ + color:#aaa; +} + +.WdateDiv .YMenu{ + margin-top:20px; + +} + +.WdateDiv .MMenu{ + margin-top:20px; + *width:62px; +} + +.WdateDiv .hhMenu{ + margin-top:-90px; + margin-left:26px; +} + +.WdateDiv .mmMenu{ + margin-top:-46px; + margin-left:26px; +} + +.WdateDiv .ssMenu{ + margin-top:-24px; + margin-left:26px; +} + + .WdateDiv .Wweek { + text-align:center; + background:#DAF3F5; + border-right:#BDEBEE 1px solid; + } + +.WdateDiv .MTitle{ + background-color:#BDEBEE; +} +.WdateDiv .WdayTable2{ + border-collapse:collapse; + border:#c5d9e8 1px solid; +} +.WdateDiv .WdayTable2 table{ + border:0; +} + +.WdateDiv .WdayTable{ + line-height:20px; + border:#c5d9e8 1px solid; +} +.WdateDiv .WdayTable td{ + text-align:center; +} + +.WdateDiv .Wday{ + cursor:pointer; +} + +.WdateDiv .WdayOn{ + cursor:pointer; + background-color:#C0EBEF; +} + +.WdateDiv .Wwday{ + cursor:pointer; + color:#FF2F2F; +} + +.WdateDiv .WwdayOn{ + cursor:pointer; + color:#000; + background-color:#C0EBEF; +} +.WdateDiv .Wtoday{ + cursor:pointer; + color:blue; +} +.WdateDiv .Wselday{ + background-color:#A9E4E9; +} +.WdateDiv .WspecialDay{ + background-color:#66F4DF; +} + +.WdateDiv .WotherDay{ + cursor:pointer; + color:#6A6AFF; +} + +.WdateDiv .WotherDayOn{ + cursor:pointer; + background-color:#C0EBEF; +} + +.WdateDiv .WinvalidDay{ + color:#aaa; +} + +.WdateDiv #dpTime{ + float:left; + margin-top:3px; + margin-right:30px; +} + +.WdateDiv #dpTime #dpTimeStr{ + margin-left:1px; +} + +.WdateDiv #dpTime input{ + width:18px; + height:20px; + text-align:center; + border:#ccc 1px solid; +} + +.WdateDiv #dpTime .tB{ + border-right:0px; +} + +.WdateDiv #dpTime .tE{ + border-left:0; + border-right:0; +} + +.WdateDiv #dpTime .tm{ + width:7px; + border-left:0; + border-right:0; +} + +.WdateDiv #dpTime #dpTimeUp{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -32px -16px; +} + +.WdateDiv #dpTime #dpTimeDown{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -48px -16px; +} + + .WdateDiv #dpQS { + float:left; + margin-right:3px; + margin-top:3px; + background:url(img.gif) no-repeat 0px -16px; + width:20px; + height:20px; + cursor:pointer; + } +.WdateDiv #dpControl { + text-align:right; +} +.WdateDiv .dpButton{ + height:20px; + width:45px; + border:#ccc 1px solid; + margin-top:2px; + margin-right:1px; +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/skin/default/img.gif b/src/main/webapp/static/My97DatePicker/skin/default/img.gif new file mode 100644 index 0000000..053205d Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/default/img.gif differ diff --git a/src/main/webapp/static/My97DatePicker/skin/twoer/datepicker.css b/src/main/webapp/static/My97DatePicker/skin/twoer/datepicker.css new file mode 100644 index 0000000..dbb7d43 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/skin/twoer/datepicker.css @@ -0,0 +1 @@ +.WdateDiv{position:relative;width:190px;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:5px;}.WdateDiv2{width:360px;}.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS{background:url(img.gif) no-repeat;}.WdateDiv .NavImg a{float:left;width:16px;height:16px;cursor:pointer;}.WdateDiv .NavImgll a{background-position:0 5px;}.WdateDiv .NavImgl a{background-position:0 -10px;}.WdateDiv .NavImgr a{background-position:0 -25px;float:right;}.WdateDiv .NavImgrr a{background-position:0 -40px;float:right;}.WdateDiv #dpTitle{line-height:0;height:23px;padding:3px 0 0;}.WdateDiv .yminput,.WdateDiv .yminputfocus{margin-left:3px;width:50px;height:20px;line-height:16px;border:solid 1px #F2F0F1;cursor:pointer;background-position:35px -68px;}.WdateDiv .yminputfocus{background-color:#fff;border:solid 1px #D8D8D8;}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#FFF;border:#A3C6C8 1px solid;display:none;}.WdateDiv .menu{background:#fff;}.WdateDiv .menuOn{color:#fff;background:#0088CC;}.WdateDiv .MMenu,.WdateDiv .YMenu{margin-top:20px;margin-left:-1px;width:68px;border:solid 1px #D9D9D9;padding:2px;}.WdateDiv .MMenu table,.WdateDiv .YMenu table{width:100%;}.WdateDiv .MMenu table td,.WdateDiv .YMenu table td{line-height:20px;text-align:center;font-size:12px;cursor:pointer;padding:0;}.WdateDiv .Wweek{text-align:center;background:#DAF3F5;border-right:#BDEBEE 1px solid;}.WdateDiv td{line-height:20px;font-size:12px;color:#999;background:#fff;cursor:pointer;padding:1px;}.WdateDiv .MTitle td{line-height:24px;color:#7D7D7D;background:#F2F0F1;cursor:default;}.WdateDiv .WdayTable2{border-collapse:collapse;border:gray 1px solid;}.WdateDiv .WdayTable2 table{border:0;}.WdateDiv .WdayTable{line-height:20px;color:#13777e;background-color:#edfbfb;}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{color:#323232;}.WdateDiv .Wwday{color:#0088CC;}.WdateDiv .Wtoday{color:#FF6D10;background:#E0EDFE;}.WdateDiv .WspecialDay{background-color:#66F4DF;}.WdateDiv .WotherDay{color:#D4D4D4;}.WdateDiv #dpTime{position:relative;margin-top:5px;}.WdateDiv #dpTime #dpTimeStr{display:inline-block;width:30px;color:#7d7d7d;}.WdateDiv #dpTime input{width:25px;height:20px;line-height:20px;text-align:center;color:#333;border:#D9D9D9 1px solid;margin:0;padding:0;}.WdateDiv #dpTime .tm{width:7px;border:none;background:#F2F0F1;}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:6px;width:16px;height:16px;cursor:pointer;background-position:0 -90px;}.WdateDiv #dpControl{text-align:right;margin-top:3px;}.WdateDiv .dpButton{margin-left:2px;line-height:16px;width:45px;background-color:#0055CC;color:#fff;border:none;cursor:pointer;}.WdateDiv .dpButton:hover{background-color:#0663A2;}.WdateDiv .hhMenu,.WdateDiv .mmMenu,.WdateDiv .ssMenu{position:absolute;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:3px;}.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn{width:18px;height:18px;line-height:18px;text-align:center;background:#fff;}.WdateDiv #dpTime .menuOn{background:#0088CC;}.WdateDiv #dpTime td{background:#F2F0F1;}.WdateDiv .hhMenu{top:-87px;left:32px;}.WdateDiv .mmMenu{top:-47px;left:32px;}.WdateDiv .ssMenu{top:-27px;left:32px;}.WdateDiv .invalidMenu,.WdateDiv .WinvalidDay{color:#aaa;}.WdateDiv .WdayOn,.WdateDiv .WwdayOn,.WdateDiv .Wselday,.WdateDiv .WotherDayOn{background-color:#0088CC;color:#fff;}.WdateDiv #dpTime #dpTimeUp,.WdateDiv #dpTime #dpTimeDown{display:none;} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/skin/twoer/img.gif b/src/main/webapp/static/My97DatePicker/skin/twoer/img.gif new file mode 100644 index 0000000..da838ce Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/twoer/img.gif differ diff --git a/src/main/webapp/static/My97DatePicker/skin/twoer/img.png b/src/main/webapp/static/My97DatePicker/skin/twoer/img.png new file mode 100644 index 0000000..99960d8 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/twoer/img.png differ diff --git a/src/main/webapp/static/My97DatePicker/skin/whyGreen/bg.jpg b/src/main/webapp/static/My97DatePicker/skin/whyGreen/bg.jpg new file mode 100644 index 0000000..75516a6 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/whyGreen/bg.jpg differ diff --git a/src/main/webapp/static/My97DatePicker/skin/whyGreen/datepicker.css b/src/main/webapp/static/My97DatePicker/skin/whyGreen/datepicker.css new file mode 100644 index 0000000..f8426f5 --- /dev/null +++ b/src/main/webapp/static/My97DatePicker/skin/whyGreen/datepicker.css @@ -0,0 +1,256 @@ +/* + * My97 DatePicker 4.7 Skin:whyGreen + */ +.WdateDiv{ + width:180px; + background-color:#fff; + border:#C5E1E4 1px solid; + padding:2px; +} + +.WdateDiv2{ + width:360px; +} +.WdateDiv *{font-size:9pt;} + +.WdateDiv .NavImg a{ + cursor:pointer; + display:block; + width:16px; + height:16px; + margin-top:1px; +} + +.WdateDiv .NavImgll a{ + float:left; + background:url(img.gif) no-repeat; +} +.WdateDiv .NavImgl a{ + float:left; + background:url(img.gif) no-repeat -16px 0px; +} +.WdateDiv .NavImgr a{ + float:right; + background:url(img.gif) no-repeat -32px 0px; +} +.WdateDiv .NavImgrr a{ + float:right; + background:url(img.gif) no-repeat -48px 0px; +} + +.WdateDiv #dpTitle{ + height:24px; + padding:1px; + border:#c5d9e8 1px solid; + background:url(bg.jpg); + margin-bottom:2px; +} + +.WdateDiv .yminput{ + margin-top:2px; + text-align:center; + border:0px; + height:20px; + width:50px; + color:#034c50; + background-color:transparent; + cursor:pointer; +} + +.WdateDiv .yminputfocus{ + margin-top:2px; + text-align:center; + border:#939393 1px solid; + font-weight:bold; + color:#034c50; + height:20px; + width:50px; +} + +.WdateDiv .menuSel{ + z-index:1; + position:absolute; + background-color:#FFFFFF; + border:#A3C6C8 1px solid; + display:none; +} + +.WdateDiv .menu{ + cursor:pointer; + background-color:#fff; + color:#11777C; +} + +.WdateDiv .menuOn{ + cursor:pointer; + background-color:#BEEBEE; +} + +.WdateDiv .invalidMenu{ + color:#aaa; +} + +.WdateDiv .YMenu{ + margin-top:20px; +} + +.WdateDiv .MMenu{ + margin-top:20px; + *width:62px; +} + +.WdateDiv .hhMenu{ + margin-top:-90px; + margin-left:26px; +} + +.WdateDiv .mmMenu{ + margin-top:-46px; + margin-left:26px; +} + +.WdateDiv .ssMenu{ + margin-top:-24px; + margin-left:26px; +} + + .WdateDiv .Wweek { + text-align:center; + background:#DAF3F5; + border-right:#BDEBEE 1px solid; + } + +.WdateDiv .MTitle{ + color:#13777e; + background-color:#bdebee; +} +.WdateDiv .WdayTable2{ + border-collapse:collapse; + border:#BEE9F0 1px solid; +} +.WdateDiv .WdayTable2 table{ + border:0; +} + +.WdateDiv .WdayTable{ + line-height:20px; + color:#13777e; + background-color:#edfbfb; + border:#BEE9F0 1px solid; +} +.WdateDiv .WdayTable td{ + text-align:center; +} + +.WdateDiv .Wday{ + cursor:pointer; +} + +.WdateDiv .WdayOn{ + cursor:pointer; + background-color:#74d2d9 ; +} + +.WdateDiv .Wwday{ + cursor:pointer; + color:#ab1e1e; +} + +.WdateDiv .WwdayOn{ + cursor:pointer; + background-color:#74d2d9; +} +.WdateDiv .Wtoday{ + cursor:pointer; + color:blue; +} +.WdateDiv .Wselday{ + background-color:#A7E2E7; +} +.WdateDiv .WspecialDay{ + background-color:#66F4DF; +} + +.WdateDiv .WotherDay{ + cursor:pointer; + color:#0099CC; +} + +.WdateDiv .WotherDayOn{ + cursor:pointer; + background-color:#C0EBEF; +} + +.WdateDiv .WinvalidDay{ + color:#aaa; +} + +.WdateDiv #dpTime{ + float:left; + margin-top:3px; + margin-right:30px; +} + +.WdateDiv #dpTime #dpTimeStr{ + margin-left:1px; + color:#497F7F; +} + +.WdateDiv #dpTime input{ + height:20px; + width:18px; + text-align:center; + color:#333; + border:#61CAD0 1px solid; +} + +.WdateDiv #dpTime .tB{ + border-right:0px; +} + +.WdateDiv #dpTime .tE{ + border-left:0; + border-right:0; +} + +.WdateDiv #dpTime .tm{ + width:7px; + border-left:0; + border-right:0; +} + +.WdateDiv #dpTime #dpTimeUp{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -32px -16px; +} + +.WdateDiv #dpTime #dpTimeDown{ + height:10px; + width:13px; + border:0px; + background:url(img.gif) no-repeat -48px -16px; +} + + .WdateDiv #dpQS { + float:left; + margin-right:3px; + margin-top:3px; + background:url(img.gif) no-repeat 0px -16px; + width:20px; + height:20px; + cursor:pointer; + } +.WdateDiv #dpControl { + text-align:right; + margin-top:3px; +} +.WdateDiv .dpButton{ + height:20px; + width:45px; + margin-top:2px; + border:#38B1B9 1px solid; + background-color:#CFEBEE; + color:#08575B; +} \ No newline at end of file diff --git a/src/main/webapp/static/My97DatePicker/skin/whyGreen/img.gif b/src/main/webapp/static/My97DatePicker/skin/whyGreen/img.gif new file mode 100644 index 0000000..4003f20 Binary files /dev/null and b/src/main/webapp/static/My97DatePicker/skin/whyGreen/img.gif differ diff --git a/src/main/webapp/static/NtkoCrossBrowserSetup20150430.msi b/src/main/webapp/static/NtkoCrossBrowserSetup20150430.msi new file mode 100644 index 0000000..bc9076f Binary files /dev/null and b/src/main/webapp/static/NtkoCrossBrowserSetup20150430.msi differ diff --git a/src/main/webapp/static/OfficeControl.cab b/src/main/webapp/static/OfficeControl.cab new file mode 100644 index 0000000..86f65ee Binary files /dev/null and b/src/main/webapp/static/OfficeControl.cab differ diff --git a/src/main/webapp/static/OfficeControlx64.cab b/src/main/webapp/static/OfficeControlx64.cab new file mode 100644 index 0000000..f21647a Binary files /dev/null and b/src/main/webapp/static/OfficeControlx64.cab differ diff --git a/src/main/webapp/static/SuperSlide/default.css b/src/main/webapp/static/SuperSlide/default.css new file mode 100644 index 0000000..38ab20e --- /dev/null +++ b/src/main/webapp/static/SuperSlide/default.css @@ -0,0 +1,255 @@ +@charset "utf-8"; + +/* CSS Document */ +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre, +form,fieldset,input,textarea,p,blockquote,th,td,img { padding: 0; margin: 0; } +fieldset,img { border: 0; } +address,caption,cite,code,dfn,em,strong,th,var,i { font-weight: normal; font-style: normal; } +ol,ul,li { list-style: none; } +caption,th { text-align: left; } +h1,h2,h3,h4,h5,h6 { font-weight: normal; font-size: 100%; } +q:before,q:after { content:''; } +abbr,acronym { border: 0; } + +/*-- All --*/ +html{ min-width:1000px; } +body{ color:#333;font:12px/20px Arial,"Microsoft YaHei","宋体",sans-serif; text-align:center; background:#fff; } +a{ color:#333; text-decoration:none; outline:none;} +a:hover {color:#f00; text-decoration:underline; } +table { border-collapse: collapse; border-spacing: 0; empty-cells:show; } +table td,table th{ border:#ddd solid 1px; padding: 5px 0; } +table th{ background:#39A4DC; color:#fff; } +table .new td{ color:#f60; font-weight:bold; } + + +/* css三角形 */ +.arrow,.arrow s { position:relative; display:block; font-size: 0; line-height: 0; width: 0; height: 0; border-color:transparent; border-style:dashed; border-width:5px; } +.arrowR,.arrowR s{ border-left-color:#aaa; border-left-style:solid; } +.arrowR s{ border-left-color:#fff; position:absolute; left:-7px; top:-5px; } +.arrowR:hover{ border-left-color:#f60; } + +.arrowL,.arrowL s{ border-right-color:#aaa; border-right-style:solid; } +.arrowL s{ border-right-color:#fff; position:absolute; right:-7px; top:-5px; } +.arrowL:hover{ border-right-color:#f60; } + +.arrowT,.arrowT s{ border-bottom-color:#aaa; border-bottom-style:solid; } +.arrowT s{ border-bottom-color:#fff; position:absolute; left:-5px; top:-3px; } +.arrowT:hover{ border-bottom-color:#f60; } + +.arrowB,.arrowB s{ border-top-color:#aaa; border-top-style:solid; } +.arrowB s{ border-top-color:#fff; position:absolute; left:-5px; bottom:-3px; } +.arrowB:hover{ border-top-color:#f60; } + +/* css圆形 */ +.circle{ line-height:100%; overflow:hidden; font-family:Tahoma,Helvetica; font-size:18px; color:#aaa; } +.circle:hover{ color:#f60; } + +/* 顶部导航条 */ + #header{ width:100%; left:0; top:0; position:fixed; z-index:10; height:32px; line-height:32px; color:#fff; text-align:left; overflow:hidden; } + #header .headerBg{ width:100%; height:32px; left:0; top:0; position:absolute; z-index:0; background:#000; filter:alpha(opacity=70);opacity:0.7; } + #header a{ color:#fff; } + #header #logo{ position:relative; z-index:1; display:inline-block; *display:inline; zoom:1; font-size:14px; margin-right:5px; padding-left:10px; } + #header .nav{ position:relative; z-index:2; float:right; padding-right:10px; } + #header .nav a{ padding:0 10px; } + #header .nav a.imp{ color:#ff0; } + #header .title{ position:relative; z-index:1; height:32px; overflow:hidden; } + + #content{ margin:0 auto; padding:62px 30px 30px 30px; position:relative; text-align:left; z-index:0; } + #footer{ height:34px; line-height:34px; text-align:center; } + +/* 首页 - index.html ---------------------------------------------- */ + + + + .indBtn{ text-align:center; display:none; } + .indBtn a{ vertical-align:middle; margin:15px 15px 0 0; display:inline-block; *display:inline; zoom:1; padding:14px 22px 3px 22px; line-height:26px; + color:#bede9a; font-size:14px; + -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; + background:#89c941; + background: -webkit-gradient(linear, 0 0, 0 bottom, from(#89c941), to(#72b238)); + background: -webkit-linear-gradient(#89c941, #72b238); + background: -moz-linear-gradient(#89c941, #72b238); + background: -ms-linear-gradient(#89c941, #72b238); + background: -o-linear-gradient(#89c941, #72b238); + background: linear-gradient(#89c941, #72b238); + -pie-background: linear-gradient(#89c941, #72b238); + -webkit-box-shadow: #39591c 2px 2px 3px; + -moz-box-shadow: #39591c 2px 2px 3px; + box-shadow: #39591c 2px 2px 3px; + } + .indBtn a em{ font-size:30px; display:block; color:#fff; } + .indIntro a:hover{ text-decoration:none; margin:11px 15px 0 0; } + + .indTips{ position:fixed; _position:absolute; width:14px; right:0; top:90px; background:#333; padding:5px; line-height:18px; color:#fff; cursor:pointer; + -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; + } + .indTips a{ color:#fff; text-decoration:none; } + #indTips1{ display:none; } + #ind2{ display:none; } + #ind2 .topic{ font-size:60px; height:120px; line-height:120px; } + +/* 参数 - param.html ---------------------------------------------- */ + .paramPage .param{ width:100%; margin-bottom:20px; background:#fff; } + .paramPage .param th{ text-align:center; } + .paramPage .param td{ text-align:left; padding:5px 2px; } + .paramPage .param .intro{ text-align:left; } + .paramPage .param .link{ color:#39A4DC; text-decoration:underline; } + .paramPage .param .t b{ color:#f60; } + .paramPage .param i{ color:#f60; } + .paramPage .param .on td{ background:#ffffaa; } + /*.paramPage .param tr.n td{ color:#999; }*/ + .paramPage .intro a{ text-decoration:underline; } + .paramPage .notice{ overflow:hidden; text-align:left; padding-bottom:10px; } + .paramPage .notice li{ width:120px; height:30px; line-height:30px; text-align:center; float:left; margin-right:10px; color:#fff; background:#666; cursor:pointer; } + .paramPage .notice .on{ background:#f60; } + + +/* 联系作者 ---------------------------------------------- */ + #content .contact{ display:none; color:#f60; margin-bottom:20px; } + + +/* 案例 - demo.html ---------------------------------------------- */ + + .demoBox{ padding:0 20px 60px 20px; background:#f2f2f2; border-bottom:3px dotted #ccc; } + .demoBox .hd{ padding:40px 10px 0 10px; } + .demoBox .hd h3{ font-size:30px; font-weight:bold; color:#39A4DC; line-height:60px; } + .demoBox .hd h3 span{ color:#ccc; font-style:italic; font-size:60px; } + .demoBox .bd{ padding:20px; overflow:hidden; zoom:1; } + .demoBox .bd .iframeWrap{ overflow:hidden; float:left; } + .demoBox iframe{ width:100%; height:100%; vertical-align:middle; } + .demoBox .botTit{ height:22px; line-height:22px; overflow:hidden; background:#eee; text-align:right; padding:5px 0; overflow:hidden; display:none; + } + .demoBox .botTit em{ float:left; font-weight:bold; padding-left:10px; } + .demoBox .botTit span a{ display:block; float:right; height:20px; line-height:20px; padding:0 5px; background:#f60; margin-right:10px; color:#fff; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; cursor:pointer; display:none; } + .demoBox .botTit span a:hover{ text-decoration:none; background:#f60; } + + .params{ width:580px; height:100%; margin-left:20px; float:left; _display:inline; background:#fff; padding-bottom:10px; border:1px solid #ddd; } + .params table{ background:#fff; } + .params table .tit td{ padding: 5px 10px; background:#39A4DC; color:#fff; } + .params table td{ border:1px solid #fff; } + .params table .n{ width: 153px; text-align:right; } + .params table .new{ color:#f00; } + .params table i{ color:#999; } + .params p{ padding:10px 0 0 10px; } + .params .curJsCode{ color:#f60; display:block; font-family:SimSun; } + + .rightNav{ position:fixed; width:140px; right:0; top:100px; _position:absolute; text-align:left; cursor:pointer; background-image:url(about:blank); } + .rightNav a{ display:block; position:relative; height:30px; line-height:30px; margin-bottom:2px; background:#fff; padding-right:10px; width:130px; overflow:hidden; cursor:pointer; right:-110px; } + .rightNav a:hover{ text-decoration:none; color:#39A4DC; } + .rightNav a:hover em{ background:#00b700} + .rightNav a em{ display:block; float:left; width:30px; background:#39A4DC; color:#fff; font-size:16px; text-align:center; margin-right:10px;} + .rightNav a.new em{ background:#f60; } + .demoBox .iframeWrap{ width:452px; } + .demoBox .iframeWrap iframe{ width:452px; height:232px; background:url(images/loading.gif) center center no-repeat; } + + #picScroll-left iframe{ height:174px; } + #picScroll-top iframe{ height:415px; } + #picMarquee-left iframe{ height:172px; } + #picMarquee-top iframe{ height:415px; } + #txtScroll-left iframe{ height:80px; } + #txtScroll-top iframe{ height:182px; } + #txtMarquee-left iframe{ height:107px; } + #txtMarquee-top iframe{ height:184px; } + #sideMenu iframe{ height:227px; } + + + /* 隐藏代码盒子 */ + #displayBox{ z-index:10; display:none; position:fixed; _position:absolute; width:1000px; height:500px; left:50%; top:60px; margin-left:-500px; background:#fff; + border:5px solid #eee; + -webkit-box-shadow: #333 0 0 8px; + -moz-box-shadow: #333 0 0 8px; + box-shadow: #333 0 0 8px; } + #displayBox .hd{ height:30px; line-height:30px; background:#eee; padding:0 10px; position:relative; + background: -webkit-gradient(linear, 0 0, 0 bottom, from(#F7F7F7), to(#eee)); + background: -webkit-linear-gradient(#F7F7F7, #eee); + background: -moz-linear-gradient(#F7F7F7, #eee); + background: -ms-linear-gradient(#F7F7F7, #eee); + background: -o-linear-gradient(#F7F7F7, #eee); + background: linear-gradient(#F7F7F7, #eee); + } + #displayBox .hd h3{ font-weight:bold; color:#39A4DC; } + #displayBox .hd a{ display:block; position:absolute; right:10px; top:7px; width:20px; height:16px; line-height:16px; text-align:center; background:#f60; color:#fff; cursor:pointer; } + #displayBox .hd a:hover{ text-decoration:none; } + #displayBox .bd{ padding:10px 0; background:#fff; } + #displayBox textarea{ width:458px; height:230px; padding:10px; border:1px solid #ccc; display:block; } + #displayBox .bd p{ padding-top:10px; } + #displayBox iframe{ width:1000px; height:440px; margin:0 auto; } + + +/* 扩展效果 ---------------------------------------------- */ +.authorWord{ margin-bottom:25px; text-align:left; background:#fff; } +.authorWord h3{ padding:0 20px; height:30px; font:normal 14px/30px "Microsoft YaHei"; overflow:hidden; cursor:pointer; border-bottom:1px dotted #ccc; } +.authorWord h3 .arrow{ float:right; border-top-color:#fff; margin-top:11px; } +.authorWord .con{ padding:10px 20px; line-height:22px; } +.authorWord .con p{ margin-bottom:5px } +.authorWord a{ color:#f60; text-decoration:underline; } + +.demoList{ overflow:hidden; padding-top:10px; } +.demoList li{ + position:relative; cursor:pointer; float:left; width:160px; text-align:center; margin:0 30px 30px 0; + padding:4px 4px 0 4px; background:#e3e3e3; color:#000; +} +.demoList li img{ display:block; width:160px; height:120px; background:url(images/loading.gif) center center no-repeat; } +.demoList li h3{ height:28px; line-height:28px; } +.demoList li.new i{ display:block; position:absolute; top:4px; right:4px; z-index:1; width:31px; height:31px; background:url(images/new.png) 0 0 no-repeat; } + +.demoList li.on{ + background:#666; color:#fff; + -webkit-transform: translateY(-10px); + -moz-transform: translateY(-10px); + -o-transform: translateY(-10px); + -webkit-transition-duration:0.3s; + -o-transition-duration:0.3s; + -moz-transition-duration:0.3s; + } + + + .demoBoxEven{ background:#fff; } + .demoBoxEven .demoList li{ } + .demoBoxEven .demoList li.on{ background:#666; color:#fff; } + +/* 如何使用 ---------------------------------------------- */ +.usePageDl{ width:1000px; } +.usePageDl dt h2{ font:normal 22px/150% "Microsoft YaHei"; _font-weight:bold; color:#39A4DC; } +.usePageDl dt h2 a{ color:#f60; text-decoration:underline; } +.usePageDl dt p{ padding:5px 0 10px 33px; } +.usePageDl dt p b{ color:#f60; } +.usePageDl dd{ margin-bottom:50px; } +.usePage .demoBox{ padding:0; } +.usePage .demoBox .bd .iframeWrap{ background:none; } + + +/* 下载页面 ----------------------------------------------- */ +.downLoadDl{ width:1000px; } +.downLoadDl dt h2{ font:normal 22px/150% "Microsoft YaHei"; _font-weight:bold; color:#39A4DC; } +.downLoadDl dt h2 a{ font-size:12px; color:#333; margin-left:20px; text-decoration:underline; } +.downLoadDl dd{ margin-bottom:50px; padding:10px 0; } + +.dBtn{ cursor:pointer; display:block; height:30px; line-height:30px; width:100px; text-align:center; font-size:16px; background:#6ddb00; color:#fff; _font-weight:bold; + -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; + -webkit-box-shadow: #666 1px 1px 2px; + -moz-box-shadow: #666 1px 1px 2px; + box-shadow: #666 1px 1px 2px; +} +.dBtn:hover{ text-decoration:none; background:#65ca00; color:#fff; margin-left:2px; } +.pBtn{ background:#FFA241; font-size:12px; } +.pBtn:hover{ background:#ff8635; } +.pBtn i{ font-family:Arial; _font-weight:bold; font-size:20px; } + +.downPage .inculde{ margin-top:20px; padding:10px; border:1px dotted #eee; background:#f3f3f3;} +.downPage .inculde li{ color:#666; } +.downPage .inculde em{ font-weight:bold; color:#333; } +.downPage .inculde h3{ font-size:14px; font-weight:bold; color:#c00; padding-bottom:10px } +.downPage .inculde a{ color:#39A4DC; text-decoration:underline; margin:0 2px; } +#whyPay p,#howPay p{ text-indent:20px; margin-bottom:10px } + +.pay{ overflow:hidden; padding-bottom:5px; vertical-align:top; } +.pay .pBtn{ float:left; } +.pay p{ margin-left:120px; } +.pay p span{ color:#c00; } +.downPage .imp{ color:#c00; font-size:14px; } + +/* 颜色代码 +#39A4DC 浅蓝色 + +*/ diff --git a/src/main/webapp/static/SuperSlide/demo.html b/src/main/webapp/static/SuperSlide/demo.html new file mode 100644 index 0000000..aa95f0d --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo.html @@ -0,0 +1,1325 @@ + + + + + + + +SuperSlide - 基础效果 + + + + + + + + + + + +
      + + +
      +

      1. 标签切换 / 书签切换 / 默认效果

      +
      +
      + +

      1.0-标签切换

      +
      + +
      + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      触发方式[trigger]: + + 缓动效果[easing]: + +
      效果速度[delayTime]: + + 前后按钮循环[pnLoop]: + +
      +

      当前调用代码:jQuery(".slideTxtBox").slide({});

      +

      注意:缓动效果对于fade影响不大;不同缓动效果设置适当“效果速度”,会有最佳效果。

      +
      + +
      +
      + + + +
      +

      2. 焦点图 / 幻灯片

      +
      +
      + +

      2.0-焦点图/幻灯片

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      触发方式[trigger]: + + 缓动效果[easing]: + +
      效果速度[delayTime]: + + 停止播放[mouseOverStop]: + +
      前后按钮循环[pnLoop]: + +
      +

      当前调用代码:jQuery(".slideBox").slide({mainCell:".bd ul"});

      +

      注意:缓动效果对于fade影响不大;不同缓动效果设置适当“效果速度”,会有最佳效果。

      +
      + +
      +
      + + + +
      +

      3. 图片滚动-左

      +
      +
      + +

      3.0-图片滚动-左

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      滚动个数[scroll]: + + 可视个数[vis]: + +
      缓动效果[easing]: + + 效果速度[delayTime]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".picScroll-left").slide({titCell:".hd ul",mainCell:".bd ul",autoPage:true});

      +

      注意1:不同缓动效果设置适当“效果速度”,会有最佳效果。
      + 注意2:现在是全按钮开启情况,不需要按钮的时候,只要删除按钮html或者隐藏即可。 +

      +
      + +
      +
      + + + +
      +

      4. 图片滚动-上

      +
      +
      + +

      4.0-图片滚动-上

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      滚动个数[scroll]: + + 可视个数[vis]: + +
      缓动效果[easing]: + + 效果速度[delayTime]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".picScroll-top").slide({titCell:".hd ul",mainCell:".bd ul",autoPage:true});

      +

      注意1:不同缓动效果设置适当“效果速度”,会有最佳效果。
      + 注意2:现在是全按钮开启情况,不需要按钮的时候,只要删除按钮html或者隐藏即可。 +

      +
      + +
      +
      + + + +
      +

      5. 图片无缝滚动-左

      +
      +
      + +

      5.0-图片无缝滚动-左

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 可视个数[vis]: + +
      运行速度[interTime]: + + 默认反方向运动[opp]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".picMarquee-left").slide({mainCell:".bd ul",autoPlay:true});

      +
      + +
      +
      + + + +
      +

      6. 图片无缝滚动-上

      +
      +
      + +

      6.0-图片无缝滚动-上

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 可视个数[vis]: + +
      运行速度[interTime]: + + 默认反方向运动[opp]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".picMarquee-top").slide({mainCell:".bd ul",autoPlay:true});

      +
      + +
      +
      + + + +
      +

      7. 文字滚动-左

      +
      +
      + +

      7.0-文字滚动-左

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      滚动个数[scroll]: + + 可视个数[vis]: + +
      缓动效果[easing]: + + 效果速度[delayTime]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".txtScroll-left").slide({titCell:".hd ul",mainCell:".bd ul",autoPage:true});

      +

      注意1:不同缓动效果设置适当“效果速度”,会有最佳效果。
      + 注意2:现在是全按钮开启情况,不需要按钮的时候,只要删除按钮html或者隐藏即可。 +

      +
      + +
      +
      + + + +
      +

      8. 文字滚动-上

      +
      +
      + +

      8.0-文字滚动-上

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 自动运行[autoPlay]: + +
      滚动个数[scroll]: + + 可视个数[vis]: + +
      缓动效果[easing]: + + 效果速度[delayTime]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".txtScroll-top").slide({titCell:".hd ul",mainCell:".bd ul",autoPage:true});

      +

      注意1:不同缓动效果设置适当“效果速度”,会有最佳效果。
      + 注意2:现在是全按钮开启情况,不需要按钮的时候,只要删除按钮html或者隐藏即可。 +

      +
      + +
      +
      + + + +
      +

      9. 文字无缝滚动-左

      +
      +
      + +

      9.0-文字无缝滚动-左

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 可视个数[vis]: + +
      运行速度[interTime]: + + 默认反方向运动[opp]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".txtMarquee-left").slide({mainCell:".bd ul",autoPlay:true});

      +
      + +
      +
      + + + +
      +

      10. 文字无缝滚动-上

      +
      +
      + +

      10.0-文字无缝滚动-上

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 可视个数[vis]: + +
      运行速度[interTime]: + + 默认反方向运动[opp]: + +
      前后按钮循环[pnLoop]: + + 触发方式[trigger]: + +
      停止播放[mouseOverStop]: + +
      +

      当前调用代码:jQuery(".txtMarquee-top").slide({mainCell:".bd ul",autoPlay:true});

      +
      + +
      +
      + + + + +
      +

      11. 导航

      +
      +
      + +

      12.0-导航

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 效果速度[delayTime]: + +
      延迟触发[triggerTime]: + + 默认执行[defaultPlay]: + +
      返回默认[returnDefault]: + + 缓动效果[easing]: + +
      +

      当前调用代码:jQuery("#nav").slide({ type:"menu", titCell:".nLi", targetCell:".sub"});

      +
      + +
      +
      + + + + +
      +

      12. 手风琴

      +
      +
      + +

      13.0-手风琴

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      常用参数(切换看看)
      效果[effect]: + + 效果速度[delayTime]: + +
      触发方式[trigger]: + + 延迟触发[triggerTime]: + +
      默认执行[defaultPlay]: + + 返回默认[returnDefault]: + +
      缓动效果[easing]: + +
      +

      当前调用代码:jQuery(".sideMen").slide({titCell:"h3", targetCell:"ul",defaultIndex:1});

      +
      + +
      +
      + + + +
      +

      T1. 其它基础效果

      +
      + +
        +
      • +
        + +
        +

        多行滚动基础示例

        +
      • +
      • +
        + +
        +

        多列滚动基础示例

        +
      • +
      • +
        + +
        +

        targetCell基础示例

        +
      • +
      • +
        + +
        +

        SuperSlide组合应用基础示例

        +
      • +
      • +
        + +
        +

        同一页面使用多个效果示例

        +
      • +
      • +
        + +
        +

        双重Tab(slide组合)

        + +
      • +
      • +
        + +
        +

        Tab+无缝滚动(slide组合)

        + +
      • +
      • +
        + +
        +

        图片导航焦点图

        + +
      • +
      + +
      +
      + + + + + +
      + + + +
      + +
      + +
      +
      + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/1.0-switchTab.html b/src/main/webapp/static/SuperSlide/demo/1.0-switchTab.html new file mode 100644 index 0000000..d225795 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/1.0-switchTab.html @@ -0,0 +1,94 @@ + + + + + + +SuperSlide - Tab切换效果 + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/10.0-txtMarquee-top.html b/src/main/webapp/static/SuperSlide/demo/10.0-txtMarquee-top.html new file mode 100644 index 0000000..60699fa --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/10.0-txtMarquee-top.html @@ -0,0 +1,71 @@ + + + + + + +SuperSlide - 文字无缝滚动特效-上 + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/11.0-nav.html b/src/main/webapp/static/SuperSlide/demo/11.0-nav.html new file mode 100644 index 0000000..910ce17 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/11.0-nav.html @@ -0,0 +1,116 @@ + + + + + + +SuperSlide - 导航效果 + + + + + + + + + + + + +
      + 假设当前频道为“预告片”,
      + 手动或后台程序添加titOnClassName类名(默认是'on'),相当于设置参数defaultIndex:2。
      + 若同时设置参数returnDefault:true,则鼠标移走后返回当前频道。 +
      + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/12.0-sideMenu.html b/src/main/webapp/static/SuperSlide/demo/12.0-sideMenu.html new file mode 100644 index 0000000..f10adc5 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/12.0-sideMenu.html @@ -0,0 +1,88 @@ + + + + + + +SuperSlide - targetCell基础示例 + + + + + + + +
      +

      书签切换系列

      +
        +
      • 淘宝首页右侧公告
      • +
      • 京东首页产品切换
      • +
      • 苏宁易购首页品牌切换
      • +
      • 1号店双重切换
      • +
      • 腾讯健康频道切换
      • +
      + +

      幻灯片/焦点图系列

      + + +
        +
      • 淘宝首页焦点图
      • +
      • 腾讯娱乐频道焦点图
      • +
      • 腾讯电影频道焦点图
      • +
      • 网易游戏频道焦点图
      • +
      • 易迅首页焦点图
      • +
      +

      带按钮切换

      +
        +
      • 淘宝首页今日活动
      • +
      • 豆瓣读书频道
      • +
      • 天猫首页品牌切换
      • +
      • 格瓦拉首页活动进行中
      • +
      • 腾讯博客图片滚动
      • +
      + + +
      + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/2.0-focus.html b/src/main/webapp/static/SuperSlide/demo/2.0-focus.html new file mode 100644 index 0000000..7f7ef50 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/2.0-focus.html @@ -0,0 +1,74 @@ + + + + + + +SuperSlide - 焦点图/幻灯片 + + + + + + + + + +
      +
      +
      • 1
      • 2
      • 3
      +
      +
      +
        +
      • +
      • +
      • +
      +
      + + + + + +
      + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/3.0-picScroll-left.html b/src/main/webapp/static/SuperSlide/demo/3.0-picScroll-left.html new file mode 100644 index 0000000..fbe3a87 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/3.0-picScroll-left.html @@ -0,0 +1,93 @@ + + + + + + +SuperSlide - 图片滚动特效-左 + + + + + + + + + +
      +
      + +
        + + +
        +
        + +
        +
        + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/4.0-picScroll-top.html b/src/main/webapp/static/SuperSlide/demo/4.0-picScroll-top.html new file mode 100644 index 0000000..3f14bee --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/4.0-picScroll-top.html @@ -0,0 +1,93 @@ + + + + + + +SuperSlide - 图片上滚动特效-上 + + + + + + + + + +
        +
        + +
          + + +
          +
          + +
          +
          + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/5.0-picMarquee-left.html b/src/main/webapp/static/SuperSlide/demo/5.0-picMarquee-left.html new file mode 100644 index 0000000..89611fc --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/5.0-picMarquee-left.html @@ -0,0 +1,88 @@ + + + + + + +SuperSlide - 图片无缝滚动特效-左 + + + + + + + + + +
          +
          + + +
          +
          + +
          +
          + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/6.0-picMarquee-top.html b/src/main/webapp/static/SuperSlide/demo/6.0-picMarquee-top.html new file mode 100644 index 0000000..3ea03c2 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/6.0-picMarquee-top.html @@ -0,0 +1,88 @@ + + + + + + +SuperSlide - 图片无缝滚动特效-上 + + + + + + + + + +
          +
          + + +
          +
          + +
          +
          + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/7.0-txtScroll-left.html b/src/main/webapp/static/SuperSlide/demo/7.0-txtScroll-left.html new file mode 100644 index 0000000..37426af --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/7.0-txtScroll-left.html @@ -0,0 +1,71 @@ + + + + + + +SuperSlide - 文字滚动特效-左 + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/8.0-txtScroll-top.html b/src/main/webapp/static/SuperSlide/demo/8.0-txtScroll-top.html new file mode 100644 index 0000000..650fc89 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/8.0-txtScroll-top.html @@ -0,0 +1,74 @@ + + + + + + +SuperSlide - 文字滚动特效-上 + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/9.0-txtMarquee-left.html b/src/main/webapp/static/SuperSlide/demo/9.0-txtMarquee-left.html new file mode 100644 index 0000000..f648630 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/9.0-txtMarquee-left.html @@ -0,0 +1,68 @@ + + + + + + +SuperSlide - 文字无缝滚动特效-左 + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.html b/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.html new file mode 100644 index 0000000..eaadc54 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.html @@ -0,0 +1,163 @@ + + + + + + +SuperSlide - 多行滚动示例 + + + + + + + + + +
          +
          + +
            + + +
            +
            + +
            + + + + + + +
            +
            +
            + + + +
            +

            多行/多列的滚动解决思路在于:把每次滚动的n个li放到1个ul里面,然后用SuperSlide每次滚动1个ul,相当于每次滚动n个li

            + +
            + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.jpg b/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.jpg new file mode 100644 index 0000000..203cfb8 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.1-multipleLine.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.html b/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.html new file mode 100644 index 0000000..5177ba7 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.html @@ -0,0 +1,156 @@ + + + + + + +SuperSlide - 多列滚动示例 + + + + + + + +
            +
            + +
              + + +
              +
              + +
              + + + + + + + + + +
              +
              +
              + + + +
              +

              多行/多列的滚动解决思路在于:把每次滚动的n个li放到1个ul里面,然后用SuperSlide每次滚动1个ul,相当于每次滚动n个li

              + +
              + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.jpg b/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.jpg new file mode 100644 index 0000000..c9955ec Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.2-multipleColumn.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.html b/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.html new file mode 100644 index 0000000..1b2c675 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.html @@ -0,0 +1,81 @@ + + + + + + +SuperSlide - targetCell基础示例 + + + + + + + +
              +

              书签切换系列

              +
                +
              • 淘宝首页右侧公告
              • +
              • 京东首页产品切换
              • +
              • 苏宁易购首页品牌切换
              • +
              • 1号店双重切换
              • +
              • 腾讯健康频道切换
              • +
              +

              幻灯片/焦点图系列

              +
                +
              • 淘宝首页焦点图
              • +
              • 腾讯娱乐频道焦点图
              • +
              • 腾讯电影频道焦点图
              • +
              • 网易游戏频道焦点图
              • +
              • 易迅首页焦点图
              • +
              +

              带按钮切换

              +
                +
              • 淘宝首页今日活动
              • +
              • 豆瓣读书频道
              • +
              • 天猫首页品牌切换
              • +
              • 格瓦拉首页活动进行中
              • +
              • 腾讯博客图片滚动
              • +
              + +
              + + + +
              +

              本例js调用:

              + +
              + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.jpg b/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.jpg new file mode 100644 index 0000000..a41d252 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.3-targetCell.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.html b/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.html new file mode 100644 index 0000000..1aef4ba --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.html @@ -0,0 +1,166 @@ + + + + + + +SuperSlide - SuperSlide组合应用基础示例 + + + + + + + + + + +
              +
              +
              • 教育
              • 培训
              • 出国
              +
              +
              + +
              + + + +
              + +
              + + + +
              + +
              + + + +
              + +
              +
              + + + +
              +

              SuperSlide组合注意:
              + 1、内外层mainCell、targetCell、prevCell、nextCell等对象不能相同,除非特殊应用;
              + 2、注意书写顺序,通常先写内层js调用,再写外层js调用

              + +
              + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.jpg b/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.jpg new file mode 100644 index 0000000..c7e5c9f Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.4-SuperSlideGroup.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.html b/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.html new file mode 100644 index 0000000..17712a5 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.html @@ -0,0 +1,178 @@ + + + + + + +SuperSlide-同一页面使用多个效果 + + + + + + + + + + + +

              下面3个示例演示了如何在同一个页面使用多个SuperSlide效果

              + + +

              下面2个示例,演示如何在同一页面使用多个相同效果

              + + + +
              +
              +
                +
              • +
              • +
              • +
              +
              +
              + +
              +
              + + + + +
              +
              +
                +
              • +
              • +
              • +
              +
              +
              + +
              +
              + + + +

              下面1个示例,演示如何在同一页面使用其它效果

              + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.jpg b/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.jpg new file mode 100644 index 0000000..283ff21 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.5-onePage.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.html b/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.html new file mode 100644 index 0000000..eed06c4 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.html @@ -0,0 +1,196 @@ + + + + + + +SuperSlide - 双重Tab(slide组合) + + + + + + + + + + +
              +
              +
              • 教育
              • 培训
              • 出国
              +
              +
              + + + + + + + + + + + +
              +
              + + +
              +

              SuperSlide组合注意:
              + 1、内外层mainCell、targetCell、prevCell、nextCell等对象不能相同,除非特殊应用;
              + 2、注意书写顺序,通常先写内层js调用,再写外层js调用

              + +
              + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.jpg b/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.jpg new file mode 100644 index 0000000..16eeb32 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.6-doubleTab.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.html b/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.html new file mode 100644 index 0000000..9f8df4d --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.html @@ -0,0 +1,166 @@ + + + + + + +SuperSlide - Tab+无缝滚动(slide组合) + + + + + + + + + + +
              +
              +
              • 教育
              • 培训
              • 出国
              +
              +
              + +
              + + + +
              + +
              + + + +
              + +
              + + + +
              + +
              +
              + + + +
              +

              SuperSlide组合注意:
              + 1、内外层mainCell、targetCell、prevCell、nextCell等对象不能相同,除非特殊应用;
              + 2、注意书写顺序,通常先写内层js调用,再写外层js调用

              + +
              + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.jpg b/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.jpg new file mode 100644 index 0000000..4e86a1c Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.7-TabMarquee.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.html b/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.html new file mode 100644 index 0000000..4f7c6df --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.html @@ -0,0 +1,79 @@ + + + + + + +SuperSlide - 图片导航焦点图 + + + + + + + + + +
              +
              +
                +
              • +
              • +
              • +
              • +
              +
              + +
              +
                +
              • +
              • +
              • +
              • +
              +
              + +
              + + + + +
              +

              js调用:

              + +
              + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.jpg b/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.jpg new file mode 100644 index 0000000..616f0af Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/T1.8-picFocus.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/1.0-switchTab-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/1.0-switchTab-iframe.html new file mode 100644 index 0000000..9db7650 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/1.0-switchTab-iframe.html @@ -0,0 +1,98 @@ + + + + + + +SuperSlide - Tab切换效果 + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/10.0-txtMarquee-top-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/10.0-txtMarquee-top-iframe.html new file mode 100644 index 0000000..f50134b --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/10.0-txtMarquee-top-iframe.html @@ -0,0 +1,72 @@ + + + + + + +SuperSlide - 文字无缝滚动特效-上 + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/11.0-nav-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/11.0-nav-iframe.html new file mode 100644 index 0000000..e4ae937 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/11.0-nav-iframe.html @@ -0,0 +1,106 @@ + + + + + + +SuperSlide - 导航效果 + + + + + + + + + + + +
              + 假设当前频道为“预告片”,
              + 手动或后台程序添加titOnClassName类名(默认是'on'),相当于设置参数defaultIndex:2。
              + 若同时设置参数returnDefault:true,则鼠标移走后返回当前频道。 +
              + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/12.0-sideMenu-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/12.0-sideMenu-iframe.html new file mode 100644 index 0000000..d57920a --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/12.0-sideMenu-iframe.html @@ -0,0 +1,77 @@ + + + + + + +SuperSlide - targetCell基础示例 + + + + + + + +
              +

              书签切换系列

              +
                +
              • 淘宝首页右侧公告
              • +
              • 京东首页产品切换
              • +
              • 苏宁易购首页品牌切换
              • +
              • 1号店双重切换
              • +
              • 腾讯健康频道切换
              • +
              +

              幻灯片/焦点图系列

              +
                +
              • 淘宝首页焦点图
              • +
              • 腾讯娱乐频道焦点图
              • +
              • 腾讯电影频道焦点图
              • +
              • 网易游戏频道焦点图
              • +
              • 易迅首页焦点图
              • +
              +

              带按钮切换

              +
                +
              • 淘宝首页今日活动
              • +
              • 豆瓣读书频道
              • +
              • 天猫首页品牌切换
              • +
              • 格瓦拉首页活动进行中
              • +
              • 腾讯博客图片滚动
              • +
              + +
              + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/2.0-focus-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/2.0-focus-iframe.html new file mode 100644 index 0000000..e6be443 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/2.0-focus-iframe.html @@ -0,0 +1,75 @@ + + + + + + +SuperSlide - 焦点图/幻灯片 + + + + + + + + + +
              +
              +
              • 1
              • 2
              • 3
              +
              +
              +
                +
              • +
              • +
              • +
              +
              + + + + + +
              + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/3.0-picScroll-left-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/3.0-picScroll-left-iframe.html new file mode 100644 index 0000000..679456e --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/3.0-picScroll-left-iframe.html @@ -0,0 +1,94 @@ + + + + + + +SuperSlide - 图片滚动特效-左 + + + + + + + + + +
              +
              + +
                + + +
                +
                + +
                +
                + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/4.0-picScroll-top-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/4.0-picScroll-top-iframe.html new file mode 100644 index 0000000..7c00cc2 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/4.0-picScroll-top-iframe.html @@ -0,0 +1,94 @@ + + + + + + +SuperSlide - 图片上滚动特效-上 + + + + + + + + + +
                +
                + +
                  + + +
                  +
                  + +
                  +
                  + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/5.0-picMarquee-left-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/5.0-picMarquee-left-iframe.html new file mode 100644 index 0000000..f4119a0 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/5.0-picMarquee-left-iframe.html @@ -0,0 +1,90 @@ + + + + + + +SuperSlide - 图片无缝滚动特效-左 + + + + + + + + + +
                  +
                  + + +
                  +
                  + +
                  +
                  + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/6.0-picMarquee-top-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/6.0-picMarquee-top-iframe.html new file mode 100644 index 0000000..c3ad664 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/6.0-picMarquee-top-iframe.html @@ -0,0 +1,89 @@ + + + + + + +SuperSlide - 图片无缝滚动特效-上 + + + + + + + + + +
                  +
                  + + +
                  +
                  + +
                  +
                  + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/7.0-txtScroll-left-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/7.0-txtScroll-left-iframe.html new file mode 100644 index 0000000..547514e --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/7.0-txtScroll-left-iframe.html @@ -0,0 +1,72 @@ + + + + + + +SuperSlide - 文字滚动特效-左 + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/8.0-txtScroll-top-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/8.0-txtScroll-top-iframe.html new file mode 100644 index 0000000..8966897 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/8.0-txtScroll-top-iframe.html @@ -0,0 +1,77 @@ + + + + + + +SuperSlide - 文字滚动特效-上 + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/iframe/9.0-txtMarquee-left-iframe.html b/src/main/webapp/static/SuperSlide/demo/iframe/9.0-txtMarquee-left-iframe.html new file mode 100644 index 0000000..f6638e0 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/demo/iframe/9.0-txtMarquee-left-iframe.html @@ -0,0 +1,71 @@ + + + + + + +SuperSlide - 文字无缝滚动特效-左 + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/demo/images/arrow.png b/src/main/webapp/static/SuperSlide/demo/images/arrow.png new file mode 100644 index 0000000..9530206 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/arrow.png differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/blank.png b/src/main/webapp/static/SuperSlide/demo/images/blank.png new file mode 100644 index 0000000..209a438 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/blank.png differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoAdd.png b/src/main/webapp/static/SuperSlide/demo/images/icoAdd.png new file mode 100644 index 0000000..7e80cb3 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoAdd.png differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoCircle.gif b/src/main/webapp/static/SuperSlide/demo/images/icoCircle.gif new file mode 100644 index 0000000..c4fb001 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoCircle.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoDown.gif b/src/main/webapp/static/SuperSlide/demo/images/icoDown.gif new file mode 100644 index 0000000..07e2148 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoDown.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoLeft.gif b/src/main/webapp/static/SuperSlide/demo/images/icoLeft.gif new file mode 100644 index 0000000..3b848a5 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoLeft.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoRight.gif b/src/main/webapp/static/SuperSlide/demo/images/icoRight.gif new file mode 100644 index 0000000..38981ad Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoRight.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/icoUp.gif b/src/main/webapp/static/SuperSlide/demo/images/icoUp.gif new file mode 100644 index 0000000..55172c6 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/icoUp.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/loading.gif b/src/main/webapp/static/SuperSlide/demo/images/loading.gif new file mode 100644 index 0000000..4602ce7 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/loading.gif differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic1.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic1.jpg new file mode 100644 index 0000000..4d97083 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic1.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic2.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic2.jpg new file mode 100644 index 0000000..1f6f37e Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic2.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic3.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic3.jpg new file mode 100644 index 0000000..0709fde Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic3.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic4.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic4.jpg new file mode 100644 index 0000000..49315c3 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic4.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic5.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic5.jpg new file mode 100644 index 0000000..96c931e Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic5.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic6.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic6.jpg new file mode 100644 index 0000000..535cc84 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic6.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/pic7.jpg b/src/main/webapp/static/SuperSlide/demo/images/pic7.jpg new file mode 100644 index 0000000..b1e6992 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/pic7.jpg differ diff --git a/src/main/webapp/static/SuperSlide/demo/images/slider-arrow.png b/src/main/webapp/static/SuperSlide/demo/images/slider-arrow.png new file mode 100644 index 0000000..4b20ef2 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/demo/images/slider-arrow.png differ diff --git a/src/main/webapp/static/SuperSlide/images/arrow.png b/src/main/webapp/static/SuperSlide/images/arrow.png new file mode 100644 index 0000000..9530206 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/arrow.png differ diff --git a/src/main/webapp/static/SuperSlide/images/autoPage.png b/src/main/webapp/static/SuperSlide/images/autoPage.png new file mode 100644 index 0000000..ed39c2b Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/autoPage.png differ diff --git a/src/main/webapp/static/SuperSlide/images/bg.jpg b/src/main/webapp/static/SuperSlide/images/bg.jpg new file mode 100644 index 0000000..8c9d8a6 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/bg.jpg differ diff --git a/src/main/webapp/static/SuperSlide/images/blank.png b/src/main/webapp/static/SuperSlide/images/blank.png new file mode 100644 index 0000000..209a438 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/blank.png differ diff --git a/src/main/webapp/static/SuperSlide/images/body.png b/src/main/webapp/static/SuperSlide/images/body.png new file mode 100644 index 0000000..9ca8282 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/body.png differ diff --git a/src/main/webapp/static/SuperSlide/images/howPay.png b/src/main/webapp/static/SuperSlide/images/howPay.png new file mode 100644 index 0000000..bd23d6f Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/howPay.png differ diff --git a/src/main/webapp/static/SuperSlide/images/icoAdd.png b/src/main/webapp/static/SuperSlide/images/icoAdd.png new file mode 100644 index 0000000..7e80cb3 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/icoAdd.png differ diff --git a/src/main/webapp/static/SuperSlide/images/icoDown.gif b/src/main/webapp/static/SuperSlide/images/icoDown.gif new file mode 100644 index 0000000..07e2148 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/icoDown.gif differ diff --git a/src/main/webapp/static/SuperSlide/images/icoLeft.gif b/src/main/webapp/static/SuperSlide/images/icoLeft.gif new file mode 100644 index 0000000..3b848a5 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/icoLeft.gif differ diff --git a/src/main/webapp/static/SuperSlide/images/icoRight.gif b/src/main/webapp/static/SuperSlide/images/icoRight.gif new file mode 100644 index 0000000..38981ad Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/icoRight.gif differ diff --git a/src/main/webapp/static/SuperSlide/images/icoUp.gif b/src/main/webapp/static/SuperSlide/images/icoUp.gif new file mode 100644 index 0000000..55172c6 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/icoUp.gif differ diff --git a/src/main/webapp/static/SuperSlide/images/indCircle.png b/src/main/webapp/static/SuperSlide/images/indCircle.png new file mode 100644 index 0000000..3678900 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/indCircle.png differ diff --git a/src/main/webapp/static/SuperSlide/images/linde-white.png b/src/main/webapp/static/SuperSlide/images/linde-white.png new file mode 100644 index 0000000..4dc7803 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/linde-white.png differ diff --git a/src/main/webapp/static/SuperSlide/images/loading.gif b/src/main/webapp/static/SuperSlide/images/loading.gif new file mode 100644 index 0000000..4602ce7 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/loading.gif differ diff --git a/src/main/webapp/static/SuperSlide/images/multiLines-slide.png b/src/main/webapp/static/SuperSlide/images/multiLines-slide.png new file mode 100644 index 0000000..6a3edd0 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/multiLines-slide.png differ diff --git a/src/main/webapp/static/SuperSlide/images/new.png b/src/main/webapp/static/SuperSlide/images/new.png new file mode 100644 index 0000000..c28e5b3 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/new.png differ diff --git a/src/main/webapp/static/SuperSlide/images/titCell_mainCell.png b/src/main/webapp/static/SuperSlide/images/titCell_mainCell.png new file mode 100644 index 0000000..8c07d5f Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/titCell_mainCell.png differ diff --git a/src/main/webapp/static/SuperSlide/images/vis.png b/src/main/webapp/static/SuperSlide/images/vis.png new file mode 100644 index 0000000..4e81e96 Binary files /dev/null and b/src/main/webapp/static/SuperSlide/images/vis.png differ diff --git a/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.js b/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.js new file mode 100644 index 0000000..46399a5 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.js @@ -0,0 +1,11 @@ +/*! + * SuperSlide v2.1 + * 轻松解决网站大部分特效展示问题 + * 详尽信息请看官网:http://www.SuperSlide2.com/ + * + * Copyright 2011-2013, 大话主席 + * + * 请尊重原创,保留头部版权 + * 在保留版权的前提下可应用于个人或商业用途 + */ +(function(a){a.fn.slide=function(b){return a.fn.slide.defaults={type:"slide",effect:"fade",autoPlay:!1,delayTime:500,interTime:2500,triggerTime:150,defaultIndex:0,titCell:".hd li",mainCell:".bd",targetCell:null,trigger:"mouseover",scroll:1,vis:1,titOnClassName:"on",autoPage:!1,prevCell:".prev",nextCell:".next",pageStateCell:".pageState",opp:!1,pnLoop:!0,easing:"swing",startFun:null,endFun:null,switchLoad:null,playStateCell:".playState",mouseOverStop:!0,defaultPlay:!0,returnDefault:!1},this.each(function(){var c=a.extend({},a.fn.slide.defaults,b),d=a(this),e=c.effect,f=a(c.prevCell,d),g=a(c.nextCell,d),h=a(c.pageStateCell,d),i=a(c.playStateCell,d),j=a(c.titCell,d),k=j.size(),l=a(c.mainCell,d),m=l.children().size(),n=c.switchLoad,o=a(c.targetCell,d),p=parseInt(c.defaultIndex),q=parseInt(c.delayTime),r=parseInt(c.interTime);parseInt(c.triggerTime);var P,t=parseInt(c.scroll),u=parseInt(c.vis),v="false"==c.autoPlay||0==c.autoPlay?!1:!0,w="false"==c.opp||0==c.opp?!1:!0,x="false"==c.autoPage||0==c.autoPage?!1:!0,y="false"==c.pnLoop||0==c.pnLoop?!1:!0,z="false"==c.mouseOverStop||0==c.mouseOverStop?!1:!0,A="false"==c.defaultPlay||0==c.defaultPlay?!1:!0,B="false"==c.returnDefault||0==c.returnDefault?!1:!0,C=0,D=0,E=0,F=0,G=c.easing,H=null,I=null,J=null,K=c.titOnClassName,L=j.index(d.find("."+K)),M=p=defaultIndex=-1==L?p:L,N=p,O=m>=u?0!=m%t?m%t:t:0,Q="leftMarquee"==e||"topMarquee"==e?!0:!1,R=function(){a.isFunction(c.startFun)&&c.startFun(p,k,d,a(c.titCell,d),l,o,f,g)},S=function(){a.isFunction(c.endFun)&&c.endFun(p,k,d,a(c.titCell,d),l,o,f,g)},T=function(){j.removeClass(K),A&&j.eq(defaultIndex).addClass(K)};if("menu"==c.type)return A&&j.removeClass(K).eq(p).addClass(K),j.hover(function(){P=a(this).find(c.targetCell);var b=j.index(a(this));I=setTimeout(function(){switch(p=b,j.removeClass(K).eq(p).addClass(K),R(),e){case"fade":P.stop(!0,!0).animate({opacity:"show"},q,G,S);break;case"slideDown":P.stop(!0,!0).animate({height:"show"},q,G,S)}},c.triggerTime)},function(){switch(clearTimeout(I),e){case"fade":P.animate({opacity:"hide"},q,G);break;case"slideDown":P.animate({height:"hide"},q,G)}}),B&&d.hover(function(){clearTimeout(J)},function(){J=setTimeout(T,q)}),void 0;if(0==k&&(k=m),Q&&(k=2),x){if(m>=u)if("leftLoop"==e||"topLoop"==e)k=0!=m%t?(0^m/t)+1:m/t;else{var U=m-u;k=1+parseInt(0!=U%t?U/t+1:U/t),0>=k&&(k=1)}else k=1;j.html("");var V="";if(1==c.autoPage||"true"==c.autoPage)for(var W=0;k>W;W++)V+="
                • "+(W+1)+"
                • ";else for(var W=0;k>W;W++)V+=c.autoPage.replace("$",W+1);j.html(V);var j=j.children()}if(m>=u){l.children().each(function(){a(this).width()>E&&(E=a(this).width(),D=a(this).outerWidth(!0)),a(this).height()>F&&(F=a(this).height(),C=a(this).outerHeight(!0))});var X=l.children(),Y=function(){for(var a=0;u>a;a++)X.eq(a).clone().addClass("clone").appendTo(l);for(var a=0;O>a;a++)X.eq(m-a-1).clone().addClass("clone").prependTo(l)};switch(e){case"fold":l.css({position:"relative",width:D,height:C}).children().css({position:"absolute",width:E,left:0,top:0,display:"none"});break;case"top":l.wrap('
                  ').css({top:-(p*t)*C,position:"relative",padding:"0",margin:"0"}).children().css({height:F});break;case"left":l.wrap('
                  ').css({width:m*D,left:-(p*t)*D,position:"relative",overflow:"hidden",padding:"0",margin:"0"}).children().css({"float":"left",width:E});break;case"leftLoop":case"leftMarquee":Y(),l.wrap('
                  ').css({width:(m+u+O)*D,position:"relative",overflow:"hidden",padding:"0",margin:"0",left:-(O+p*t)*D}).children().css({"float":"left",width:E});break;case"topLoop":case"topMarquee":Y(),l.wrap('
                  ').css({height:(m+u+O)*C,position:"relative",padding:"0",margin:"0",top:-(O+p*t)*C}).children().css({height:F})}}var Z=function(a){var b=a*t;return a==k?b=m:-1==a&&0!=m%t&&(b=-m%t),b},$=function(b){var c=function(c){for(var d=c;u+c>d;d++)b.eq(d).find("img["+n+"]").each(function(){var b=a(this);if(b.attr("src",b.attr(n)).removeAttr(n),l.find(".clone")[0])for(var c=l.children(),d=0;c.size()>d;d++)c.eq(d).find("img["+n+"]").each(function(){a(this).attr(n)==b.attr("src")&&a(this).attr("src",a(this).attr(n)).removeAttr(n)})})};switch(e){case"fade":case"fold":case"top":case"left":case"slideDown":c(p*t);break;case"leftLoop":case"topLoop":c(O+Z(N));break;case"leftMarquee":case"topMarquee":var d="leftMarquee"==e?l.css("left").replace("px",""):l.css("top").replace("px",""),f="leftMarquee"==e?D:C,g=O;if(0!=d%f){var h=Math.abs(0^d/f);g=1==p?O+h:O+h-1}c(g)}},_=function(a){if(!A||M!=p||a||Q){if(Q?p>=1?p=1:0>=p&&(p=0):(N=p,p>=k?p=0:0>p&&(p=k-1)),R(),null!=n&&$(l.children()),o[0]&&(P=o.eq(p),null!=n&&$(o),"slideDown"==e?(o.not(P).stop(!0,!0).slideUp(q),P.slideDown(q,G,function(){l[0]||S()})):(o.not(P).stop(!0,!0).hide(),P.animate({opacity:"show"},q,function(){l[0]||S()}))),m>=u)switch(e){case"fade":l.children().stop(!0,!0).eq(p).animate({opacity:"show"},q,G,function(){S()}).siblings().hide();break;case"fold":l.children().stop(!0,!0).eq(p).animate({opacity:"show"},q,G,function(){S()}).siblings().animate({opacity:"hide"},q,G);break;case"top":l.stop(!0,!1).animate({top:-p*t*C},q,G,function(){S()});break;case"left":l.stop(!0,!1).animate({left:-p*t*D},q,G,function(){S()});break;case"leftLoop":var b=N;l.stop(!0,!0).animate({left:-(Z(N)+O)*D},q,G,function(){-1>=b?l.css("left",-(O+(k-1)*t)*D):b>=k&&l.css("left",-O*D),S()});break;case"topLoop":var b=N;l.stop(!0,!0).animate({top:-(Z(N)+O)*C},q,G,function(){-1>=b?l.css("top",-(O+(k-1)*t)*C):b>=k&&l.css("top",-O*C),S()});break;case"leftMarquee":var c=l.css("left").replace("px","");0==p?l.animate({left:++c},0,function(){l.css("left").replace("px","")>=0&&l.css("left",-m*D)}):l.animate({left:--c},0,function(){-(m+O)*D>=l.css("left").replace("px","")&&l.css("left",-O*D)});break;case"topMarquee":var d=l.css("top").replace("px","");0==p?l.animate({top:++d},0,function(){l.css("top").replace("px","")>=0&&l.css("top",-m*C)}):l.animate({top:--d},0,function(){-(m+O)*C>=l.css("top").replace("px","")&&l.css("top",-O*C)})}j.removeClass(K).eq(p).addClass(K),M=p,y||(g.removeClass("nextStop"),f.removeClass("prevStop"),0==p&&f.addClass("prevStop"),p==k-1&&g.addClass("nextStop")),h.html(""+(p+1)+"/"+k)}};A&&_(!0),B&&d.hover(function(){clearTimeout(J)},function(){J=setTimeout(function(){p=defaultIndex,A?_():"slideDown"==e?P.slideUp(q,T):P.animate({opacity:"hide"},q,T),M=p},300)});var ab=function(a){H=setInterval(function(){w?p--:p++,_()},a?a:r)},bb=function(a){H=setInterval(_,a?a:r)},cb=function(){z||(clearInterval(H),ab())},db=function(){(y||p!=k-1)&&(p++,_(),Q||cb())},eb=function(){(y||0!=p)&&(p--,_(),Q||cb())},fb=function(){clearInterval(H),Q?bb():ab(),i.removeClass("pauseState")},gb=function(){clearInterval(H),i.addClass("pauseState")};if(v?Q?(w?p--:p++,bb(),z&&l.hover(gb,fb)):(ab(),z&&d.hover(gb,fb)):(Q&&(w?p--:p++),i.addClass("pauseState")),i.click(function(){i.hasClass("pauseState")?fb():gb()}),"mouseover"==c.trigger?j.hover(function(){var a=j.index(this);I=setTimeout(function(){p=a,_(),cb()},c.triggerTime)},function(){clearTimeout(I)}):j.click(function(){p=j.index(this),_(),cb()}),Q){if(g.mousedown(db),f.mousedown(eb),y){var hb,ib=function(){hb=setTimeout(function(){clearInterval(H),bb(0^r/10)},150)},jb=function(){clearTimeout(hb),clearInterval(H),bb()};g.mousedown(ib),g.mouseup(jb),f.mousedown(ib),f.mouseup(jb)}"mouseover"==c.trigger&&(g.hover(db,function(){}),f.hover(eb,function(){}))}else g.click(db),f.click(eb)})}})(jQuery),jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),Math.abs(d)>h){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),Math.abs(d)>h){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(2==(b/=e/2))return c+d;if(g||(g=e*.3*1.5),Math.abs(d)>h){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return 1>b?-.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c:.5*h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),1>(b/=e/2)?d/2*b*b*(((f*=1.525)+1)*b-f)+c:d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){return 1/2.75>(b/=e)?d*7.5625*b*b+c:2/2.75>b?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:2.5/2.75>b?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(a,b,c,d,e){return e/2>b?.5*jQuery.easing.easeInBounce(a,2*b,0,d,e)+c:.5*jQuery.easing.easeOutBounce(a,2*b-e,0,d,e)+.5*d+c}}); \ No newline at end of file diff --git a/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.source.js b/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.source.js new file mode 100644 index 0000000..bf48b98 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/jquery.SuperSlide.2.1.source.js @@ -0,0 +1,453 @@ +/*! + * SuperSlide v2.1 + * 轻松解决网站大部分特效展示问题 + * 详尽信息请看官网:http://www.SuperSlide2.com/ + * + * Copyright 2011-2013, 大话主席 + * + * 请尊重原创,保留头部版权 + * 在保留版权的前提下可应用于个人或商业用途 + + */ + +(function($){ + $.fn.slide=function(options){ + $.fn.slide.defaults={ + type:"slide", + effect:"fade", + autoPlay:false, + delayTime:500, + interTime:2500, + triggerTime:150, + defaultIndex:0, + titCell:".hd li", + mainCell:".bd", + targetCell:null, + trigger:"mouseover", + scroll:1, + vis:1, + titOnClassName:"on", + autoPage:false, + prevCell:".prev", + nextCell:".next", + pageStateCell:".pageState", + opp: false, + pnLoop:true, + easing:"swing", + startFun:null, + endFun:null, + switchLoad:null, + + playStateCell:".playState", + mouseOverStop:true, + defaultPlay:true, + returnDefault:false + }; + + return this.each(function() { + + var opts = $.extend({},$.fn.slide.defaults,options); + var slider = $(this); + var effect = opts.effect; + var prevBtn = $(opts.prevCell, slider); + var nextBtn = $(opts.nextCell, slider); + var pageState = $(opts.pageStateCell, slider); + var playState = $(opts.playStateCell, slider); + + var navObj = $(opts.titCell, slider);//导航子元素结合 + var navObjSize = navObj.size(); + var conBox = $(opts.mainCell , slider);//内容元素父层对象 + var conBoxSize=conBox.children().size(); + var sLoad=opts.switchLoad; + var tarObj = $(opts.targetCell, slider); + + /*字符串转换*/ + var index=parseInt(opts.defaultIndex); + var delayTime=parseInt(opts.delayTime); + var interTime=parseInt(opts.interTime); + var triggerTime=parseInt(opts.triggerTime); + var scroll=parseInt(opts.scroll); + var vis=parseInt(opts.vis); + var autoPlay = (opts.autoPlay=="false"||opts.autoPlay==false)?false:true; + var opp = (opts.opp=="false"||opts.opp==false)?false:true; + var autoPage = (opts.autoPage=="false"||opts.autoPage==false)?false:true; + var pnLoop = (opts.pnLoop=="false"||opts.pnLoop==false)?false:true; + var mouseOverStop = (opts.mouseOverStop=="false"||opts.mouseOverStop==false)?false:true; + var defaultPlay = (opts.defaultPlay=="false"||opts.defaultPlay==false)?false:true; + var returnDefault = (opts.returnDefault=="false"||opts.returnDefault==false)?false:true; + + var slideH=0; + var slideW=0; + var selfW=0; + var selfH=0; + var easing=opts.easing; + var inter=null;//autoPlay-setInterval + var mst =null;//trigger-setTimeout + var rtnST=null;//returnDefault-setTimeout + var titOn = opts.titOnClassName; + + var onIndex = navObj.index( slider.find( "."+titOn) ); + var oldIndex = index = defaultIndex = onIndex==-1?index:onIndex; + + + var _ind = index; + var cloneNum = conBoxSize>=vis?( conBoxSize%scroll!=0?conBoxSize%scroll:scroll):0; + var _tar; + var isMarq = effect=="leftMarquee" || effect=="topMarquee"?true:false; + + var doStartFun=function(){ if ( $.isFunction( opts.startFun) ){ opts.startFun( index,navObjSize,slider,$(opts.titCell, slider),conBox,tarObj,prevBtn,nextBtn ) } } + var doEndFun=function(){ if ( $.isFunction( opts.endFun ) ){ opts.endFun( index,navObjSize,slider,$(opts.titCell, slider),conBox,tarObj,prevBtn,nextBtn ) } } + var resetOn=function(){ navObj.removeClass(titOn); if( defaultPlay ) navObj.eq(defaultIndex).addClass(titOn) } + + + + //单独处理菜单效果 + if( opts.type=="menu" ){ + + if( defaultPlay ){ navObj.removeClass(titOn).eq(index).addClass(titOn); } + navObj.hover( + function(){ + _tar=$(this).find( opts.targetCell ); + var hoverInd =navObj.index($(this)); + + mst = setTimeout(function(){ + index=hoverInd; + navObj.removeClass(titOn).eq (index).addClass(titOn); + doStartFun(); + switch (effect) + { + case "fade":_tar.stop(true,true).animate({opacity:"show"}, delayTime,easing,doEndFun ); break; + case "slideDown":_tar.stop(true,true).animate({height:"show"}, delayTime,easing,doEndFun ); break; + } + } ,opts.triggerTime); + + },function(){ + clearTimeout(mst); + switch (effect){ case "fade":_tar.animate( {opacity:"hide"},delayTime,easing ); break; case "slideDown":_tar.animate( {height:"hide"},delayTime,easing ); break; } + } + ); + + if (returnDefault){ + slider.hover(function(){clearTimeout(rtnST);},function(){ rtnST = setTimeout( resetOn,delayTime ); }); + } + + + return; + } + + + //处理分页 + if( navObjSize==0 )navObjSize=conBoxSize;//只有左右按钮 + if( isMarq ) navObjSize=2; + if( autoPage ){ + if(conBoxSize>=vis){ + if( effect=="leftLoop" || effect=="topLoop" ){ navObjSize=conBoxSize%scroll!=0?(conBoxSize/scroll^0)+1:conBoxSize/scroll; } + else{ + var tempS = conBoxSize-vis; + navObjSize=1+parseInt(tempS%scroll!=0?(tempS/scroll+1):(tempS/scroll)); + if(navObjSize<=0)navObjSize=1; + } + } + else{ navObjSize=1 } + + navObj.html(""); + var str=""; + + if( opts.autoPage==true || opts.autoPage=="true" ){ for( var i=0; i" } } + else{ for( var i=0; i=vis){ //当内容个数少于可视个数,不执行效果。 + conBox.children().each(function(){ //取最大值 + if( $(this).width()>selfW ){ selfW=$(this).width(); slideW=$(this).outerWidth(true); } + if( $(this).height()>selfH ){ selfH=$(this).height(); slideH=$(this).outerHeight(true); } + }); + + var _chr = conBox.children(); + var cloneEle = function(){ + for( var i=0; i').css( { "top":-(index*scroll)*slideH, "position":"relative","padding":"0","margin":"0"}).children().css( {"height":selfH} ); break; + case "left": conBox.wrap('
                  ').css( { "width":conBoxSize*slideW,"left":-(index*scroll)*slideW,"position":"relative","overflow":"hidden","padding":"0","margin":"0"}).children().css( {"float":"left","width":selfW} ); break; + case "leftLoop": + case "leftMarquee": + cloneEle(); + conBox.wrap('
                  ').css( { "width":(conBoxSize+vis+cloneNum)*slideW,"position":"relative","overflow":"hidden","padding":"0","margin":"0","left":-(cloneNum+index*scroll)*slideW}).children().css( {"float":"left","width":selfW} ); break; + case "topLoop": + case "topMarquee": + cloneEle(); + conBox.wrap('
                  ').css( { "height":(conBoxSize+vis+cloneNum)*slideH,"position":"relative","padding":"0","margin":"0","top":-(cloneNum+index*scroll)*slideH}).children().css( {"height":selfH} ); break; + } + } + + + + //针对leftLoop、topLoop的滚动个数 + var scrollNum=function(ind){ + var _tempCs= ind*scroll; + if( ind==navObjSize ){ _tempCs=conBoxSize; }else if( ind==-1 && conBoxSize%scroll!=0){ _tempCs=-conBoxSize%scroll; } + return _tempCs; + } + + //切换加载 + var doSwitchLoad=function(objs){ + + var changeImg=function(t){ + for ( var i= t; i<( vis+ t); i++ ){ + objs.eq(i).find("img["+sLoad+"]").each(function(){ + var _this = $(this); + _this.attr("src",_this.attr(sLoad)).removeAttr(sLoad); + if( conBox.find(".clone")[0] ){ //如果存在.clone + var chir = conBox.children(); + for ( var j=0 ; j< chir.size() ; j++ ) + { + chir.eq(j).find("img["+sLoad+"]").each(function(){ + if( $(this).attr(sLoad)==_this.attr("src") ) $(this).attr("src",$(this).attr(sLoad)).removeAttr(sLoad) + }) + } + } + }) + } + } + + switch(effect) + { + case "fade": case "fold": case "top": case "left": case "slideDown": + changeImg( index*scroll ); + break; + case "leftLoop": case "topLoop": + changeImg( cloneNum+scrollNum(_ind) ); + break; + case "leftMarquee":case "topMarquee": + var curS = effect=="leftMarquee"? conBox.css("left").replace("px",""):conBox.css("top").replace("px",""); + var slideT = effect=="leftMarquee"? slideW:slideH; + var mNum=cloneNum; + if( curS%slideT!=0 ){ + var curP = Math.abs(curS/slideT^0); + if( index==1 ){ mNum=cloneNum+curP }else{ mNum=cloneNum+curP-1 } + } + changeImg( mNum ); + break; + } + }//doSwitchLoad end + + + //效果函数 + var doPlay=function(init){ + // 当前页状态不触发效果 + if( defaultPlay && oldIndex==index && !init && !isMarq ) return; + + //处理页码 + if( isMarq ){ if ( index>= 1) { index=1; } else if( index<=0) { index = 0; } } + else{ + _ind=index; if ( index >= navObjSize) { index = 0; } else if( index < 0) { index = navObjSize-1; } + } + + doStartFun(); + + //处理切换加载 + if( sLoad!=null ){ doSwitchLoad( conBox.children() ) } + + //处理targetCell + if(tarObj[0]){ + _tar = tarObj.eq(index); + if( sLoad!=null ){ doSwitchLoad( tarObj ) } + if( effect=="slideDown" ){ + tarObj.not(_tar).stop(true,true).slideUp(delayTime); + _tar.slideDown( delayTime,easing,function(){ if(!conBox[0]) doEndFun() }); + } + else{ + tarObj.not(_tar).stop(true,true).hide(); + _tar.animate({opacity:"show"},delayTime,function(){ if(!conBox[0]) doEndFun() }); + } + } + + if(conBoxSize>=vis){ //当内容个数少于可视个数,不执行效果。 + switch (effect) + { + case "fade":conBox.children().stop(true,true).eq(index).animate({opacity:"show"},delayTime,easing,function(){doEndFun()}).siblings().hide(); break; + case "fold":conBox.children().stop(true,true).eq(index).animate({opacity:"show"},delayTime,easing,function(){doEndFun()}).siblings().animate({opacity:"hide"},delayTime,easing);break; + case "top":conBox.stop(true,false).animate({"top":-index*scroll*slideH},delayTime,easing,function(){doEndFun()});break; + case "left":conBox.stop(true,false).animate({"left":-index*scroll*slideW},delayTime,easing,function(){doEndFun()});break; + case "leftLoop": + var __ind = _ind; + conBox.stop(true,true).animate({"left":-(scrollNum(_ind)+cloneNum)*slideW},delayTime,easing,function(){ + if( __ind<=-1 ){ conBox.css("left",-(cloneNum+(navObjSize-1)*scroll)*slideW); }else if( __ind>=navObjSize ){ conBox.css("left",-cloneNum*slideW); } + doEndFun(); + }); + break;//leftLoop end + + case "topLoop": + var __ind = _ind; + conBox.stop(true,true).animate({"top":-(scrollNum(_ind)+cloneNum)*slideH},delayTime,easing,function(){ + if( __ind<=-1 ){ conBox.css("top",-(cloneNum+(navObjSize-1)*scroll)*slideH); }else if( __ind>=navObjSize ){ conBox.css("top",-cloneNum*slideH); } + doEndFun(); + }); + break;//topLoop end + + case "leftMarquee": + var tempLeft = conBox.css("left").replace("px",""); + if(index==0 ){ + conBox.animate({"left":++tempLeft},0,function(){ + if( conBox.css("left").replace("px","")>= 0){ conBox.css("left",-conBoxSize*slideW) } + }); + } + else{ + conBox.animate({"left":--tempLeft},0,function(){ + if( conBox.css("left").replace("px","")<= -(conBoxSize+cloneNum)*slideW){ conBox.css("left",-cloneNum*slideW) } + }); + }break;// leftMarquee end + + case "topMarquee": + var tempTop = conBox.css("top").replace("px",""); + if(index==0 ){ + conBox.animate({"top":++tempTop},0,function(){ + if( conBox.css("top").replace("px","")>= 0){ conBox.css("top",-conBoxSize*slideH) } + }); + } + else{ + conBox.animate({"top":--tempTop},0,function(){ + if( conBox.css("top").replace("px","")<= -(conBoxSize+cloneNum)*slideH){ conBox.css("top",-cloneNum*slideH) } + }); + }break;// topMarquee end + + }//switch end + } + + navObj.removeClass(titOn).eq(index).addClass(titOn); + oldIndex=index; + if( !pnLoop ){ //pnLoop控制前后按钮是否继续循环 + nextBtn.removeClass("nextStop"); prevBtn.removeClass("prevStop"); + if (index==0 ){ prevBtn.addClass("prevStop"); } + if (index==navObjSize-1 ){ nextBtn.addClass("nextStop"); } + } + + pageState.html( ""+(index+1)+"/"+navObjSize); + + };// doPlay end + + //初始化执行 + if( defaultPlay ){ doPlay(true); } + + if (returnDefault)//返回默认状态 + { + slider.hover(function(){ clearTimeout(rtnST) },function(){ + rtnST = setTimeout( function(){ + index=defaultIndex; + if(defaultPlay){ doPlay(); } + else{ + if( effect=="slideDown" ){ _tar.slideUp( delayTime, resetOn ); } + else{ _tar.animate({opacity:"hide"},delayTime,resetOn ); } + } + oldIndex=index; + },300 ); + }); + } + + ///自动播放函数 + var setInter = function(time){ inter=setInterval(function(){ opp?index--:index++; doPlay() }, !!time?time:interTime); } + var setMarInter = function(time){ inter = setInterval(doPlay, !!time?time:interTime); } + // 处理mouseOverStop + var resetInter = function(){ if( !mouseOverStop ){clearInterval(inter); setInter() } } + // 前后按钮触发 + var nextTrigger = function(){ if ( pnLoop || index!=navObjSize-1 ){ index++; doPlay(); if(!isMarq)resetInter(); } } + var prevTrigger = function(){ if ( pnLoop || index!=0 ){ index--; doPlay(); if(!isMarq)resetInter(); } } + //处理playState + var playStateFun = function(){ clearInterval(inter); isMarq?setMarInter():setInter(); playState.removeClass("pauseState") } + var pauseStateFun = function(){ clearInterval(inter);playState.addClass("pauseState"); } + + //自动播放 + if (autoPlay) { + if( isMarq ){ + opp?index--:index++; setMarInter(); + if(mouseOverStop) conBox.hover(pauseStateFun,playStateFun); + }else{ + setInter(); + if(mouseOverStop) slider.hover( pauseStateFun,playStateFun ); + } + } + else{ if( isMarq ){ opp?index--:index++; } playState.addClass("pauseState"); } + + playState.click(function(){ playState.hasClass("pauseState")?playStateFun():pauseStateFun() }); + + //titCell事件 + if(opts.trigger=="mouseover"){ + navObj.hover(function(){ var hoverInd = navObj.index(this); mst = setTimeout(function(){ index=hoverInd; doPlay(); resetInter(); },opts.triggerTime); }, function(){ clearTimeout(mst) }); + }else{ navObj.click(function(){ index=navObj.index(this); doPlay(); resetInter(); }) } + + //前后按钮事件 + if (isMarq){ + + nextBtn.mousedown(nextTrigger); + prevBtn.mousedown(prevTrigger); + //前后按钮长按10倍加速 + if (pnLoop) + { + var st; + var marDown = function(){ st=setTimeout(function(){ clearInterval(inter); setMarInter( interTime/10^0 ) },150) } + var marUp = function(){ clearTimeout(st); clearInterval(inter); setMarInter() } + nextBtn.mousedown(marDown); nextBtn.mouseup(marUp); + prevBtn.mousedown(marDown); prevBtn.mouseup(marUp); + } + //前后按钮mouseover事件 + if( opts.trigger=="mouseover" ){ nextBtn.hover(nextTrigger,function(){}); prevBtn.hover(prevTrigger,function(){}); } + }else{ + nextBtn.click(nextTrigger); + prevBtn.click(prevTrigger); + } + + });//each End + + };//slide End + +})(jQuery); + +jQuery.easing['jswing'] = jQuery.easing['swing']; +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { return jQuery.easing[jQuery.easing.def](x, t, b, c, d); }, + easeInQuad: function (x, t, b, c, d) {return c*(t/=d)*t + b;}, + easeOutQuad: function (x, t, b, c, d) {return -c *(t/=d)*(t-2) + b}, + easeInOutQuad: function (x, t, b, c, d) {if ((t/=d/2) < 1) return c/2*t*t + b;return -c/2 * ((--t)*(t-2) - 1) + b}, + easeInCubic: function (x, t, b, c, d) {return c*(t/=d)*t*t + b}, + easeOutCubic: function (x, t, b, c, d) {return c*((t=t/d-1)*t*t + 1) + b}, + easeInOutCubic: function (x, t, b, c, d) {if ((t/=d/2) < 1) return c/2*t*t*t + b;return c/2*((t-=2)*t*t + 2) + b}, + easeInQuart: function (x, t, b, c, d) {return c*(t/=d)*t*t*t + b}, + easeOutQuart: function (x, t, b, c, d) {return -c * ((t=t/d-1)*t*t*t - 1) + b}, + easeInOutQuart: function (x, t, b, c, d) {if ((t/=d/2) < 1) return c/2*t*t*t*t + b;return -c/2 * ((t-=2)*t*t*t - 2) + b}, + easeInQuint: function (x, t, b, c, d) {return c*(t/=d)*t*t*t*t + b}, + easeOutQuint: function (x, t, b, c, d) {return c*((t=t/d-1)*t*t*t*t + 1) + b}, + easeInOutQuint: function (x, t, b, c, d) {if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;return c/2*((t-=2)*t*t*t*t + 2) + b}, + easeInSine: function (x, t, b, c, d) {return -c * Math.cos(t/d * (Math.PI/2)) + c + b}, + easeOutSine: function (x, t, b, c, d) {return c * Math.sin(t/d * (Math.PI/2)) + b}, + easeInOutSine: function (x, t, b, c, d) {return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b}, + easeInExpo: function (x, t, b, c, d) {return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b}, + easeOutExpo: function (x, t, b, c, d) {return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b}, + easeInOutExpo: function (x, t, b, c, d) {if (t==0) return b;if (t==d) return b+c;if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;return c/2 * (-Math.pow(2, -10 * --t) + 2) + b}, + easeInCirc: function (x, t, b, c, d) {return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b}, + easeOutCirc: function (x, t, b, c, d) {return c * Math.sqrt(1 - (t=t/d-1)*t) + b}, + easeInOutCirc: function (x, t, b, c, d) {if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b}, + easeInElastic: function (x, t, b, c, d) {var s=1.70158;var p=0;var a=c;if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a);return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b}, + easeOutElastic: function (x, t, b, c, d) {var s=1.70158;var p=0;var a=c;if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a);return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b}, + easeInOutElastic: function (x, t, b, c, d) {var s=1.70158;var p=0;var a=c;if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a);if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b}, + easeInBack: function (x, t, b, c, d, s) {if (s == undefined) s = 1.70158;return c*(t/=d)*t*((s+1)*t - s) + b}, + easeOutBack: function (x, t, b, c, d, s) {if (s == undefined) s = 1.70158;return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b}, + easeInOutBack: function (x, t, b, c, d, s) {if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b}, + easeInBounce: function (x, t, b, c, d) {return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b}, + easeOutBounce: function (x, t, b, c, d) {if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b;} else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;} else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;} else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;}}, + easeInOutBounce: function (x, t, b, c, d) {if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;} +}); \ No newline at end of file diff --git a/src/main/webapp/static/SuperSlide/jquery1.42.min.js b/src/main/webapp/static/SuperSlide/jquery1.42.min.js new file mode 100644 index 0000000..48a88b8 --- /dev/null +++ b/src/main/webapp/static/SuperSlide/jquery1.42.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
                  a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

                  ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
                  ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
                  ","
                  "],thead:[1,"","
                  "],tr:[2,"","
                  "],td:[3,"","
                  "],col:[2,"","
                  "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
                  ","
                  "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
                  ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
                  "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); \ No newline at end of file diff --git a/src/main/webapp/static/SuperSlide/param.html b/src/main/webapp/static/SuperSlide/param.html new file mode 100644 index 0000000..bc8c35d --- /dev/null +++ b/src/main/webapp/static/SuperSlide/param.html @@ -0,0 +1,299 @@ + + + + + + + +SuperSlide - 查看参数 + + + + + + + + + + +
                  +
                    +
                  • 全部参数
                  • 必须理解参数[新手]
                  • +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  参数版本默认值说明详细
                  type2.1slide效果类型,可选"slide"||"menu",引入type:"menu"专门处理菜单/导航效果
                  defaultPlay2.1true默认是否执行效果(第一次运行是否执行效果)常用于导航/菜单
                  returnDefault2.1false鼠标移出容器,是否返回默认状态,常用于导航/菜单
                  mouseOverStop2.1true鼠标移到容器层(无缝滚动是mainCell)是否停止播放
                  playStateCell2.1".playState"播放/暂停状态按钮,点击后会增加/删除"pauseState"类名用于控制样色。可参考 [2.22-真·全屏焦点图]
                  switchLoad2.0 > 2.1null内容切换加载,暂时只支持图片,必须配合后台程序使用。当为图片的时候switchLoad为图片实际路径的属性名称,例如switchLoad:"_src"
                  + [v2.1] 修复当scroll>1时,switchLoad无效的bug。 +
                  详解
                  easing2.0 > 2.1"swing"缓动效果;
                  [v2.1]更改默认效果为“swing”,使效果更流畅
                  所有
                  startFun2.0 > 2.1null每次切换效果开始时执行函数,用于处理特殊情况或创建更多效果。用法 satrtFun:function(i,c){ }; 其中i为当前分页,c为总页数
                  + [v2.1]增加传递参数,startFun:function( i, c, slider, titCell, mainCell, targetCell, prevCell, nextCell ){},这样简写就方便了。
                  + 例如 jQuery(".slideBox").slide({ startFun:function( i,c,s ){ s.show() } }); 这里的 s.show() 相当于 jQuery(".slideBox").show() +
                  详解
                  endFun2.0 > 2.1null每次切换效果结束时执行函数,用法和startFun一致
                  +
                  详解
                  triggerTime2.0150毫秒,titCell触发时间,默认150毫秒延迟,以防重复执行效果。若为0即鼠标移过titCell立刻执行效果
                  targetCell2.0 > 2.1null切换元素对象,处理内容切换元素非包裹状态下等情况,实现更多效果,处理更多情况,能和titCell、mainCell同时使用。只支持fade效果。
                  + [v2.1] 增加支持slideDown效果。 +
                  详解
                  pageStateCell2.0".pageState"分页状态对象,用于显示分页状态,例如:2/3
                  pnLoop2.0true前/后按钮是否继续循环,若为false则当翻动到最前/后页时,前/后按钮点击无效,同时增加prevStop/nextStop类名控制样色
                  opp2.0false默认反方向运动,例如 effect:"leftMarquee" 然后设置 opp:true,则效果为右滚动。常用于leftMarquee/topMarquee
                  autoPage1.2 > 2.1false + [v1.2] 程序自动分页,需结合titCell使用,若为true,则titCell为导航元素的包裹层对象。ps:scroll>1时,记得设置autoPage:true,否则分页错误
                  + [v2.1] 支持自定义分页html,$为数字替换位置。例如autoPage:"<li><a>$</a></li>",如果不想输出数字:autoPage:"<li><a></a></li>"。 +
                  图解
                  titCell1.0".hd li"导航元素对象(鼠标的触发元素对象)图解
                  mainCell1.0".bd"切换元素的包裹层对象图解
                  effect1.0 > 2.0 >2.1"fade"动画效果
                  + [v1.0] fade:渐显; || top:上滚动;|| left:左滚动;|| topLoop:上循环滚动;|| leftLoop:左循环滚动;|| topMarquee:上无缝循环滚动;|| leftMarquee:左无缝循环滚动;
                  + [v2.0] fold:淡入淡出
                  + [v2.1] slideDown:下拉效果
                  autoPlay1.0false自动运行
                  interTime1.02500毫秒;自动运行间隔。当effect为无缝滚动(topMarquee/leftMarquee)时,相当于运行速度。
                  delayTime1.0500毫秒;切换效果持续时间(一次切换效果执行所用的时间长度)。
                  trigger1.0"mouseover"titCell触发方式 || mouseover:鼠标移过触发;|| click:鼠标点击触发;
                  scroll1.01每次滚动个数。
                  vis1.01visible缩写,mainCell的可视范围个数,当实际内容个数少于可视个数的时候,不执行SuperSlide效果。图解
                  prevCell1.0".prev"前一个/页按钮对象。
                  nextCell1.0".next"后一个/页按钮对象。
                  defaultIndex1.00默认的当前位置索引。0是第一个; defaultIndex:1 时,相当于从第2个开始执行
                  titOnClassName1.0"on"当前titCell位置自动增加的class名称
                  + + + +
                  + + + + + + + + + + diff --git a/src/main/webapp/static/SuperSlide/重要说明!.txt b/src/main/webapp/static/SuperSlide/重要说明!.txt new file mode 100644 index 0000000..0d783ea --- /dev/null +++ b/src/main/webapp/static/SuperSlide/重要说明!.txt @@ -0,0 +1,25 @@ +/*! + * SuperSlide v2.1 + * ɽվ󲿷Чչʾ + * 꾡Ϣ뿴http://www.SuperSlide2.com/ + * + * Copyright 2011-2013, ϯ + * + * ԭͷȨ + * ڱȨǰ¿Ӧڸ˻ҵ; + */ + + +1jquery.SuperSlide.2.1.js Ϊѹļ +2jquery.SuperSlide.2.1.source.js ΪԴļ +3demoļΪлЧʾ demo/1.0-switchTab.html Ϊtabлʾ +4demo/iframe ļвǻʾԣ + + +㹺չЧῴļ + +5otherDemoļΪչЧʾ +6syntaxhighlighter ļΪɫԺ + + +л֧֣ \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.css b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.css new file mode 100644 index 0000000..507ebeb --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.css @@ -0,0 +1,1203 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +.icon-large { + font-size: 1.3333333333333333em; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: middle; +} +.nav [class^="icon-"], +.nav [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; +} +.nav [class^="icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + vertical-align: -25%; +} +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large { + line-height: .75em; + margin-top: -7px; + padding-top: 5px; + margin-bottom: -5px; + padding-bottom: 4px; +} +.btn [class^="icon-"].pull-left, +.btn [class*=" icon-"].pull-left, +.btn [class^="icon-"].pull-right, +.btn [class*=" icon-"].pull-right { + vertical-align: inherit; +} +.btn [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large { + margin-top: -0.5em; +} +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer; +} +.icon-glass { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-music { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-search { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-film { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-large { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-in { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-out { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-power-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cog { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gear { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trash { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-home { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-time { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-road { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-inbox { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-repeat { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rotate-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-refresh { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-headphones { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-qrcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-barcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tags { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-book { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-print { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-font { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bold { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-italic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-height { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-width { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-center { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-justify { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facetime-video { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-picture { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pencil { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-map-marker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-adjust { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tint { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-edit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-move { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pause { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eject { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-question-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-info-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-screenshot { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ban-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-full { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-small { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-asterisk { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exclamation-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gift { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-leaf { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fire { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-warning-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plane { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-calendar { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-random { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magnet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-retweet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-shopping-cart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-vertical { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-horizontal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bar-chart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera-retro { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-key { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cogs { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gears { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-up-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-down-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signout { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pushpin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-external-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trophy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lemon { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unchecked { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-credit-card { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rss { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hdd { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bullhorn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-certificate { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-globe { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-wrench { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tasks { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-filter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-briefcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fullscreen { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-group { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beaker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cut { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-copy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paper-clip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paperclip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-save { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sign-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reorder { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ul { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ol { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-strikethrough { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-underline { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-table { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-truck { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-money { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-columns { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-undo { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rotate-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-legal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dashboard { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bolt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sitemap { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-umbrella { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paste { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lightbulb { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exchange { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user-md { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stethoscope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-suitcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-coffee { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-food { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-text-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-building { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hospital { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ambulance { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-medkit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fighter-jet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beer { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-h-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-desktop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-laptop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tablet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mobile-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-spinner { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reply { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-reply { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-expand-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-smile { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-frown { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-meh { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gamepad { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-keyboard { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag-checkered { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-terminal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-code { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reply-all { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-reply-all { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half-full { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-location-arrow { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-crop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-code-fork { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlink { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-question { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-info { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exclamation { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-superscript { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-subscript { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eraser { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-puzzle-piece { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-microphone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-microphone-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-shield { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-calendar-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fire-extinguisher { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rocket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-maxcdn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-html5 { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-css3 { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-anchor { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlock-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bullseye { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ellipsis-horizontal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ellipsis-vertical { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rss-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ticket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus-sign-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-minus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-level-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-level-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-edit-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-external-link-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-compass { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse-top { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-expand { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eur { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-euro { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gbp { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-usd { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dollar { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-inr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rupee { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-jpy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-yen { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cny { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-renminbi { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-krw { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-won { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-btc { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitcoin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-text { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-alphabet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-alphabet-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-attributes { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-attributes-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-order { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-order-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-xing { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-xing-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube-play { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dropbox { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stackexchange { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-instagram { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flickr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-adn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitbucket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitbucket-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tumblr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tumblr-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-apple { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-windows { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-android { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linux { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dribbble { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-skype { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-foursquare { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trello { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-female { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-male { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gittip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sun { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-moon { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-archive { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bug { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-vk { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-weibo { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-renren { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.min.css b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.min.css new file mode 100644 index 0000000..d3dae63 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome-ie7.min.css @@ -0,0 +1,384 @@ +.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;} +.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;} +.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;} +.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;} +.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;} +a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;} +.icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} diff --git a/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.css b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.css new file mode 100644 index 0000000..30a96b2 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.css @@ -0,0 +1,1479 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.2.1'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; +} +/* increased font size for icon-large */ +[class^="icon-"].icon-fixed-width, +[class*=" icon-"].icon-fixed-width { + display: inline-block; + width: 1.1428571428571428em; + text-align: right; + padding-right: 0.2857142857142857em; +} +[class^="icon-"].icon-fixed-width.icon-large, +[class*=" icon-"].icon-fixed-width.icon-large { + width: 1.4285714285714286em; +} +.icons-ul { + margin-left: 2.142857142857143em; + list-style-type: none; +} +.icons-ul > li { + position: relative; +} +.icons-ul .icon-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + text-align: center; + line-height: inherit; +} +[class^="icon-"].hide, +[class*=" icon-"].hide { + display: none; +} +.icon-muted { + color: #eeeeee; +} +.icon-light { + color: #ffffff; +} +.icon-dark { + color: #333333; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.icon-5x { + font-size: 5em; +} +.icon-5x.icon-border { + border-width: 5px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +/* keeps Bootstrap styles with and without icons the same */ +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} +/* EXTRAS + * -------------------------- */ +/* Stacked and layered icon */ +.icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: -35%; +} +.icon-stack [class^="icon-"], +.icon-stack [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: 1em; + line-height: inherit; + *line-height: 2em; +} +.icon-stack .icon-stack-base { + font-size: 2em; + *line-height: 1em; +} +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/* ensure rotation occurs inside anchor tags */ +a .icon-rotate-90:before, +a .icon-rotate-180:before, +a .icon-rotate-270:before, +a .icon-flip-horizontal:before, +a .icon-flip-vertical:before { + display: inline-block; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope-alt:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-power-off:before, +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-gear:before, +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file-alt:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-rotate-right:before, +.icon-repeat:before { + content: "\f01e"; +} +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-mail-forward:before, +.icon-share-alt:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-gears:before, +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up-alt:before { + content: "\f087"; +} +.icon-thumbs-down-alt:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-unchecked:before, +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paperclip:before, +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-rotate-left:before, +.icon-undo:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-text-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-mail-reply:before, +.icon-reply:before { + content: "\f112"; +} +.icon-github-alt:before { + content: "\f113"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +.icon-expand-alt:before { + content: "\f116"; +} +.icon-collapse-alt:before { + content: "\f117"; +} +.icon-smile:before { + content: "\f118"; +} +.icon-frown:before { + content: "\f119"; +} +.icon-meh:before { + content: "\f11a"; +} +.icon-gamepad:before { + content: "\f11b"; +} +.icon-keyboard:before { + content: "\f11c"; +} +.icon-flag-alt:before { + content: "\f11d"; +} +.icon-flag-checkered:before { + content: "\f11e"; +} +.icon-terminal:before { + content: "\f120"; +} +.icon-code:before { + content: "\f121"; +} +.icon-reply-all:before { + content: "\f122"; +} +.icon-mail-reply-all:before { + content: "\f122"; +} +.icon-star-half-full:before, +.icon-star-half-empty:before { + content: "\f123"; +} +.icon-location-arrow:before { + content: "\f124"; +} +.icon-crop:before { + content: "\f125"; +} +.icon-code-fork:before { + content: "\f126"; +} +.icon-unlink:before { + content: "\f127"; +} +.icon-question:before { + content: "\f128"; +} +.icon-info:before { + content: "\f129"; +} +.icon-exclamation:before { + content: "\f12a"; +} +.icon-superscript:before { + content: "\f12b"; +} +.icon-subscript:before { + content: "\f12c"; +} +.icon-eraser:before { + content: "\f12d"; +} +.icon-puzzle-piece:before { + content: "\f12e"; +} +.icon-microphone:before { + content: "\f130"; +} +.icon-microphone-off:before { + content: "\f131"; +} +.icon-shield:before { + content: "\f132"; +} +.icon-calendar-empty:before { + content: "\f133"; +} +.icon-fire-extinguisher:before { + content: "\f134"; +} +.icon-rocket:before { + content: "\f135"; +} +.icon-maxcdn:before { + content: "\f136"; +} +.icon-chevron-sign-left:before { + content: "\f137"; +} +.icon-chevron-sign-right:before { + content: "\f138"; +} +.icon-chevron-sign-up:before { + content: "\f139"; +} +.icon-chevron-sign-down:before { + content: "\f13a"; +} +.icon-html5:before { + content: "\f13b"; +} +.icon-css3:before { + content: "\f13c"; +} +.icon-anchor:before { + content: "\f13d"; +} +.icon-unlock-alt:before { + content: "\f13e"; +} +.icon-bullseye:before { + content: "\f140"; +} +.icon-ellipsis-horizontal:before { + content: "\f141"; +} +.icon-ellipsis-vertical:before { + content: "\f142"; +} +.icon-rss-sign:before { + content: "\f143"; +} +.icon-play-sign:before { + content: "\f144"; +} +.icon-ticket:before { + content: "\f145"; +} +.icon-minus-sign-alt:before { + content: "\f146"; +} +.icon-check-minus:before { + content: "\f147"; +} +.icon-level-up:before { + content: "\f148"; +} +.icon-level-down:before { + content: "\f149"; +} +.icon-check-sign:before { + content: "\f14a"; +} +.icon-edit-sign:before { + content: "\f14b"; +} +.icon-external-link-sign:before { + content: "\f14c"; +} +.icon-share-sign:before { + content: "\f14d"; +} +.icon-compass:before { + content: "\f14e"; +} +.icon-collapse:before { + content: "\f150"; +} +.icon-collapse-top:before { + content: "\f151"; +} +.icon-expand:before { + content: "\f152"; +} +.icon-euro:before, +.icon-eur:before { + content: "\f153"; +} +.icon-gbp:before { + content: "\f154"; +} +.icon-dollar:before, +.icon-usd:before { + content: "\f155"; +} +.icon-rupee:before, +.icon-inr:before { + content: "\f156"; +} +.icon-yen:before, +.icon-jpy:before { + content: "\f157"; +} +.icon-renminbi:before, +.icon-cny:before { + content: "\f158"; +} +.icon-won:before, +.icon-krw:before { + content: "\f159"; +} +.icon-bitcoin:before, +.icon-btc:before { + content: "\f15a"; +} +.icon-file:before { + content: "\f15b"; +} +.icon-file-text:before { + content: "\f15c"; +} +.icon-sort-by-alphabet:before { + content: "\f15d"; +} +.icon-sort-by-alphabet-alt:before { + content: "\f15e"; +} +.icon-sort-by-attributes:before { + content: "\f160"; +} +.icon-sort-by-attributes-alt:before { + content: "\f161"; +} +.icon-sort-by-order:before { + content: "\f162"; +} +.icon-sort-by-order-alt:before { + content: "\f163"; +} +.icon-thumbs-up:before { + content: "\f164"; +} +.icon-thumbs-down:before { + content: "\f165"; +} +.icon-youtube-sign:before { + content: "\f166"; +} +.icon-youtube:before { + content: "\f167"; +} +.icon-xing:before { + content: "\f168"; +} +.icon-xing-sign:before { + content: "\f169"; +} +.icon-youtube-play:before { + content: "\f16a"; +} +.icon-dropbox:before { + content: "\f16b"; +} +.icon-stackexchange:before { + content: "\f16c"; +} +.icon-instagram:before { + content: "\f16d"; +} +.icon-flickr:before { + content: "\f16e"; +} +.icon-adn:before { + content: "\f170"; +} +.icon-bitbucket:before { + content: "\f171"; +} +.icon-bitbucket-sign:before { + content: "\f172"; +} +.icon-tumblr:before { + content: "\f173"; +} +.icon-tumblr-sign:before { + content: "\f174"; +} +.icon-long-arrow-down:before { + content: "\f175"; +} +.icon-long-arrow-up:before { + content: "\f176"; +} +.icon-long-arrow-left:before { + content: "\f177"; +} +.icon-long-arrow-right:before { + content: "\f178"; +} +.icon-apple:before { + content: "\f179"; +} +.icon-windows:before { + content: "\f17a"; +} +.icon-android:before { + content: "\f17b"; +} +.icon-linux:before { + content: "\f17c"; +} +.icon-dribbble:before { + content: "\f17d"; +} +.icon-skype:before { + content: "\f17e"; +} +.icon-foursquare:before { + content: "\f180"; +} +.icon-trello:before { + content: "\f181"; +} +.icon-female:before { + content: "\f182"; +} +.icon-male:before { + content: "\f183"; +} +.icon-gittip:before { + content: "\f184"; +} +.icon-sun:before { + content: "\f185"; +} +.icon-moon:before { + content: "\f186"; +} +.icon-archive:before { + content: "\f187"; +} +.icon-bug:before { + content: "\f188"; +} +.icon-vk:before { + content: "\f189"; +} +.icon-weibo:before { + content: "\f18a"; +} +.icon-renren:before { + content: "\f18b"; +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.min.css b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.min.css new file mode 100644 index 0000000..866437f --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/awesome/font-awesome.min.css @@ -0,0 +1,403 @@ +@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;} +[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;} +.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;} +a [class^="icon-"],a [class*=" icon-"]{display:inline;} +[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;} +.icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;} +.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;} +[class^="icon-"].hide,[class*=" icon-"].hide{display:none;} +.icon-muted{color:#eeeeee;} +.icon-light{color:#ffffff;} +.icon-dark{color:#333333;} +.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;} +.pull-right{float:right;} +.pull-left{float:left;} +[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;} +[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;} +[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;} +.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;} +.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;} +.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;} +.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;} +.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;} +.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;} +.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;} +.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;} +.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;} +.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;} +a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;} +@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);} +.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);} +.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);} +.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);} +.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);} +a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;} +.icon-glass:before{content:"\f000";} +.icon-music:before{content:"\f001";} +.icon-search:before{content:"\f002";} +.icon-envelope-alt:before{content:"\f003";} +.icon-heart:before{content:"\f004";} +.icon-star:before{content:"\f005";} +.icon-star-empty:before{content:"\f006";} +.icon-user:before{content:"\f007";} +.icon-film:before{content:"\f008";} +.icon-th-large:before{content:"\f009";} +.icon-th:before{content:"\f00a";} +.icon-th-list:before{content:"\f00b";} +.icon-ok:before{content:"\f00c";} +.icon-remove:before{content:"\f00d";} +.icon-zoom-in:before{content:"\f00e";} +.icon-zoom-out:before{content:"\f010";} +.icon-power-off:before,.icon-off:before{content:"\f011";} +.icon-signal:before{content:"\f012";} +.icon-gear:before,.icon-cog:before{content:"\f013";} +.icon-trash:before{content:"\f014";} +.icon-home:before{content:"\f015";} +.icon-file-alt:before{content:"\f016";} +.icon-time:before{content:"\f017";} +.icon-road:before{content:"\f018";} +.icon-download-alt:before{content:"\f019";} +.icon-download:before{content:"\f01a";} +.icon-upload:before{content:"\f01b";} +.icon-inbox:before{content:"\f01c";} +.icon-play-circle:before{content:"\f01d";} +.icon-rotate-right:before,.icon-repeat:before{content:"\f01e";} +.icon-refresh:before{content:"\f021";} +.icon-list-alt:before{content:"\f022";} +.icon-lock:before{content:"\f023";} +.icon-flag:before{content:"\f024";} +.icon-headphones:before{content:"\f025";} +.icon-volume-off:before{content:"\f026";} +.icon-volume-down:before{content:"\f027";} +.icon-volume-up:before{content:"\f028";} +.icon-qrcode:before{content:"\f029";} +.icon-barcode:before{content:"\f02a";} +.icon-tag:before{content:"\f02b";} +.icon-tags:before{content:"\f02c";} +.icon-book:before{content:"\f02d";} +.icon-bookmark:before{content:"\f02e";} +.icon-print:before{content:"\f02f";} +.icon-camera:before{content:"\f030";} +.icon-font:before{content:"\f031";} +.icon-bold:before{content:"\f032";} +.icon-italic:before{content:"\f033";} +.icon-text-height:before{content:"\f034";} +.icon-text-width:before{content:"\f035";} +.icon-align-left:before{content:"\f036";} +.icon-align-center:before{content:"\f037";} +.icon-align-right:before{content:"\f038";} +.icon-align-justify:before{content:"\f039";} +.icon-list:before{content:"\f03a";} +.icon-indent-left:before{content:"\f03b";} +.icon-indent-right:before{content:"\f03c";} +.icon-facetime-video:before{content:"\f03d";} +.icon-picture:before{content:"\f03e";} +.icon-pencil:before{content:"\f040";} +.icon-map-marker:before{content:"\f041";} +.icon-adjust:before{content:"\f042";} +.icon-tint:before{content:"\f043";} +.icon-edit:before{content:"\f044";} +.icon-share:before{content:"\f045";} +.icon-check:before{content:"\f046";} +.icon-move:before{content:"\f047";} +.icon-step-backward:before{content:"\f048";} +.icon-fast-backward:before{content:"\f049";} +.icon-backward:before{content:"\f04a";} +.icon-play:before{content:"\f04b";} +.icon-pause:before{content:"\f04c";} +.icon-stop:before{content:"\f04d";} +.icon-forward:before{content:"\f04e";} +.icon-fast-forward:before{content:"\f050";} +.icon-step-forward:before{content:"\f051";} +.icon-eject:before{content:"\f052";} +.icon-chevron-left:before{content:"\f053";} +.icon-chevron-right:before{content:"\f054";} +.icon-plus-sign:before{content:"\f055";} +.icon-minus-sign:before{content:"\f056";} +.icon-remove-sign:before{content:"\f057";} +.icon-ok-sign:before{content:"\f058";} +.icon-question-sign:before{content:"\f059";} +.icon-info-sign:before{content:"\f05a";} +.icon-screenshot:before{content:"\f05b";} +.icon-remove-circle:before{content:"\f05c";} +.icon-ok-circle:before{content:"\f05d";} +.icon-ban-circle:before{content:"\f05e";} +.icon-arrow-left:before{content:"\f060";} +.icon-arrow-right:before{content:"\f061";} +.icon-arrow-up:before{content:"\f062";} +.icon-arrow-down:before{content:"\f063";} +.icon-mail-forward:before,.icon-share-alt:before{content:"\f064";} +.icon-resize-full:before{content:"\f065";} +.icon-resize-small:before{content:"\f066";} +.icon-plus:before{content:"\f067";} +.icon-minus:before{content:"\f068";} +.icon-asterisk:before{content:"\f069";} +.icon-exclamation-sign:before{content:"\f06a";} +.icon-gift:before{content:"\f06b";} +.icon-leaf:before{content:"\f06c";} +.icon-fire:before{content:"\f06d";} +.icon-eye-open:before{content:"\f06e";} +.icon-eye-close:before{content:"\f070";} +.icon-warning-sign:before{content:"\f071";} +.icon-plane:before{content:"\f072";} +.icon-calendar:before{content:"\f073";} +.icon-random:before{content:"\f074";} +.icon-comment:before{content:"\f075";} +.icon-magnet:before{content:"\f076";} +.icon-chevron-up:before{content:"\f077";} +.icon-chevron-down:before{content:"\f078";} +.icon-retweet:before{content:"\f079";} +.icon-shopping-cart:before{content:"\f07a";} +.icon-folder-close:before{content:"\f07b";} +.icon-folder-open:before{content:"\f07c";} +.icon-resize-vertical:before{content:"\f07d";} +.icon-resize-horizontal:before{content:"\f07e";} +.icon-bar-chart:before{content:"\f080";} +.icon-twitter-sign:before{content:"\f081";} +.icon-facebook-sign:before{content:"\f082";} +.icon-camera-retro:before{content:"\f083";} +.icon-key:before{content:"\f084";} +.icon-gears:before,.icon-cogs:before{content:"\f085";} +.icon-comments:before{content:"\f086";} +.icon-thumbs-up-alt:before{content:"\f087";} +.icon-thumbs-down-alt:before{content:"\f088";} +.icon-star-half:before{content:"\f089";} +.icon-heart-empty:before{content:"\f08a";} +.icon-signout:before{content:"\f08b";} +.icon-linkedin-sign:before{content:"\f08c";} +.icon-pushpin:before{content:"\f08d";} +.icon-external-link:before{content:"\f08e";} +.icon-signin:before{content:"\f090";} +.icon-trophy:before{content:"\f091";} +.icon-github-sign:before{content:"\f092";} +.icon-upload-alt:before{content:"\f093";} +.icon-lemon:before{content:"\f094";} +.icon-phone:before{content:"\f095";} +.icon-unchecked:before,.icon-check-empty:before{content:"\f096";} +.icon-bookmark-empty:before{content:"\f097";} +.icon-phone-sign:before{content:"\f098";} +.icon-twitter:before{content:"\f099";} +.icon-facebook:before{content:"\f09a";} +.icon-github:before{content:"\f09b";} +.icon-unlock:before{content:"\f09c";} +.icon-credit-card:before{content:"\f09d";} +.icon-rss:before{content:"\f09e";} +.icon-hdd:before{content:"\f0a0";} +.icon-bullhorn:before{content:"\f0a1";} +.icon-bell:before{content:"\f0a2";} +.icon-certificate:before{content:"\f0a3";} +.icon-hand-right:before{content:"\f0a4";} +.icon-hand-left:before{content:"\f0a5";} +.icon-hand-up:before{content:"\f0a6";} +.icon-hand-down:before{content:"\f0a7";} +.icon-circle-arrow-left:before{content:"\f0a8";} +.icon-circle-arrow-right:before{content:"\f0a9";} +.icon-circle-arrow-up:before{content:"\f0aa";} +.icon-circle-arrow-down:before{content:"\f0ab";} +.icon-globe:before{content:"\f0ac";} +.icon-wrench:before{content:"\f0ad";} +.icon-tasks:before{content:"\f0ae";} +.icon-filter:before{content:"\f0b0";} +.icon-briefcase:before{content:"\f0b1";} +.icon-fullscreen:before{content:"\f0b2";} +.icon-group:before{content:"\f0c0";} +.icon-link:before{content:"\f0c1";} +.icon-cloud:before{content:"\f0c2";} +.icon-beaker:before{content:"\f0c3";} +.icon-cut:before{content:"\f0c4";} +.icon-copy:before{content:"\f0c5";} +.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";} +.icon-save:before{content:"\f0c7";} +.icon-sign-blank:before{content:"\f0c8";} +.icon-reorder:before{content:"\f0c9";} +.icon-list-ul:before{content:"\f0ca";} +.icon-list-ol:before{content:"\f0cb";} +.icon-strikethrough:before{content:"\f0cc";} +.icon-underline:before{content:"\f0cd";} +.icon-table:before{content:"\f0ce";} +.icon-magic:before{content:"\f0d0";} +.icon-truck:before{content:"\f0d1";} +.icon-pinterest:before{content:"\f0d2";} +.icon-pinterest-sign:before{content:"\f0d3";} +.icon-google-plus-sign:before{content:"\f0d4";} +.icon-google-plus:before{content:"\f0d5";} +.icon-money:before{content:"\f0d6";} +.icon-caret-down:before{content:"\f0d7";} +.icon-caret-up:before{content:"\f0d8";} +.icon-caret-left:before{content:"\f0d9";} +.icon-caret-right:before{content:"\f0da";} +.icon-columns:before{content:"\f0db";} +.icon-sort:before{content:"\f0dc";} +.icon-sort-down:before{content:"\f0dd";} +.icon-sort-up:before{content:"\f0de";} +.icon-envelope:before{content:"\f0e0";} +.icon-linkedin:before{content:"\f0e1";} +.icon-rotate-left:before,.icon-undo:before{content:"\f0e2";} +.icon-legal:before{content:"\f0e3";} +.icon-dashboard:before{content:"\f0e4";} +.icon-comment-alt:before{content:"\f0e5";} +.icon-comments-alt:before{content:"\f0e6";} +.icon-bolt:before{content:"\f0e7";} +.icon-sitemap:before{content:"\f0e8";} +.icon-umbrella:before{content:"\f0e9";} +.icon-paste:before{content:"\f0ea";} +.icon-lightbulb:before{content:"\f0eb";} +.icon-exchange:before{content:"\f0ec";} +.icon-cloud-download:before{content:"\f0ed";} +.icon-cloud-upload:before{content:"\f0ee";} +.icon-user-md:before{content:"\f0f0";} +.icon-stethoscope:before{content:"\f0f1";} +.icon-suitcase:before{content:"\f0f2";} +.icon-bell-alt:before{content:"\f0f3";} +.icon-coffee:before{content:"\f0f4";} +.icon-food:before{content:"\f0f5";} +.icon-file-text-alt:before{content:"\f0f6";} +.icon-building:before{content:"\f0f7";} +.icon-hospital:before{content:"\f0f8";} +.icon-ambulance:before{content:"\f0f9";} +.icon-medkit:before{content:"\f0fa";} +.icon-fighter-jet:before{content:"\f0fb";} +.icon-beer:before{content:"\f0fc";} +.icon-h-sign:before{content:"\f0fd";} +.icon-plus-sign-alt:before{content:"\f0fe";} +.icon-double-angle-left:before{content:"\f100";} +.icon-double-angle-right:before{content:"\f101";} +.icon-double-angle-up:before{content:"\f102";} +.icon-double-angle-down:before{content:"\f103";} +.icon-angle-left:before{content:"\f104";} +.icon-angle-right:before{content:"\f105";} +.icon-angle-up:before{content:"\f106";} +.icon-angle-down:before{content:"\f107";} +.icon-desktop:before{content:"\f108";} +.icon-laptop:before{content:"\f109";} +.icon-tablet:before{content:"\f10a";} +.icon-mobile-phone:before{content:"\f10b";} +.icon-circle-blank:before{content:"\f10c";} +.icon-quote-left:before{content:"\f10d";} +.icon-quote-right:before{content:"\f10e";} +.icon-spinner:before{content:"\f110";} +.icon-circle:before{content:"\f111";} +.icon-mail-reply:before,.icon-reply:before{content:"\f112";} +.icon-github-alt:before{content:"\f113";} +.icon-folder-close-alt:before{content:"\f114";} +.icon-folder-open-alt:before{content:"\f115";} +.icon-expand-alt:before{content:"\f116";} +.icon-collapse-alt:before{content:"\f117";} +.icon-smile:before{content:"\f118";} +.icon-frown:before{content:"\f119";} +.icon-meh:before{content:"\f11a";} +.icon-gamepad:before{content:"\f11b";} +.icon-keyboard:before{content:"\f11c";} +.icon-flag-alt:before{content:"\f11d";} +.icon-flag-checkered:before{content:"\f11e";} +.icon-terminal:before{content:"\f120";} +.icon-code:before{content:"\f121";} +.icon-reply-all:before{content:"\f122";} +.icon-mail-reply-all:before{content:"\f122";} +.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";} +.icon-location-arrow:before{content:"\f124";} +.icon-crop:before{content:"\f125";} +.icon-code-fork:before{content:"\f126";} +.icon-unlink:before{content:"\f127";} +.icon-question:before{content:"\f128";} +.icon-info:before{content:"\f129";} +.icon-exclamation:before{content:"\f12a";} +.icon-superscript:before{content:"\f12b";} +.icon-subscript:before{content:"\f12c";} +.icon-eraser:before{content:"\f12d";} +.icon-puzzle-piece:before{content:"\f12e";} +.icon-microphone:before{content:"\f130";} +.icon-microphone-off:before{content:"\f131";} +.icon-shield:before{content:"\f132";} +.icon-calendar-empty:before{content:"\f133";} +.icon-fire-extinguisher:before{content:"\f134";} +.icon-rocket:before{content:"\f135";} +.icon-maxcdn:before{content:"\f136";} +.icon-chevron-sign-left:before{content:"\f137";} +.icon-chevron-sign-right:before{content:"\f138";} +.icon-chevron-sign-up:before{content:"\f139";} +.icon-chevron-sign-down:before{content:"\f13a";} +.icon-html5:before{content:"\f13b";} +.icon-css3:before{content:"\f13c";} +.icon-anchor:before{content:"\f13d";} +.icon-unlock-alt:before{content:"\f13e";} +.icon-bullseye:before{content:"\f140";} +.icon-ellipsis-horizontal:before{content:"\f141";} +.icon-ellipsis-vertical:before{content:"\f142";} +.icon-rss-sign:before{content:"\f143";} +.icon-play-sign:before{content:"\f144";} +.icon-ticket:before{content:"\f145";} +.icon-minus-sign-alt:before{content:"\f146";} +.icon-check-minus:before{content:"\f147";} +.icon-level-up:before{content:"\f148";} +.icon-level-down:before{content:"\f149";} +.icon-check-sign:before{content:"\f14a";} +.icon-edit-sign:before{content:"\f14b";} +.icon-external-link-sign:before{content:"\f14c";} +.icon-share-sign:before{content:"\f14d";} +.icon-compass:before{content:"\f14e";} +.icon-collapse:before{content:"\f150";} +.icon-collapse-top:before{content:"\f151";} +.icon-expand:before{content:"\f152";} +.icon-euro:before,.icon-eur:before{content:"\f153";} +.icon-gbp:before{content:"\f154";} +.icon-dollar:before,.icon-usd:before{content:"\f155";} +.icon-rupee:before,.icon-inr:before{content:"\f156";} +.icon-yen:before,.icon-jpy:before{content:"\f157";} +.icon-renminbi:before,.icon-cny:before{content:"\f158";} +.icon-won:before,.icon-krw:before{content:"\f159";} +.icon-bitcoin:before,.icon-btc:before{content:"\f15a";} +.icon-file:before{content:"\f15b";} +.icon-file-text:before{content:"\f15c";} +.icon-sort-by-alphabet:before{content:"\f15d";} +.icon-sort-by-alphabet-alt:before{content:"\f15e";} +.icon-sort-by-attributes:before{content:"\f160";} +.icon-sort-by-attributes-alt:before{content:"\f161";} +.icon-sort-by-order:before{content:"\f162";} +.icon-sort-by-order-alt:before{content:"\f163";} +.icon-thumbs-up:before{content:"\f164";} +.icon-thumbs-down:before{content:"\f165";} +.icon-youtube-sign:before{content:"\f166";} +.icon-youtube:before{content:"\f167";} +.icon-xing:before{content:"\f168";} +.icon-xing-sign:before{content:"\f169";} +.icon-youtube-play:before{content:"\f16a";} +.icon-dropbox:before{content:"\f16b";} +.icon-stackexchange:before{content:"\f16c";} +.icon-instagram:before{content:"\f16d";} +.icon-flickr:before{content:"\f16e";} +.icon-adn:before{content:"\f170";} +.icon-bitbucket:before{content:"\f171";} +.icon-bitbucket-sign:before{content:"\f172";} +.icon-tumblr:before{content:"\f173";} +.icon-tumblr-sign:before{content:"\f174";} +.icon-long-arrow-down:before{content:"\f175";} +.icon-long-arrow-up:before{content:"\f176";} +.icon-long-arrow-left:before{content:"\f177";} +.icon-long-arrow-right:before{content:"\f178";} +.icon-apple:before{content:"\f179";} +.icon-windows:before{content:"\f17a";} +.icon-android:before{content:"\f17b";} +.icon-linux:before{content:"\f17c";} +.icon-dribbble:before{content:"\f17d";} +.icon-skype:before{content:"\f17e";} +.icon-foursquare:before{content:"\f180";} +.icon-trello:before{content:"\f181";} +.icon-female:before{content:"\f182";} +.icon-male:before{content:"\f183";} +.icon-gittip:before{content:"\f184";} +.icon-sun:before{content:"\f185";} +.icon-moon:before{content:"\f186";} +.icon-archive:before{content:"\f187";} +.icon-bug:before{content:"\f188";} +.icon-vk:before{content:"\f189";} +.icon-weibo:before{content:"\f18a";} +.icon-renren:before{content:"\f18b";} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.css new file mode 100644 index 0000000..fa47a5c --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.css @@ -0,0 +1,6475 @@ +/*!@import url(//fonts.googleapis.com/css?family=Telex); + +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family:"Microsoft Yahei","΢ź",Helvetica, Arial, sans-serif, ""; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; + +} + +a { + color: #2fa4e7; + text-decoration: none; +} + +a:hover, +a:focus { + color: #157ab5; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #dd5600; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #aa4200; +} + +.text-error { + color: #bd4247; +} + +a.text-error:hover, +a.text-error:focus { + color: #983538; +} + +.text-info { + color: #178acc; +} + +a.text-info:hover, +a.text-info:focus { + color: #126b9e; +} + +.text-success { + color: #669533; +} + +a.text-success:hover, +a.text-success:focus { + color: #4c6f26; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: 'Telex', sans-serif; + font-weight: bold; + line-height: 20px; + color: #317eac; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 20px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 28.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #f5f5f5; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #f5f5f5; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #f5f5f5; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #f5f5f5; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #f5f5f5; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #dd5600; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #dd5600; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #dd5600; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #aa4200; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff8d44; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff8d44; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff8d44; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #dd5600; + background-color: #f1ceab; + border-color: #dd5600; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #bd4247; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #bd4247; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #bd4247; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #983538; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d88e90; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d88e90; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d88e90; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #bd4247; + background-color: #f2bdb1; + border-color: #bd4247; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #669533; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #669533; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #669533; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #4c6f26; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #99ca63; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #99ca63; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #99ca63; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #669533; + background-color: #d5ecbf; + border-color: #669533; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #178acc; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #178acc; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #178acc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #126b9e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #5db8ec; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #5db8ec; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #5db8ec; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #178acc; + background-color: #a7dff1; + border-color: #178acc; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #7b7b7b; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #bede9c; + border-color: #73a839; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #d5ecbf; +} + +.table tbody tr.error > td { + background-color: #f2bdb1; +} + +.table tbody tr.warning > td { + background-color: #f1ceab; +} + +.table tbody tr.info > td { + background-color: #a7dff1; +} + +.table-hover tbody tr.success:hover > td { + background-color: #c8e6ab; +} + +.table-hover tbody tr.error:hover > td { + background-color: #eeab9b; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #edc195; +} + +.table-hover tbody tr.info:hover > td { + background-color: #91d7ee; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 140px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #27a0e5; + background-image: -moz-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2fa4e7), to(#1a99e2)); + background-image: -webkit-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: -o-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: linear-gradient(to bottom, #2fa4e7, #1a99e2); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7', endColorstr='#ff1a99e2', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #27a0e5; + background-image: -moz-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2fa4e7), to(#1a99e2)); + background-image: -webkit-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: -o-linear-gradient(top, #2fa4e7, #1a99e2); + background-image: linear-gradient(to bottom, #2fa4e7, #1a99e2); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7', endColorstr='#ff1a99e2', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #2f92e7; + *background-color: #2f76e7; + background-image: -moz-linear-gradient(top, #2fa4e7, #2f76e7); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2fa4e7), to(#2f76e7)); + background-image: -webkit-linear-gradient(top, #2fa4e7, #2f76e7); + background-image: -o-linear-gradient(top, #2fa4e7, #2f76e7); + background-image: linear-gradient(to bottom, #2fa4e7, #2f76e7); + background-repeat: repeat-x; + border-color: #2f76e7 #2f76e7 #1553b5; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7', endColorstr='#ff2f76e7', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #2f76e7; + *background-color: #1a67e2; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #175dcc \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #dd5600; + *background-color: #dd5600; + background-image: -moz-linear-gradient(top, #dd5600, #dd5600); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd5600), to(#dd5600)); + background-image: -webkit-linear-gradient(top, #dd5600, #dd5600); + background-image: -o-linear-gradient(top, #dd5600, #dd5600); + background-image: linear-gradient(to bottom, #dd5600, #dd5600); + background-repeat: repeat-x; + border-color: #dd5600 #dd5600 #913800; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd5600', endColorstr='#ffdd5600', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #dd5600; + *background-color: #c44c00; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #aa4200 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #c32627; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #c71c22, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#c71c22), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #c71c22, #bd362f); + background-image: -o-linear-gradient(top, #c71c22, #bd362f); + background-image: linear-gradient(to bottom, #c71c22, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc71c22', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #65a643; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #73a839, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#73a839), to(#51a351)); + background-image: -webkit-linear-gradient(top, #73a839, #51a351); + background-image: -o-linear-gradient(top, #73a839, #51a351); + background-image: linear-gradient(to bottom, #73a839, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff73a839', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #6d76b3; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #9760b3, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#9760b3), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #9760b3, #2f96b4); + background-image: -o-linear-gradient(top, #9760b3, #2f96b4); + background-image: linear-gradient(to bottom, #9760b3, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff9760b3', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0f3253; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #033c73, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#033c73), to(#222222)); + background-image: -webkit-linear-gradient(top, #033c73, #222222); + background-image: -o-linear-gradient(top, #033c73, #222222); + background-image: linear-gradient(to bottom, #033c73, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff033c73', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #2fa4e7; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #157ab5; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #2f76e7; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #dd5600; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #f1ceab; + border: 1px solid #efb99e; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #dd5600; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #669533; + background-color: #d5ecbf; + border-color: #d2e6ab; +} + +.alert-success h4 { + color: #669533; +} + +.alert-danger, +.alert-error { + color: #bd4247; + background-color: #f2bdb1; + border-color: #f0a5a4; +} + +.alert-danger h4, +.alert-error h4 { + color: #bd4247; +} + +.alert-info { + color: #178acc; + background-color: #a7dff1; + border-color: #88e4ec; +} + +.alert-info h4 { + color: #178acc; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #2fa4e7; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #f5f5f5 #f5f5f5 #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #2fa4e7; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #2fa4e7; + border-bottom-color: #2fa4e7; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #157ab5; + border-bottom-color: #157ab5; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #f5f5f5 #dddddd #f5f5f5 #f5f5f5; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #f5f5f5 #f5f5f5 #f5f5f5 #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 50px; + padding-right: 20px; + padding-left: 20px; + background-image: url(../../../images/topbg.gif); + background-repeat: repeat-x; + border: 1px solid #1990d5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + /* filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff2fa4e7', GradientType=0); */ + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + } + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 15px 20px 15px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #ffffff; + text-shadow: 0 1px 0 #54b4eb; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 50px; + color: #f5f5f5; +} + +.navbar-link { + color: #ffffff; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #ffffff; +} + +.navbar .divider-vertical { + height: 50px; + margin: 0 9px; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(255, 255, 255, 0.1); +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 10px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 10px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 10px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + + +.navbar .nav { + display: block; + float: left; + left: 0; + margin: 0 1px 0 0; + padding: 2px 20px 2px; + position: relative; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + + +.navbar .nav > li > a { + color: #ffffff; + float: none; + padding: 5px 5px 14px; + text-decoration: none; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2); +} + + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #ffffff; + text-decoration: none; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #2fa4e7; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #2fa3e6; + *background-color: #1a99e2; + background-image: -moz-linear-gradient(top, #3daae9, #1a99e2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3daae9), to(#1a99e2)); + background-image: -webkit-linear-gradient(top, #3daae9, #1a99e2); + background-image: -o-linear-gradient(top, #3daae9, #1a99e2); + background-image: linear-gradient(to bottom, #3daae9, #1a99e2); + background-repeat: repeat-x; + border-color: #1a99e2 #1a99e2 #126b9e; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3daae9', endColorstr='#ff1a99e2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #1a99e2; + *background-color: #178acc; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #157ab5 \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #034482; + background-image: -moz-linear-gradient(top, #04498c, #033c73); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#04498c), to(#033c73)); + background-image: -webkit-linear-gradient(top, #04498c, #033c73); + background-image: -o-linear-gradient(top, #04498c, #033c73); + background-image: linear-gradient(to bottom, #04498c, #033c73); + background-repeat: repeat-x; + border-color: #033464; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04498c', endColorstr='#ff033c73', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #ffffff; +} + +.navbar-inverse .navbar-text { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: #022c55; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #022c55; +} + +.navbar-inverse .navbar-link { + color: #ffffff; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #04498c; + border-left-color: #033c73; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #022c55; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #ffffff; + border-color: #033c73; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #999999; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #999999; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #999999; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #033769; + *background-color: #022f5a; + background-image: -moz-linear-gradient(top, #033c73, #022f5a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#033c73), to(#022f5a)); + background-image: -webkit-linear-gradient(top, #033c73, #022f5a); + background-image: -o-linear-gradient(top, #033c73, #022f5a); + background-image: linear-gradient(to bottom, #033c73, #022f5a); + background-repeat: repeat-x; + border-color: #022f5a #022f5a #000810; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff033c73', endColorstr='#ff022f5a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #022f5a; + *background-color: #022241; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #011528 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1020; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #2fa4e7; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #bd4247; +} + +.label-important[href], +.badge-important[href] { + background-color: #983538; +} + +.label-warning, +.badge-warning { + background-color: #dd5600; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #aa4200; +} + +.label-success, +.badge-success { + background-color: #669533; +} + +.label-success[href], +.badge-success[href] { + background-color: #4c6f26; +} + +.label-info, +.badge-info { + background-color: #178acc; +} + +.label-info[href], +.badge-info[href] { + background-color: #126b9e; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #f16e1a; + background-image: -moz-linear-gradient(top, #ff7d2b, #dd5600); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff7d2b), to(#dd5600)); + background-image: -webkit-linear-gradient(top, #ff7d2b, #dd5600); + background-image: -o-linear-gradient(top, #ff7d2b, #dd5600); + background-image: linear-gradient(to bottom, #ff7d2b, #dd5600); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff7d2b', endColorstr='#ffdd5600', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #ff7d2b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #f5f5f5; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.navbar .brand { + padding: 14px 20px 16px; + font-family: 'Telex', sans-serif; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2); +} + +.navbar li { + line-height: 20px; +} + + + +.navbar .search-query { + line-height: normal; + border: 1px solid #178acc; +} + +.navbar .navbar-text { + padding: 19px 10px 18px; + line-height: 13px; + color: rgba(0, 0, 0, 0.5); + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); +} + +.navbar-inverse .navbar-search .search-query { + color: #555555; +} + +@media (max-width: 979px) { + .navbar .nav-collapse .nav li > a { + font-family: 'Telex', sans-serif; + font-weight: normal; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2); + } + .navbar .nav-collapse .nav li > a:hover { + background-color: #2B7CAC; + } + .navbar .nav-collapse .nav .active > a { + background-color: #2B7CAC; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .navbar .nav-collapse .dropdown-menu li > a:hover, + .navbar .nav-collapse .dropdown-menu li > a:focus, + .navbar .nav-collapse .dropdown-submenu:hover > a { + background-image: none; + } + .navbar .nav-collapse .navbar-form, + .navbar .nav-collapse .navbar-search { + border: none; + } + .navbar .nav-collapse .nav-header { + color: #2B7CAC; + } + .navbar-inverse .nav-collapse .nav li > a { + color: #ffffff; + } + .navbar-inverse .nav-collapse .nav li > a:hover { + background-color: rgba(0, 0, 0, 0.1); + } + .navbar-inverse .nav-collapse .nav .active > a, + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: rgba(0, 0, 0, 0.1) !important; + } +} + +div.subnav { + font-family: 'Telex', sans-serif; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.2); +} + +div.subnav-fixed { + top: 51px; +} + +.btn { + background-color: #ffffff; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(5%, #ffffff), to(#ffffff)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 5%, #ffffff); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 5%, #ffffff); + background-image: -o-linear-gradient(#ffffff, #ffffff 5%, #ffffff); + background-image: linear-gradient(#ffffff, #ffffff 5%, #ffffff); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffffffff', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover { + background-position: 0 0; +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #3daae9; + *background-color: #2fa4e7; + background-image: -moz-linear-gradient(top, #46aeea, #2fa4e7); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#46aeea), to(#2fa4e7)); + background-image: -webkit-linear-gradient(top, #46aeea, #2fa4e7); + background-image: -o-linear-gradient(top, #46aeea, #2fa4e7); + background-image: linear-gradient(to bottom, #46aeea, #2fa4e7); + background-repeat: repeat-x; + border-color: #2fa4e7 #2fa4e7 #157ab5; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46aeea', endColorstr='#ff2fa4e7', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #2fa4e7; + *background-color: #1a99e2; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #178acc \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #9e6ab8; + *background-color: #9760b3; + background-image: -moz-linear-gradient(top, #a271bb, #9760b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#a271bb), to(#9760b3)); + background-image: -webkit-linear-gradient(top, #a271bb, #9760b3); + background-image: -o-linear-gradient(top, #a271bb, #9760b3); + background-image: linear-gradient(to bottom, #a271bb, #9760b3); + background-repeat: repeat-x; + border-color: #9760b3 #9760b3 #6f4086; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa271bb', endColorstr='#ff9760b3', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #9760b3; + *background-color: #8b51a9; +} + +.btn-info:active, +.btn-info.active { + background-color: #7d4898 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #7bb33d; + *background-color: #73a839; + background-image: -moz-linear-gradient(top, #80bb3f, #73a839); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#80bb3f), to(#73a839)); + background-image: -webkit-linear-gradient(top, #80bb3f, #73a839); + background-image: -o-linear-gradient(top, #80bb3f, #73a839); + background-image: linear-gradient(to bottom, #80bb3f, #73a839); + background-repeat: repeat-x; + border-color: #73a839 #73a839 #4c6f26; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff80bb3f', endColorstr='#ff73a839', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #73a839; + *background-color: #669533; +} + +.btn-success:active, +.btn-success.active { + background-color: #59822c \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ec5c00; + *background-color: #dd5600; + background-image: -moz-linear-gradient(top, #f76000, #dd5600); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f76000), to(#dd5600)); + background-image: -webkit-linear-gradient(top, #f76000, #dd5600); + background-image: -o-linear-gradient(top, #f76000, #dd5600); + background-image: linear-gradient(to bottom, #f76000, #dd5600); + background-repeat: repeat-x; + border-color: #dd5600 #dd5600 #913800; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff76000', endColorstr='#ffdd5600', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #dd5600; + *background-color: #c44c00; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #aa4200 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #d41e24; + *background-color: #c71c22; + background-image: -moz-linear-gradient(top, #dd1f26, #c71c22); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd1f26), to(#c71c22)); + background-image: -webkit-linear-gradient(top, #dd1f26, #c71c22); + background-image: -o-linear-gradient(top, #dd1f26, #c71c22); + background-image: linear-gradient(to bottom, #dd1f26, #c71c22); + background-repeat: repeat-x; + border-color: #c71c22 #c71c22 #841317; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd1f26', endColorstr='#ffc71c22', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #c71c22; + *background-color: #b1191e; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #9a161a \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #034482; + *background-color: #033c73; + background-image: -moz-linear-gradient(top, #04498c, #033c73); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#04498c), to(#033c73)); + background-image: -webkit-linear-gradient(top, #04498c, #033c73); + background-image: -o-linear-gradient(top, #04498c, #033c73); + background-image: linear-gradient(to bottom, #04498c, #033c73); + background-repeat: repeat-x; + border-color: #033c73 #033c73 #011528; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04498c', endColorstr='#ff033c73', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #033c73; + *background-color: #022f5a; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #022241 \9; +} + +i[class^="icon-"] { + opacity: 0.8; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.min.css new file mode 100644 index 0000000..0c44957 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/bootstrap.min.css @@ -0,0 +1,9 @@ +/*!@import url(//fonts.googleapis.com/css?family=Telex);/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#555;background-color:#fff}a{color:#2fa4e7;text-decoration:none}a:hover,a:focus{color:#157ab5;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#dd5600}a.text-warning:hover,a.text-warning:focus{color:#aa4200}.text-error{color:#bd4247}a.text-error:hover,a.text-error:focus{color:#983538}.text-info{color:#178acc}a.text-info:hover,a.text-info:focus{color:#126b9e}.text-success{color:#669533}a.text-success:hover,a.text-success:focus{color:#4c6f26}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:'Telex',sans-serif;font-weight:bold;line-height:20px;color:#317eac;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #f5f5f5}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #f5f5f5;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #f5f5f5}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #f5f5f5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#f5f5f5}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#dd5600}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#dd5600}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#dd5600;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#aa4200;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff8d44;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff8d44;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff8d44}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#dd5600;background-color:#f1ceab;border-color:#dd5600}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#bd4247}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#bd4247}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#bd4247;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#983538;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d88e90;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d88e90;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d88e90}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#bd4247;background-color:#f2bdb1;border-color:#bd4247}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#669533}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#669533}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#669533;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#4c6f26;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #99ca63;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #99ca63;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #99ca63}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#669533;background-color:#d5ecbf;border-color:#669533}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#178acc}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#178acc}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#178acc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#126b9e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #5db8ec;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #5db8ec;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #5db8ec}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#178acc;background-color:#a7dff1;border-color:#178acc}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#7b7b7b}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#bede9c;border-color:#73a839}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#d5ecbf}.table tbody tr.error>td{background-color:#f2bdb1}.table tbody tr.warning>td{background-color:#f1ceab}.table tbody tr.info>td{background-color:#a7dff1}.table-hover tbody tr.success:hover>td{background-color:#c8e6ab}.table-hover tbody tr.error:hover>td{background-color:#eeab9b}.table-hover tbody tr.warning:hover>td{background-color:#edc195}.table-hover tbody tr.info:hover>td{background-color:#91d7ee}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#27a0e5;background-image:-moz-linear-gradient(top,#2fa4e7,#1a99e2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2fa4e7),to(#1a99e2));background-image:-webkit-linear-gradient(top,#2fa4e7,#1a99e2);background-image:-o-linear-gradient(top,#2fa4e7,#1a99e2);background-image:linear-gradient(to bottom,#2fa4e7,#1a99e2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7',endColorstr='#ff1a99e2',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#27a0e5;background-image:-moz-linear-gradient(top,#2fa4e7,#1a99e2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2fa4e7),to(#1a99e2));background-image:-webkit-linear-gradient(top,#2fa4e7,#1a99e2);background-image:-o-linear-gradient(top,#2fa4e7,#1a99e2);background-image:linear-gradient(to bottom,#2fa4e7,#1a99e2);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7',endColorstr='#ff1a99e2',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#2f92e7;*background-color:#2f76e7;background-image:-moz-linear-gradient(top,#2fa4e7,#2f76e7);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2fa4e7),to(#2f76e7));background-image:-webkit-linear-gradient(top,#2fa4e7,#2f76e7);background-image:-o-linear-gradient(top,#2fa4e7,#2f76e7);background-image:linear-gradient(to bottom,#2fa4e7,#2f76e7);background-repeat:repeat-x;border-color:#2f76e7 #2f76e7 #1553b5;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2fa4e7',endColorstr='#ff2f76e7',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#2f76e7;*background-color:#1a67e2}.btn-primary:active,.btn-primary.active{background-color:#175dcc \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#dd5600;*background-color:#dd5600;background-image:-moz-linear-gradient(top,#dd5600,#dd5600);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd5600),to(#dd5600));background-image:-webkit-linear-gradient(top,#dd5600,#dd5600);background-image:-o-linear-gradient(top,#dd5600,#dd5600);background-image:linear-gradient(to bottom,#dd5600,#dd5600);background-repeat:repeat-x;border-color:#dd5600 #dd5600 #913800;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd5600',endColorstr='#ffdd5600',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#dd5600;*background-color:#c44c00}.btn-warning:active,.btn-warning.active{background-color:#aa4200 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#c32627;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#c71c22,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#c71c22),to(#bd362f));background-image:-webkit-linear-gradient(top,#c71c22,#bd362f);background-image:-o-linear-gradient(top,#c71c22,#bd362f);background-image:linear-gradient(to bottom,#c71c22,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc71c22',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#65a643;*background-color:#51a351;background-image:-moz-linear-gradient(top,#73a839,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#73a839),to(#51a351));background-image:-webkit-linear-gradient(top,#73a839,#51a351);background-image:-o-linear-gradient(top,#73a839,#51a351);background-image:linear-gradient(to bottom,#73a839,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff73a839',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#6d76b3;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#9760b3,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#9760b3),to(#2f96b4));background-image:-webkit-linear-gradient(top,#9760b3,#2f96b4);background-image:-o-linear-gradient(top,#9760b3,#2f96b4);background-image:linear-gradient(to bottom,#9760b3,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff9760b3',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0f3253;*background-color:#222;background-image:-moz-linear-gradient(top,#033c73,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#033c73),to(#222));background-image:-webkit-linear-gradient(top,#033c73,#222);background-image:-o-linear-gradient(top,#033c73,#222);background-image:linear-gradient(to bottom,#033c73,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff033c73',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#2fa4e7;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#157ab5;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#2f76e7}.btn-group.open .btn-warning.dropdown-toggle{background-color:#dd5600}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#f1ceab;border:1px solid #efb99e;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#dd5600}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#669533;background-color:#d5ecbf;border-color:#d2e6ab}.alert-success h4{color:#669533}.alert-danger,.alert-error{color:#bd4247;background-color:#f2bdb1;border-color:#f0a5a4}.alert-danger h4,.alert-error h4{color:#bd4247}.alert-info{color:#178acc;background-color:#a7dff1;border-color:#88e4ec}.alert-info h4{color:#178acc}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f5f5f5}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#2fa4e7}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#f5f5f5 #f5f5f5 #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#2fa4e7}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#2fa4e7;border-bottom-color:#2fa4e7}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#157ab5;border-bottom-color:#157ab5}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#f5f5f5 #ddd #f5f5f5 #f5f5f5}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#f5f5f5 #f5f5f5 #f5f5f5 #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:50px;padding-right:20px;padding-left:20px;background-color:#45aeea;background-image:-moz-linear-gradient(top,#54b4eb,#2fa4e7);background-image:-webkit-gradient(linear,0 0,0 100%,from(#54b4eb),to(#2fa4e7));background-image:-webkit-linear-gradient(top,#54b4eb,#2fa4e7);background-image:-o-linear-gradient(top,#54b4eb,#2fa4e7);background-image:linear-gradient(to bottom,#54b4eb,#2fa4e7);background-repeat:repeat-x;border:1px solid #1990d5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb',endColorstr='#ff2fa4e7',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:15px 20px 15px;margin-left:-20px;font-size:20px;font-weight:200;color:#fff;text-shadow:0 1px 0 #54b4eb}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:50px;color:#f5f5f5}.navbar-link{color:#fff}.navbar-link:hover,.navbar-link:focus{color:#fff}.navbar .divider-vertical{height:50px;margin:0 9px;border-right:1px solid #54b4eb;border-left:1px solid #2fa4e7}.navbar .btn,.navbar .btn-group{margin-top:10px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:10px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:10px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:15px 15px 15px;color:#fff;text-decoration:none;text-shadow:0 1px 0 #54b4eb}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:#1684c2}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#fff;text-decoration:none;background-color:#1684c2;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#2fa3e6;*background-color:#1a99e2;background-image:-moz-linear-gradient(top,#3daae9,#1a99e2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#3daae9),to(#1a99e2));background-image:-webkit-linear-gradient(top,#3daae9,#1a99e2);background-image:-o-linear-gradient(top,#3daae9,#1a99e2);background-image:linear-gradient(to bottom,#3daae9,#1a99e2);background-repeat:repeat-x;border-color:#1a99e2 #1a99e2 #126b9e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3daae9',endColorstr='#ff1a99e2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#1a99e2;*background-color:#178acc}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#157ab5 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#1684c2}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#034482;background-image:-moz-linear-gradient(top,#04498c,#033c73);background-image:-webkit-gradient(linear,0 0,0 100%,from(#04498c),to(#033c73));background-image:-webkit-linear-gradient(top,#04498c,#033c73);background-image:-o-linear-gradient(top,#04498c,#033c73);background-image:linear-gradient(to bottom,#04498c,#033c73);background-repeat:repeat-x;border-color:#033464;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04498c',endColorstr='#ff033c73',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#fff}.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:#022c55}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#022c55}.navbar-inverse .navbar-link{color:#fff}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#04498c;border-left-color:#033c73}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#022c55}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#fff;border-color:#033c73;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#999}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#999}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#999}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#033769;*background-color:#022f5a;background-image:-moz-linear-gradient(top,#033c73,#022f5a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#033c73),to(#022f5a));background-image:-webkit-linear-gradient(top,#033c73,#022f5a);background-image:-o-linear-gradient(top,#033c73,#022f5a);background-image:linear-gradient(to bottom,#033c73,#022f5a);background-repeat:repeat-x;border-color:#022f5a #022f5a #000810;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff033c73',endColorstr='#ff022f5a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#022f5a;*background-color:#022241}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#011528 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1020;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#2fa4e7;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#bd4247}.label-important[href],.badge-important[href]{background-color:#983538}.label-warning,.badge-warning{background-color:#dd5600}.label-warning[href],.badge-warning[href]{background-color:#aa4200}.label-success,.badge-success{background-color:#669533}.label-success[href],.badge-success[href]{background-color:#4c6f26}.label-info,.badge-info{background-color:#178acc}.label-info[href],.badge-info[href]{background-color:#126b9e}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#f16e1a;background-image:-moz-linear-gradient(top,#ff7d2b,#dd5600);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ff7d2b),to(#dd5600));background-image:-webkit-linear-gradient(top,#ff7d2b,#dd5600);background-image:-o-linear-gradient(top,#ff7d2b,#dd5600);background-image:linear-gradient(to bottom,#ff7d2b,#dd5600);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff7d2b',endColorstr='#ffdd5600',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#ff7d2b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}.navbar .brand{padding:14px 20px 16px;font-family:'Telex',sans-serif;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.navbar li{line-height:20px}.navbar .nav>li>a{padding:16px 10px 14px;font-family:'Telex',sans-serif;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.navbar .search-query{line-height:normal;border:1px solid #178acc}.navbar .navbar-text{padding:19px 10px 18px;line-height:13px;color:rgba(0,0,0,0.5);text-shadow:1px 1px 0 rgba(255,255,255,0.3)}.navbar-inverse .navbar-search .search-query{color:#555}@media(max-width:979px){.navbar .nav-collapse .nav li>a{font-family:'Telex',sans-serif;font-weight:normal;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.navbar .nav-collapse .nav li>a:hover{background-color:#2b7cac}.navbar .nav-collapse .nav .active>a{background-color:#2b7cac;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.navbar .nav-collapse .dropdown-menu li>a:hover,.navbar .nav-collapse .dropdown-menu li>a:focus,.navbar .nav-collapse .dropdown-submenu:hover>a{background-image:none}.navbar .nav-collapse .navbar-form,.navbar .nav-collapse .navbar-search{border:0}.navbar .nav-collapse .nav-header{color:#2b7cac}.navbar-inverse .nav-collapse .nav li>a{color:#fff}.navbar-inverse .nav-collapse .nav li>a:hover{background-color:rgba(0,0,0,0.1)}.navbar-inverse .nav-collapse .nav .active>a,.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:rgba(0,0,0,0.1)!important}}div.subnav{font-family:'Telex',sans-serif;text-shadow:1px 1px 0 rgba(255,255,255,0.2)}div.subnav-fixed{top:51px}.btn{background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(5%,#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff 5%,#fff);background-image:-moz-linear-gradient(top,#fff,#fff 5%,#fff);background-image:-o-linear-gradient(#fff,#fff 5%,#fff);background-image:linear-gradient(#fff,#fff 5%,#fff);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffffffff',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover{background-position:0 0}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3daae9;*background-color:#2fa4e7;background-image:-moz-linear-gradient(top,#46aeea,#2fa4e7);background-image:-webkit-gradient(linear,0 0,0 100%,from(#46aeea),to(#2fa4e7));background-image:-webkit-linear-gradient(top,#46aeea,#2fa4e7);background-image:-o-linear-gradient(top,#46aeea,#2fa4e7);background-image:linear-gradient(to bottom,#46aeea,#2fa4e7);background-repeat:repeat-x;border-color:#2fa4e7 #2fa4e7 #157ab5;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46aeea',endColorstr='#ff2fa4e7',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#2fa4e7;*background-color:#1a99e2}.btn-primary:active,.btn-primary.active{background-color:#178acc \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#9e6ab8;*background-color:#9760b3;background-image:-moz-linear-gradient(top,#a271bb,#9760b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a271bb),to(#9760b3));background-image:-webkit-linear-gradient(top,#a271bb,#9760b3);background-image:-o-linear-gradient(top,#a271bb,#9760b3);background-image:linear-gradient(to bottom,#a271bb,#9760b3);background-repeat:repeat-x;border-color:#9760b3 #9760b3 #6f4086;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa271bb',endColorstr='#ff9760b3',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#9760b3;*background-color:#8b51a9}.btn-info:active,.btn-info.active{background-color:#7d4898 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#7bb33d;*background-color:#73a839;background-image:-moz-linear-gradient(top,#80bb3f,#73a839);background-image:-webkit-gradient(linear,0 0,0 100%,from(#80bb3f),to(#73a839));background-image:-webkit-linear-gradient(top,#80bb3f,#73a839);background-image:-o-linear-gradient(top,#80bb3f,#73a839);background-image:linear-gradient(to bottom,#80bb3f,#73a839);background-repeat:repeat-x;border-color:#73a839 #73a839 #4c6f26;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff80bb3f',endColorstr='#ff73a839',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#73a839;*background-color:#669533}.btn-success:active,.btn-success.active{background-color:#59822c \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ec5c00;*background-color:#dd5600;background-image:-moz-linear-gradient(top,#f76000,#dd5600);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f76000),to(#dd5600));background-image:-webkit-linear-gradient(top,#f76000,#dd5600);background-image:-o-linear-gradient(top,#f76000,#dd5600);background-image:linear-gradient(to bottom,#f76000,#dd5600);background-repeat:repeat-x;border-color:#dd5600 #dd5600 #913800;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff76000',endColorstr='#ffdd5600',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#dd5600;*background-color:#c44c00}.btn-warning:active,.btn-warning.active{background-color:#aa4200 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#d41e24;*background-color:#c71c22;background-image:-moz-linear-gradient(top,#dd1f26,#c71c22);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd1f26),to(#c71c22));background-image:-webkit-linear-gradient(top,#dd1f26,#c71c22);background-image:-o-linear-gradient(top,#dd1f26,#c71c22);background-image:linear-gradient(to bottom,#dd1f26,#c71c22);background-repeat:repeat-x;border-color:#c71c22 #c71c22 #841317;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd1f26',endColorstr='#ffc71c22',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#c71c22;*background-color:#b1191e}.btn-danger:active,.btn-danger.active{background-color:#9a161a \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#034482;*background-color:#033c73;background-image:-moz-linear-gradient(top,#04498c,#033c73);background-image:-webkit-gradient(linear,0 0,0 100%,from(#04498c),to(#033c73));background-image:-webkit-linear-gradient(top,#04498c,#033c73);background-image:-o-linear-gradient(top,#04498c,#033c73);background-image:linear-gradient(to bottom,#04498c,#033c73);background-repeat:repeat-x;border-color:#033c73 #033c73 #011528;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04498c',endColorstr='#ff033c73',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#033c73;*background-color:#022f5a}.btn-inverse:active,.btn-inverse.active{background-color:#022241 \9}i[class^="icon-"]{opacity:.8}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/thumbnail.png b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/thumbnail.png new file mode 100644 index 0000000..2132616 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/css_cerulean/thumbnail.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.css b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.css new file mode 100644 index 0000000..fcd72f7 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.css @@ -0,0 +1,1109 @@ +/*! + * Bootstrap Responsive v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@-ms-viewport { + width: device-width; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.min.css new file mode 100644 index 0000000..d1b7f4b --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.css new file mode 100644 index 0000000..ffdf78e --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.css @@ -0,0 +1,6165 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family:"Microsoft Yahei","微软雅黑",Helvetica, Arial, sans-serif, "宋体"; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 50px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 50px; + color: #f5f5f5; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 50px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 10px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; + padding-top:35px; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 16px 10px 14px; + color: #ffffff; + text-decoration: none; + font-family: 'Telex', sans-serif; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2); +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.navbar li { + line-height: 20px; +} + diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.min.css new file mode 100644 index 0000000..c10c7f4 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_default/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.css b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.css new file mode 100644 index 0000000..034f714 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.css @@ -0,0 +1,1073 @@ +/*! + * Bootstrap Responsive v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-ms-viewport { + width: device-width; +} +.hidden { + display: none; + visibility: hidden; +} +.visible-phone { + display: none !important; +} +.visible-tablet { + display: none !important; +} +.hidden-desktop { + display: none !important; +} +.visible-desktop { + display: inherit !important; +} +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + line-height: 0; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + line-height: 0; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} +@media (max-width: 767px) { + body { + padding-left: 20px; + padding-right: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + .media .pull-left, + .media .pull-right { + float: none; + display: block; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + left: 10px; + right: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: none; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } +} +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.min.css new file mode 100644 index 0000000..42680cd --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap-responsive.min.css @@ -0,0 +1,145 @@ +/*!* Bootstrap Responsive v2.3.1 * * Copyright 2012 Twitter,Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix{*zoom:1;} +.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +@-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}.visible-phone{display:none!important;} +.visible-tablet{display:none!important;}.hidden-desktop{display:none!important;} +.visible-desktop{display:inherit!important;}@media(min-width:768px) and(max-width:979px){.hidden-desktop{display:inherit!important;} +.visible-desktop{display:none!important;}.visible-tablet{display:inherit!important;} +.hidden-tablet{display:none!important;}}@media(max-width:767px){.hidden-desktop{display:inherit!important;} +.visible-desktop{display:none!important;}.visible-phone{display:inherit!important;} +.hidden-phone{display:none!important;}}.visible-print{display:none!important;}@media print{.visible-print{display:inherit!important;} +.hidden-print{display:none!important;}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1;} +.row:before,.row:after{display:table;content:"";line-height:0;}.row:after{clear:both;} +[class*="span"]{float:left;min-height:1px;margin-left:30px;}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} +.span12{width:1170px;}.span11{width:1070px;}.span10{width:970px;}.span9{width:870px;} +.span8{width:770px;}.span7{width:670px;}.span6{width:570px;}.span5{width:470px;} +.span4{width:370px;}.span3{width:270px;}.span2{width:170px;}.span1{width:70px;}.offset12{margin-left:1230px;} +.offset11{margin-left:1130px;}.offset10{margin-left:1030px;}.offset9{margin-left:930px;} +.offset8{margin-left:830px;}.offset7{margin-left:730px;}.offset6{margin-left:630px;} +.offset5{margin-left:530px;}.offset4{margin-left:430px;}.offset3{margin-left:330px;} +.offset2{margin-left:230px;}.offset1{margin-left:130px;}.row-fluid{width:100%;*zoom:1;} +.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}.row-fluid:after{clear:both;} +.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} +.row-fluid [class*="span"]:first-child{margin-left:0;}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} +.row-fluid .span12{width:100%;*width:99.94680851063829%;}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} +.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} +.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} +.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} +.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} +.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} +.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} +.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} +.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} +.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} +.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} +.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} +.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} +.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} +.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} +.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} +.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} +.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} +.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} +.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} +.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} +.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} +.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} +.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} +.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} +.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} +.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} +.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} +.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} +.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} +input,textarea,.uneditable-input{margin-left:0;}.controls-row [class*="span"]+[class*="span"]{margin-left:30px;} +input.span12,textarea.span12,.uneditable-input.span12{width:1156px;}input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} +input.span10,textarea.span10,.uneditable-input.span10{width:956px;}input.span9,textarea.span9,.uneditable-input.span9{width:856px;} +input.span8,textarea.span8,.uneditable-input.span8{width:756px;}input.span7,textarea.span7,.uneditable-input.span7{width:656px;} +input.span6,textarea.span6,.uneditable-input.span6{width:556px;}input.span5,textarea.span5,.uneditable-input.span5{width:456px;} +input.span4,textarea.span4,.uneditable-input.span4{width:356px;}input.span3,textarea.span3,.uneditable-input.span3{width:256px;} +input.span2,textarea.span2,.uneditable-input.span2{width:156px;}input.span1,textarea.span1,.uneditable-input.span1{width:56px;} +.thumbnails{margin-left:-30px;}.thumbnails>li{margin-left:30px;}.row-fluid .thumbnails{margin-left:0;} +}@media(min-width:768px) and(max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} +.row:after{clear:both;}[class*="span"]{float:left;min-height:1px;margin-left:20px;} +.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} +.span12{width:724px;}.span11{width:662px;}.span10{width:600px;}.span9{width:538px;} +.span8{width:476px;}.span7{width:414px;}.span6{width:352px;}.span5{width:290px;} +.span4{width:228px;}.span3{width:166px;}.span2{width:104px;}.span1{width:42px;}.offset12{margin-left:764px;} +.offset11{margin-left:702px;}.offset10{margin-left:640px;}.offset9{margin-left:578px;} +.offset8{margin-left:516px;}.offset7{margin-left:454px;}.offset6{margin-left:392px;} +.offset5{margin-left:330px;}.offset4{margin-left:268px;}.offset3{margin-left:206px;} +.offset2{margin-left:144px;}.offset1{margin-left:82px;}.row-fluid{width:100%;*zoom:1;} +.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}.row-fluid:after{clear:both;} +.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} +.row-fluid [class*="span"]:first-child{margin-left:0;}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} +.row-fluid .span12{width:100%;*width:99.94680851063829%;}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} +.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} +.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} +.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} +.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} +.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} +.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} +.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} +.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} +.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} +.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} +.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} +.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} +.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} +.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} +.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} +.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} +.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} +.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} +.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} +.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} +.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} +.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} +.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} +.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} +.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} +.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} +.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} +.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} +.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} +input,textarea,.uneditable-input{margin-left:0;}.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} +input.span12,textarea.span12,.uneditable-input.span12{width:710px;}input.span11,textarea.span11,.uneditable-input.span11{width:648px;} +input.span10,textarea.span10,.uneditable-input.span10{width:586px;}input.span9,textarea.span9,.uneditable-input.span9{width:524px;} +input.span8,textarea.span8,.uneditable-input.span8{width:462px;}input.span7,textarea.span7,.uneditable-input.span7{width:400px;} +input.span6,textarea.span6,.uneditable-input.span6{width:338px;}input.span5,textarea.span5,.uneditable-input.span5{width:276px;} +input.span4,textarea.span4,.uneditable-input.span4{width:214px;}input.span3,textarea.span3,.uneditable-input.span3{width:152px;} +input.span2,textarea.span2,.uneditable-input.span2{width:90px;}input.span1,textarea.span1,.uneditable-input.span1{width:28px;} +}@media(max-width:767px){body{padding-left:20px;padding-right:20px;}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} +.container-fluid{padding:0;}.dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} +.dl-horizontal dd{margin-left:0;}.container{width:auto;}.row-fluid{width:100%;}.row,.thumbnails{margin-left:0;} +.thumbnails>li{float:none;margin-left:0;}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.row-fluid [class*="offset"]:first-child{margin-left:0;}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} +.controls-row [class*="span"]+[class*="span"]{margin-left:0;}.modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;} +.modal.fade{top:-100px;}.modal.fade.in{top:20px;}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0);} +.page-header h1 small{display:block;line-height:20px;}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} +.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} +.form-horizontal .controls{margin-left:0;}.form-horizontal .control-list{padding-top:0;} +.form-horizontal .form-actions{padding-left:10px;padding-right:10px;}.media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} +.media-object{margin-right:0;margin-left:0;}.modal{top:10px;left:10px;right:10px;} +.modal-header .close{padding:10px;margin:-10px;}.carousel-caption{position:static;} +}@media(max-width:979px){body{padding-top:0;}.navbar-fixed-top,.navbar-fixed-bottom{position:static;} +.navbar-fixed-top{margin-bottom:20px;}.navbar-fixed-bottom{margin-top:20px;}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} +.navbar .container{width:auto;padding:0;}.navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} +.nav-collapse{clear:both;}.nav-collapse .nav{float:none;margin:0 0 10px;}.nav-collapse .nav>li{float:none;} +.nav-collapse .nav>li>a{margin-bottom:2px;}.nav-collapse .nav>.divider-vertical{display:none;} +.nav-collapse .nav .nav-header{color:#777;text-shadow:none;}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;} +.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} +.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} +.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999;} +.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111;} +.nav-collapse.in .btn-group{margin-top:5px;padding:0;}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;} +.nav-collapse .open>.dropdown-menu{display:block;}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} +.nav-collapse .dropdown-menu .divider{display:none;}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} +.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;} +.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111;} +.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;}.nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} +.navbar .btn-navbar{display:block;}.navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} +}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important;}} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.css new file mode 100644 index 0000000..c44f882 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.css @@ -0,0 +1,5971 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ + + width: auto\9; + /* IE7-8 need help adjusting responsive images */ + + height: auto; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} +#map_canvas img, +.google-maps img { + max-width: none; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, +.row:after { + display: table; + content: ""; + line-height: 0; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.span12 { + width: 940px; +} +.span11 { + width: 860px; +} +.span10 { + width: 780px; +} +.span9 { + width: 700px; +} +.span8 { + width: 620px; +} +.span7 { + width: 540px; +} +.span6 { + width: 460px; +} +.span5 { + width: 380px; +} +.span4 { + width: 300px; +} +.span3 { + width: 220px; +} +.span2 { + width: 140px; +} +.span1 { + width: 60px; +} +.offset12 { + margin-left: 980px; +} +.offset11 { + margin-left: 900px; +} +.offset10 { + margin-left: 820px; +} +.offset9 { + margin-left: 740px; +} +.offset8 { + margin-left: 660px; +} +.offset7 { + margin-left: 580px; +} +.offset6 { + margin-left: 500px; +} +.offset5 { + margin-left: 420px; +} +.offset4 { + margin-left: 340px; +} +.offset3 { + margin-left: 260px; +} +.offset2 { + margin-left: 180px; +} +.offset1 { + margin-left: 100px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.row-fluid:after { + clear: both; +} +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; + line-height: 0; +} +.container:after { + clear: both; +} +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} +small { + font-size: 85%; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +cite { + font-style: normal; +} +.muted { + color: #999999; +} +a.muted:hover, +a.muted:focus { + color: #808080; +} +.text-warning { + color: #c09853; +} +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} +.text-error { + color: #b94a48; +} +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} +.text-info { + color: #3a87ad; +} +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} +.text-success { + color: #468847; +} +a.text-success:hover, +a.text-success:focus { + color: #356635; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +h2, +h3 { + line-height: 40px; +} +h1 { + font-size: 38.5px; +} +h2 { + font-size: 31.5px; +} +h3 { + font-size: 24.5px; +} +h4 { + font-size: 17.5px; +} +h5 { + font-size: 14px; +} +h6 { + font-size: 11.9px; +} +h1 small { + font-size: 24.5px; +} +h2 small { + font-size: 17.5px; +} +h3 small { + font-size: 14px; +} +h4 small { + font-size: 14px; +} +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: 20px; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-bottom: 20px; +} +dt, +dd { + line-height: 20px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 10px; +} +.dl-horizontal { + *zoom: 1; +} +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} +.dl-horizontal:after { + clear: both; +} +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.dl-horizontal dd { + margin-left: 180px; +} +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} +blockquote.pull-right small:before { + content: ''; +} +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; +} +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; + white-space: nowrap; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); +} +pre.prettyprint { + margin-bottom: 20px; +} +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +form { + margin: 0 0 20px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +legend small { + font-size: 15px; + color: #999999; +} +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +label { + display: block; + margin-bottom: 5px; +} +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; +} +input, +textarea, +.uneditable-input { + width: 206px; +} +textarea { + height: auto; +} +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + /* IE7 */ + + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} +select[multiple], +select[size] { + height: auto; +} +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.uneditable-input, +.uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + cursor: not-allowed; +} +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} +.uneditable-textarea { + width: auto; + height: auto; +} +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.input-mini { + width: 60px; +} +.input-small { + width: 90px; +} +.input-medium { + width: 150px; +} +.input-large { + width: 210px; +} +.input-xlarge { + width: 270px; +} +.input-xxlarge { + width: 530px; +} +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} +input, +textarea, +.uneditable-input { + margin-left: 0; +} +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} +.controls-row { + *zoom: 1; +} +.controls-row:before, +.controls-row:after { + display: table; + content: ""; + line-height: 0; +} +.controls-row:after { + clear: both; +} +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; +} +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} +.form-actions:before, +.form-actions:after { + display: table; + content: ""; + line-height: 0; +} +.form-actions:after { + clear: both; +} +.help-block, +.help-inline { + color: #595959; +} +.help-block { + display: block; + margin-bottom: 10px; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + vertical-align: middle; + font-size: 0; + white-space: nowrap; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; +} +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; +} +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; +} +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; +} +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} +.control-group { + margin-bottom: 10px; +} +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} +.form-horizontal .controls:first-child { + *padding-left: 180px; +} +.form-horizontal .help-block { + margin-bottom: 0; +} +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} +.form-horizontal .form-actions { + padding-left: 180px; +} +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 20px; +} +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table th { + font-weight: bold; +} +.table thead th { + vertical-align: bottom; +} +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; +} +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} +.table tbody tr.success > td { + background-color: #dff0d8; +} +.table tbody tr.error > td { + background-color: #f2dede; +} +.table tbody tr.warning > td { + background-color: #fcf8e3; +} +.table tbody tr.info > td { + background-color: #d9edf7; +} +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} +/*! + * Font Awesome 3.0.2 + * the iconic font designed for use with Twitter Bootstrap + * ------------------------------------------------------- + * The full suite of pictographic icons, examples, and documentation + * can be found at: http://fortawesome.github.com/Font-Awesome/ + * + * License + * ------------------------------------------------------- + * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - + * http://opensource.org/licenses/mit-license.html + * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" + + * Contact + * ------------------------------------------------------- + * Email: dave@davegandy.com + * Twitter: http://twitter.com/fortaweso_me + * Work: Lead Product Designer @ http://kyruus.com + */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.0.1'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); + font-weight: normal; + font-style: normal; +} +/* Font Awesome styles + ------------------------------------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + /* sprites.less reset */ + + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"] { + display: inline-block; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +.btn [class^="icon-"], +.nav [class^="icon-"], +.btn [class*=" icon-"], +.nav [class*=" icon-"] { + display: inline; + /* keeps button heights with and without icons the same */ + +} +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"] { + /* keeps button heights with and without icons the same */ + +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +li [class^="icon-"], +.nav li [class^="icon-"], +li [class*=" icon-"], +.nav li [class*=" icon-"] { + display: inline-block; + width: 1.25em; + text-align: center; +} +li [class^="icon-"].icon-large, +.nav li [class^="icon-"].icon-large, +li [class*=" icon-"].icon-large, +.nav li [class*=" icon-"].icon-large { + /* increased font size for icon-large */ + + width: 1.5625em; +} +ul.icons { + list-style-type: none; + text-indent: -0.75em; +} +ul.icons li [class^="icon-"], +ul.icons li [class*=" icon-"] { + width: .75em; +} +.icon-muted { + color: #eeeeee; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +@-moz-document url-prefix() { + .icon-spin { + height: .9em; + } + .btn .icon-spin { + height: auto; + } + .icon-spin.icon-large { + height: 1.25em; + } + .btn .icon-spin.icon-large { + height: .75em; + } +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-repeat:before { + content: "\f01e"; +} +/* \f020 doesn't work in Safari. all shifted one down */ +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-share-alt:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up:before { + content: "\f087"; +} +.icon-thumbs-down:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope-alt:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-undo:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-reply:before { + content: "\f112"; +} +.icon-github-alt:before { + content: "\f113"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +/*! + * Font Awesome 3.0.2 + * the iconic font designed for use with Twitter Bootstrap + * ------------------------------------------------------- + * The full suite of pictographic icons, examples, and documentation + * can be found at: http://fortawesome.github.com/Font-Awesome/ + * + * License + * ------------------------------------------------------- + * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - + * http://opensource.org/licenses/mit-license.html + * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" + + * Contact + * ------------------------------------------------------- + * Email: dave@davegandy.com + * Twitter: http://twitter.com/fortaweso_me + * Work: Lead Product Designer @ http://kyruus.com + */ +.icon-large { + font-size: 1.3333333333333333em; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: middle; +} +.nav [class^="icon-"], +.nav [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; +} +.nav [class^="icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + vertical-align: -25%; +} +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large { + line-height: .75em; + margin-top: -7px; + padding-top: 5px; + margin-bottom: -5px; + padding-bottom: 4px; +} +.btn [class^="icon-"].pull-left, +.btn [class*=" icon-"].pull-left, +.btn [class^="icon-"].pull-right, +.btn [class*=" icon-"].pull-right { + vertical-align: inherit; +} +.btn [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large { + margin-top: -0.5em; +} +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer; +} +ul.icons { + text-indent: -1.5em; + margin-left: 3em; +} +.icon-glass { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-music { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-search { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-film { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-large { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-in { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-out { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cog { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trash { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-home { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-time { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-road { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-inbox { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-repeat { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-refresh { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-headphones { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-qrcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-barcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tags { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-book { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-print { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-font { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bold { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-italic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-height { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-width { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-center { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-justify { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facetime-video { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-picture { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pencil { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-map-marker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-adjust { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tint { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-edit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-move { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pause { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eject { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-question-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-info-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-screenshot { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ban-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-full { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-small { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-asterisk { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exclamation-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gift { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-leaf { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fire { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-warning-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plane { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-calendar { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-random { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magnet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-retweet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-shopping-cart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-vertical { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-horizontal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bar-chart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera-retro { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-key { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cogs { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signout { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pushpin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-external-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trophy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lemon { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-credit-card { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rss { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hdd { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bullhorn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-certificate { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-globe { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-wrench { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tasks { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-filter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-briefcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fullscreen { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-group { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beaker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cut { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-copy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paper-clip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-save { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sign-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reorder { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ul { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ol { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-strikethrough { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-underline { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-table { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-truck { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-money { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-columns { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-undo { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-legal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dashboard { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bolt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sitemap { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-umbrella { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paste { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lightbulb { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exchange { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user-md { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stethoscope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-suitcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-coffee { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-food { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-building { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hospital { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ambulance { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-medkit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fighter-jet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beer { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-h-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-desktop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-laptop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tablet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mobile-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-spinner { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reply { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + text-decoration: none; + color: #ffffff; + background-color: #0081c2; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0081c2; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: default; +} +.open { + *z-index: 1000; +} +.open > .dropdown-menu { + display: block; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; +} +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} +.dropdown-submenu.pull-left { + float: none; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; +} +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} +.typeahead { + z-index: 1051; + margin-top: 2px; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-large { + padding: 24px; +} +.well-small { + padding: 9px; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.btn { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #cccccc; + *border: 0; + border-bottom-color: #b3b3b3; + *margin-left: .3em; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} +.btn:active, +.btn.active { + background-color: #cccccc \9; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; +} +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, +.btn:active { + background-image: none; + outline: 0; +} +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); +} +.btn-large { + padding: 11px 19px; + font-size: 17.5px; +} +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} +.btn-small { + padding: 2px 10px; + font-size: 11.9px; +} +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} +.btn-mini { + padding: 0 6px; + font-size: 10.5px; +} +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0088cc; +} +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} +.btn-group { + position: relative; + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} +.btn-group > .btn { + position: relative; +} +.btn-group > .btn + .btn { + margin-left: -1px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} +.btn-group > .btn-mini { + font-size: 10.5px; +} +.btn-group > .btn-small { + font-size: 11.9px; +} +.btn-group > .btn-large { + font-size: 17.5px; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn.large:first-child { + margin-left: 0; +} +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} +.btn-group.open .dropdown-toggle { + background-image: none; +} +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} +.btn .caret { + margin-top: 8px; + margin-left: 0; +} +.btn-large .caret { + margin-top: 6px; +} +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} +.dropup .btn-large .caret { + border-bottom-width: 5px; +} +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; +} +.btn-group-vertical > .btn + .btn { + margin-left: 0; + margin-top: -1px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; +} +.alert, +.alert h4 { + color: #c09853; +} +.alert h4 { + margin: 0; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} +.alert-success h4 { + color: #468847; +} +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} +.alert-info h4 { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li > a > img { + max-width: none; +} +.nav > .pull-right { + float: right; +} +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} +.nav li + .nav-header { + margin-top: 9px; +} +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list > li > a { + padding: 3px 15px; +} +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.nav-tabs, +.nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; + line-height: 0; +} +.nav-tabs:after, +.nav-pills:after { + clear: both; +} +.nav-tabs > li, +.nav-pills > li { + float: left; +} +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + margin-bottom: -1px; +} +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; +} +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; +} +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; +} +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; +} +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav .dropdown-toggle .caret { + border-top-color: #0088cc; + border-bottom-color: #0088cc; + margin-top: 6px; +} +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} +/* move down carets for tabs */ +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, +.tabbable:after { + display: table; + content: ""; + line-height: 0; +} +.tabbable:after { + clear: both; +} +.tab-content { + overflow: auto; +} +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; +} +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; +} +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.nav > .disabled > a { + color: #999999; +} +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + cursor: default; +} +.navbar { + overflow: visible; + margin-bottom: 20px; + *position: relative; + *z-index: 2; +} +.navbar-inner { + min-height: 40px; + padding-left: 20px; + padding-right: 20px; + background-color: #fafafa; + border: 1px solid #d4d4d4; + *zoom: 1; +} +.navbar-inner:before, +.navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-inner:after { + clear: both; +} +.navbar .container { + width: auto; +} +.nav-collapse.collapse { + height: auto; + overflow: visible; +} +.navbar .brand { + float: left; + display: block; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} +.navbar-link { + color: #777777; +} +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} +.navbar .divider-vertical { + height: 50px; + margin: 0 9px; + border-left: 1px solid #f2f2f2; + border-right: 1px solid #ffffff; +} +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; +} +.navbar-static-top { + position: static; + margin-bottom: 0; +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; +} +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-bottom { + bottom: 0; +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; + padding-top:35px; +} +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} +.navbar .nav > li { + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 16px 6px 14px; + color: #ffffff; + font-family: 'Telex', sans-serif; + text-decoration: none; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2); +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; +} +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e5e5e5; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; +} +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + border-color: #252525; +} +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} +.navbar-inverse .brand { + color: #999999; +} +.navbar-inverse .navbar-text { + color: #999999; +} +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} +.navbar-inverse .navbar-link { + color: #999999; +} +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} +.navbar-inverse .divider-vertical { + border-left-color: #111111; + border-right-color: #222222; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; +} +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; +} +.breadcrumb > li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + margin: 20px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; +} +.pagination ul > li { + display: inline; +} +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, +.pager:after { + display: table; + content: ""; + line-height: 0; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + background-color: #fff; + cursor: default; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; + outline: none; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 10%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-header h3 { + margin: 0; + line-height: 30px; +} +.modal-body { + position: relative; + overflow-y: auto; + max-height: 400px; + padding: 15px; +} +.modal-form { + margin-bottom: 0; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + *zoom: 1; +} +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; + line-height: 0; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; +} +.popover-title:empty { + display: none; +} +.popover-content { + padding: 9px 14px; +} +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: 11px; +} +.popover .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right .arrow:after { + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left .arrow:after { + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, +.thumbnails:after { + display: table; + content: ""; + line-height: 0; +} +.thumbnails:after { + clear: both; +} +.row-fluid .thumbnails { + margin-left: 0; +} +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; +} +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; + color: #555555; +} +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + margin-left: 0; + list-style: none; +} +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} +.badge { + padding-left: 9px; + padding-right: 9px; +} +.label:empty, +.badge:empty { + display: none; +} +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label-important, +.badge-important { + background-color: #b94a48; +} +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} +.label-warning, +.badge-warning { + background-color: #f89406; +} +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} +.label-success, +.badge-success { + background-color: #468847; +} +.label-success[href], +.badge-success[href] { + background-color: #356635; +} +.label-info, +.badge-info { + background-color: #3a87ad; +} +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} +.label-inverse, +.badge-inverse { + background-color: #333333; +} +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} +.btn-mini .label, +.btn-mini .badge { + top: 0; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #149bdf; + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; +} +.accordion { + margin-bottom: 20px; +} +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} +.accordion-toggle { + cursor: pointer; +} +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); +} +.carousel-indicators .active { + background-color: #fff; +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; + line-height: 20px; +} +.carousel-caption h4 { + margin: 0 0 5px; +} +.carousel-caption p { + margin-bottom: 0; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} +.hero-unit li { + line-height: 30px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +.affix { + position: fixed; +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.min.css new file mode 100644 index 0000000..47caebb --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_flat/bootstrap.min.css @@ -0,0 +1,858 @@ +/*!* Bootstrap v2.3.1 * * Copyright 2012 Twitter,Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix{*zoom:1;} +.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}audio:not([controls]){display:none;} +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +a:hover,a:active{outline:0;}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} +sup{top:-0.5em;}sub{bottom:-0.25em;}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} +#map_canvas img,.google-maps img{max-width:none;}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} +button,input{*overflow:visible;line-height:normal;}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;} +label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;} +input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important;} +a,a:visited{text-decoration:underline;}a[href]:after{content:"(" attr(href) ")";} +abbr[title]:after{content:"(" attr(title) ")";}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} +pre,blockquote{border:1px solid #999;page-break-inside:avoid;}thead{display:table-header-group;} +tr,img{page-break-inside:avoid;}img{max-width:100%!important;}@page{margin:.5cm;} +p,h2,h3{orphans:3;widows:3;}h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff;} +a{color:#08c;text-decoration:none;}a:hover,a:focus{color:#005580;text-decoration:underline;} +.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} +.row:after{clear:both;}[class*="span"]{float:left;min-height:1px;margin-left:20px;} +.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.span12{width:940px;}.span11{width:860px;}.span10{width:780px;}.span9{width:700px;} +.span8{width:620px;}.span7{width:540px;}.span6{width:460px;}.span5{width:380px;} +.span4{width:300px;}.span3{width:220px;}.span2{width:140px;}.span1{width:60px;}.offset12{margin-left:980px;} +.offset11{margin-left:900px;}.offset10{margin-left:820px;}.offset9{margin-left:740px;} +.offset8{margin-left:660px;}.offset7{margin-left:580px;}.offset6{margin-left:500px;} +.offset5{margin-left:420px;}.offset4{margin-left:340px;}.offset3{margin-left:260px;} +.offset2{margin-left:180px;}.offset1{margin-left:100px;}.row-fluid{width:100%;*zoom:1;} +.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}.row-fluid:after{clear:both;} +.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} +.row-fluid [class*="span"]:first-child{margin-left:0;}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} +.row-fluid .span12{width:100%;*width:99.94680851063829%;}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} +.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} +.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} +.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} +.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} +.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} +.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} +.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} +.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} +.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} +.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} +.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} +.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} +.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} +.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} +.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} +.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} +.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} +.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} +.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} +.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} +.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} +.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} +.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} +.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} +.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} +.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} +.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} +.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} +.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} +[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} +.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} +.container:after{clear:both;}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;} +.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} +.container-fluid:after{clear:both;}p{margin:0 0 10px;}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;} +small{font-size:85%;}strong{font-weight:bold;}em{font-style:italic;}cite{font-style:normal;} +.muted{color:#999;}a.muted:hover,a.muted:focus{color:#808080;}.text-warning{color:#c09853;} +a.text-warning:hover,a.text-warning:focus{color:#a47e3c;}.text-error{color:#b94a48;} +a.text-error:hover,a.text-error:focus{color:#953b39;}.text-info{color:#3a87ad;}a.text-info:hover,a.text-info:focus{color:#2d6987;} +.text-success{color:#468847;}a.text-success:hover,a.text-success:focus{color:#356635;} +.text-left{text-align:left;}.text-right{text-align:right;}.text-center{text-align:center;} +h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;} +h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999;} +h1,h2,h3{line-height:40px;}h1{font-size:38.5px;}h2{font-size:31.5px;}h3{font-size:24.5px;} +h4{font-size:17.5px;}h5{font-size:14px;}h6{font-size:11.9px;}h1 small{font-size:24.5px;} +h2 small{font-size:17.5px;}h3 small{font-size:14px;}h4 small{font-size:14px;}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee;} +ul,ol{padding:0;margin:0 0 10px 25px;}ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}li{line-height:20px;} +ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}ul.inline,ol.inline{margin-left:0;list-style:none;} +ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;} +dl{margin-bottom:20px;}dt,dd{line-height:20px;}dt{font-weight:bold;}dd{margin-left:10px;} +.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} +.dl-horizontal:after{clear:both;}.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} +.dl-horizontal dd{margin-left:180px;}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff;} +abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999;} +abbr.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee;} +blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25;} +blockquote small{display:block;line-height:20px;color:#999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;} +blockquote.pull-right p,blockquote.pull-right small{text-align:right;}blockquote.pull-right small:before{content:'';} +blockquote.pull-right small:after{content:'\00A0 \2014';}q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;} +code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;} +pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);} +pre.prettyprint{margin-bottom:20px;}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;} +.pre-scrollable{max-height:340px;overflow-y:scroll;}form{margin:0 0 20px;}fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5;} +legend small{font-size:15px;color:#999;}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;} +input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} +label{display:block;margin-bottom:5px;}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;} +input,textarea,.uneditable-input{width:206px;}textarea{height:auto;}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;} +textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;} +input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;} +input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} +select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}select{width:220px;border:1px solid #ccc;background-color:#fff;} +select[multiple],select[size]{height:auto;}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;cursor:not-allowed;} +.uneditable-input{overflow:hidden;white-space:nowrap;}.uneditable-textarea{width:auto;height:auto;} +input:-moz-placeholder,textarea:-moz-placeholder{color:#999;}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999;} +input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999;} +.radio,.checkbox{min-height:20px;padding-left:20px;}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.input-mini{width:60px;}.input-small{width:90px;}.input-medium{width:150px;}.input-large{width:210px;} +.input-xlarge{width:270px;}.input-xxlarge{width:530px;}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} +.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} +input,textarea,.uneditable-input{margin-left:0;}.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} +input.span12,textarea.span12,.uneditable-input.span12{width:926px;}input.span11,textarea.span11,.uneditable-input.span11{width:846px;} +input.span10,textarea.span10,.uneditable-input.span10{width:766px;}input.span9,textarea.span9,.uneditable-input.span9{width:686px;} +input.span8,textarea.span8,.uneditable-input.span8{width:606px;}input.span7,textarea.span7,.uneditable-input.span7{width:526px;} +input.span6,textarea.span6,.uneditable-input.span6{width:446px;}input.span5,textarea.span5,.uneditable-input.span5{width:366px;} +input.span4,textarea.span4,.uneditable-input.span4{width:286px;}input.span3,textarea.span3,.uneditable-input.span3{width:206px;} +input.span2,textarea.span2,.uneditable-input.span2{width:126px;}input.span1,textarea.span1,.uneditable-input.span1{width:46px;} +.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} +.controls-row:after{clear:both;}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;} +.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;} +input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} +.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} +.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} +.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} +.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} +.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} +.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} +input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;} +input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;} +.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;} +.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} +.form-actions:after{clear:both;}.help-block,.help-inline{color:#595959;}.help-block{display:block;margin-bottom:10px;} +.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} +.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;} +.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px;} +.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;} +.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} +.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc;} +.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;} +.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;} +.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;} +.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;} +.input-prepend.input-append .btn-group:first-child{margin-left:0;}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;} +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} +.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} +.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} +.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} +.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} +.control-group{margin-bottom:10px;}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} +.form-horizontal .control-group:after{clear:both;}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} +.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;} +.form-horizontal .controls:first-child{*padding-left:180px;}.form-horizontal .help-block{margin-bottom:0;} +.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;} +.form-horizontal .form-actions{padding-left:180px;}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd;} +.table th{font-weight:bold;}.table thead th{vertical-align:bottom;}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} +.table tbody+tbody{border-top:2px solid #ddd;}.table .table{background-color:#fff;} +.table-condensed th,.table-condensed td{padding:4px 5px;}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;} +.table-bordered th,.table-bordered td{border-left:1px solid #ddd;}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} +.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;} +.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;} +table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;} +.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;} +.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;} +.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;} +.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;} +.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;} +.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;} +.table tbody tr.success>td{background-color:#dff0d8;}.table tbody tr.error>td{background-color:#f2dede;} +.table tbody tr.warning>td{background-color:#fcf8e3;}.table tbody tr.info>td{background-color:#d9edf7;} +.table-hover tbody tr.success:hover>td{background-color:#d0e9c6;}.table-hover tbody tr.error:hover>td{background-color:#ebcccc;} +.table-hover tbody tr.warning:hover>td{background-color:#faf2cc;}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3;} +/*!* Font Awesome 3.0.2 * the iconic font designed for use with Twitter Bootstrap * ------------------------------------------------------- * The full suite of pictographic icons,examples,and documentation * can be found at:http://fortawesome.github.com/Font-Awesome/ * * License * ------------------------------------------------------- * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL * - Font Awesome CSS,LESS,and SASS files are licensed under the MIT License - * http://opensource.org/licenses/mit-license.html * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0,but much appreciated:* "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" * Contact * ------------------------------------------------------- * Email:dave@davegandy.com * Twitter:http://twitter.com/fortaweso_me * Work:Lead Product Designer @ http://kyruus.com */ @font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.0.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype');font-weight:normal;font-style:normal;} +[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;} +[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;} +a [class^="icon-"],a [class*=" icon-"]{display:inline-block;}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;} +.btn [class^="icon-"],.nav [class^="icon-"],.btn [class*=" icon-"],.nav [class*=" icon-"]{display:inline;} +.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;} +.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;} +li [class^="icon-"],.nav li [class^="icon-"],li [class*=" icon-"],.nav li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center;} +li [class^="icon-"].icon-large,.nav li [class^="icon-"].icon-large,li [class*=" icon-"].icon-large,.nav li [class*=" icon-"].icon-large{width:1.5625em;} +ul.icons{list-style-type:none;text-indent:-0.75em;}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.75em;} +.icon-muted{color:#eee;}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.pull-right{float:right;}.pull-left{float:left;}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;} +[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;} +.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;} +.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;} +.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;} +.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;} +.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;} +.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;} +@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);}100%{-moz-transform:rotate(359deg);} +}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);} +}@-o-keyframes spin{0%{-o-transform:rotate(0deg);}100%{-o-transform:rotate(359deg);} +}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);}100%{-ms-transform:rotate(359deg);} +}@keyframes spin{0%{transform:rotate(0deg);}100%{transform:rotate(359deg);}}@-moz-document url-prefix(){.icon-spin{height:.9em;} +.btn .icon-spin{height:auto;}.icon-spin.icon-large{height:1.25em;}.btn .icon-spin.icon-large{height:.75em;} +}.icon-glass:before{content:"\f000";}.icon-music:before{content:"\f001";}.icon-search:before{content:"\f002";} +.icon-envelope:before{content:"\f003";}.icon-heart:before{content:"\f004";}.icon-star:before{content:"\f005";} +.icon-star-empty:before{content:"\f006";}.icon-user:before{content:"\f007";}.icon-film:before{content:"\f008";} +.icon-th-large:before{content:"\f009";}.icon-th:before{content:"\f00a";}.icon-th-list:before{content:"\f00b";} +.icon-ok:before{content:"\f00c";}.icon-remove:before{content:"\f00d";}.icon-zoom-in:before{content:"\f00e";} +.icon-zoom-out:before{content:"\f010";}.icon-off:before{content:"\f011";}.icon-signal:before{content:"\f012";} +.icon-cog:before{content:"\f013";}.icon-trash:before{content:"\f014";}.icon-home:before{content:"\f015";} +.icon-file:before{content:"\f016";}.icon-time:before{content:"\f017";}.icon-road:before{content:"\f018";} +.icon-download-alt:before{content:"\f019";}.icon-download:before{content:"\f01a";} +.icon-upload:before{content:"\f01b";}.icon-inbox:before{content:"\f01c";}.icon-play-circle:before{content:"\f01d";} +.icon-repeat:before{content:"\f01e";}.icon-refresh:before{content:"\f021";}.icon-list-alt:before{content:"\f022";} +.icon-lock:before{content:"\f023";}.icon-flag:before{content:"\f024";}.icon-headphones:before{content:"\f025";} +.icon-volume-off:before{content:"\f026";}.icon-volume-down:before{content:"\f027";} +.icon-volume-up:before{content:"\f028";}.icon-qrcode:before{content:"\f029";}.icon-barcode:before{content:"\f02a";} +.icon-tag:before{content:"\f02b";}.icon-tags:before{content:"\f02c";}.icon-book:before{content:"\f02d";} +.icon-bookmark:before{content:"\f02e";}.icon-print:before{content:"\f02f";}.icon-camera:before{content:"\f030";} +.icon-font:before{content:"\f031";}.icon-bold:before{content:"\f032";}.icon-italic:before{content:"\f033";} +.icon-text-height:before{content:"\f034";}.icon-text-width:before{content:"\f035";} +.icon-align-left:before{content:"\f036";}.icon-align-center:before{content:"\f037";} +.icon-align-right:before{content:"\f038";}.icon-align-justify:before{content:"\f039";} +.icon-list:before{content:"\f03a";}.icon-indent-left:before{content:"\f03b";}.icon-indent-right:before{content:"\f03c";} +.icon-facetime-video:before{content:"\f03d";}.icon-picture:before{content:"\f03e";} +.icon-pencil:before{content:"\f040";}.icon-map-marker:before{content:"\f041";}.icon-adjust:before{content:"\f042";} +.icon-tint:before{content:"\f043";}.icon-edit:before{content:"\f044";}.icon-share:before{content:"\f045";} +.icon-check:before{content:"\f046";}.icon-move:before{content:"\f047";}.icon-step-backward:before{content:"\f048";} +.icon-fast-backward:before{content:"\f049";}.icon-backward:before{content:"\f04a";} +.icon-play:before{content:"\f04b";}.icon-pause:before{content:"\f04c";}.icon-stop:before{content:"\f04d";} +.icon-forward:before{content:"\f04e";}.icon-fast-forward:before{content:"\f050";} +.icon-step-forward:before{content:"\f051";}.icon-eject:before{content:"\f052";}.icon-chevron-left:before{content:"\f053";} +.icon-chevron-right:before{content:"\f054";}.icon-plus-sign:before{content:"\f055";} +.icon-minus-sign:before{content:"\f056";}.icon-remove-sign:before{content:"\f057";} +.icon-ok-sign:before{content:"\f058";}.icon-question-sign:before{content:"\f059";} +.icon-info-sign:before{content:"\f05a";}.icon-screenshot:before{content:"\f05b";} +.icon-remove-circle:before{content:"\f05c";}.icon-ok-circle:before{content:"\f05d";} +.icon-ban-circle:before{content:"\f05e";}.icon-arrow-left:before{content:"\f060";} +.icon-arrow-right:before{content:"\f061";}.icon-arrow-up:before{content:"\f062";} +.icon-arrow-down:before{content:"\f063";}.icon-share-alt:before{content:"\f064";} +.icon-resize-full:before{content:"\f065";}.icon-resize-small:before{content:"\f066";} +.icon-plus:before{content:"\f067";}.icon-minus:before{content:"\f068";}.icon-asterisk:before{content:"\f069";} +.icon-exclamation-sign:before{content:"\f06a";}.icon-gift:before{content:"\f06b";} +.icon-leaf:before{content:"\f06c";}.icon-fire:before{content:"\f06d";}.icon-eye-open:before{content:"\f06e";} +.icon-eye-close:before{content:"\f070";}.icon-warning-sign:before{content:"\f071";} +.icon-plane:before{content:"\f072";}.icon-calendar:before{content:"\f073";}.icon-random:before{content:"\f074";} +.icon-comment:before{content:"\f075";}.icon-magnet:before{content:"\f076";}.icon-chevron-up:before{content:"\f077";} +.icon-chevron-down:before{content:"\f078";}.icon-retweet:before{content:"\f079";} +.icon-shopping-cart:before{content:"\f07a";}.icon-folder-close:before{content:"\f07b";} +.icon-folder-open:before{content:"\f07c";}.icon-resize-vertical:before{content:"\f07d";} +.icon-resize-horizontal:before{content:"\f07e";}.icon-bar-chart:before{content:"\f080";} +.icon-twitter-sign:before{content:"\f081";}.icon-facebook-sign:before{content:"\f082";} +.icon-camera-retro:before{content:"\f083";}.icon-key:before{content:"\f084";}.icon-cogs:before{content:"\f085";} +.icon-comments:before{content:"\f086";}.icon-thumbs-up:before{content:"\f087";}.icon-thumbs-down:before{content:"\f088";} +.icon-star-half:before{content:"\f089";}.icon-heart-empty:before{content:"\f08a";} +.icon-signout:before{content:"\f08b";}.icon-linkedin-sign:before{content:"\f08c";} +.icon-pushpin:before{content:"\f08d";}.icon-external-link:before{content:"\f08e";} +.icon-signin:before{content:"\f090";}.icon-trophy:before{content:"\f091";}.icon-github-sign:before{content:"\f092";} +.icon-upload-alt:before{content:"\f093";}.icon-lemon:before{content:"\f094";}.icon-phone:before{content:"\f095";} +.icon-check-empty:before{content:"\f096";}.icon-bookmark-empty:before{content:"\f097";} +.icon-phone-sign:before{content:"\f098";}.icon-twitter:before{content:"\f099";}.icon-facebook:before{content:"\f09a";} +.icon-github:before{content:"\f09b";}.icon-unlock:before{content:"\f09c";}.icon-credit-card:before{content:"\f09d";} +.icon-rss:before{content:"\f09e";}.icon-hdd:before{content:"\f0a0";}.icon-bullhorn:before{content:"\f0a1";} +.icon-bell:before{content:"\f0a2";}.icon-certificate:before{content:"\f0a3";}.icon-hand-right:before{content:"\f0a4";} +.icon-hand-left:before{content:"\f0a5";}.icon-hand-up:before{content:"\f0a6";}.icon-hand-down:before{content:"\f0a7";} +.icon-circle-arrow-left:before{content:"\f0a8";}.icon-circle-arrow-right:before{content:"\f0a9";} +.icon-circle-arrow-up:before{content:"\f0aa";}.icon-circle-arrow-down:before{content:"\f0ab";} +.icon-globe:before{content:"\f0ac";}.icon-wrench:before{content:"\f0ad";}.icon-tasks:before{content:"\f0ae";} +.icon-filter:before{content:"\f0b0";}.icon-briefcase:before{content:"\f0b1";}.icon-fullscreen:before{content:"\f0b2";} +.icon-group:before{content:"\f0c0";}.icon-link:before{content:"\f0c1";}.icon-cloud:before{content:"\f0c2";} +.icon-beaker:before{content:"\f0c3";}.icon-cut:before{content:"\f0c4";}.icon-copy:before{content:"\f0c5";} +.icon-paper-clip:before{content:"\f0c6";}.icon-save:before{content:"\f0c7";}.icon-sign-blank:before{content:"\f0c8";} +.icon-reorder:before{content:"\f0c9";}.icon-list-ul:before{content:"\f0ca";}.icon-list-ol:before{content:"\f0cb";} +.icon-strikethrough:before{content:"\f0cc";}.icon-underline:before{content:"\f0cd";} +.icon-table:before{content:"\f0ce";}.icon-magic:before{content:"\f0d0";}.icon-truck:before{content:"\f0d1";} +.icon-pinterest:before{content:"\f0d2";}.icon-pinterest-sign:before{content:"\f0d3";} +.icon-google-plus-sign:before{content:"\f0d4";}.icon-google-plus:before{content:"\f0d5";} +.icon-money:before{content:"\f0d6";}.icon-caret-down:before{content:"\f0d7";}.icon-caret-up:before{content:"\f0d8";} +.icon-caret-left:before{content:"\f0d9";}.icon-caret-right:before{content:"\f0da";} +.icon-columns:before{content:"\f0db";}.icon-sort:before{content:"\f0dc";}.icon-sort-down:before{content:"\f0dd";} +.icon-sort-up:before{content:"\f0de";}.icon-envelope-alt:before{content:"\f0e0";} +.icon-linkedin:before{content:"\f0e1";}.icon-undo:before{content:"\f0e2";}.icon-legal:before{content:"\f0e3";} +.icon-dashboard:before{content:"\f0e4";}.icon-comment-alt:before{content:"\f0e5";} +.icon-comments-alt:before{content:"\f0e6";}.icon-bolt:before{content:"\f0e7";}.icon-sitemap:before{content:"\f0e8";} +.icon-umbrella:before{content:"\f0e9";}.icon-paste:before{content:"\f0ea";}.icon-lightbulb:before{content:"\f0eb";} +.icon-exchange:before{content:"\f0ec";}.icon-cloud-download:before{content:"\f0ed";} +.icon-cloud-upload:before{content:"\f0ee";}.icon-user-md:before{content:"\f0f0";} +.icon-stethoscope:before{content:"\f0f1";}.icon-suitcase:before{content:"\f0f2";} +.icon-bell-alt:before{content:"\f0f3";}.icon-coffee:before{content:"\f0f4";}.icon-food:before{content:"\f0f5";} +.icon-file-alt:before{content:"\f0f6";}.icon-building:before{content:"\f0f7";}.icon-hospital:before{content:"\f0f8";} +.icon-ambulance:before{content:"\f0f9";}.icon-medkit:before{content:"\f0fa";}.icon-fighter-jet:before{content:"\f0fb";} +.icon-beer:before{content:"\f0fc";}.icon-h-sign:before{content:"\f0fd";}.icon-plus-sign-alt:before{content:"\f0fe";} +.icon-double-angle-left:before{content:"\f100";}.icon-double-angle-right:before{content:"\f101";} +.icon-double-angle-up:before{content:"\f102";}.icon-double-angle-down:before{content:"\f103";} +.icon-angle-left:before{content:"\f104";}.icon-angle-right:before{content:"\f105";} +.icon-angle-up:before{content:"\f106";}.icon-angle-down:before{content:"\f107";} +.icon-desktop:before{content:"\f108";}.icon-laptop:before{content:"\f109";}.icon-tablet:before{content:"\f10a";} +.icon-mobile-phone:before{content:"\f10b";}.icon-circle-blank:before{content:"\f10c";} +.icon-quote-left:before{content:"\f10d";}.icon-quote-right:before{content:"\f10e";} +.icon-spinner:before{content:"\f110";}.icon-circle:before{content:"\f111";}.icon-reply:before{content:"\f112";} +.icon-github-alt:before{content:"\f113";}.icon-folder-close-alt:before{content:"\f114";} +.icon-folder-open-alt:before{content:"\f115";}/*!* Font Awesome 3.0.2 * the iconic font designed for use with Twitter Bootstrap * ------------------------------------------------------- * The full suite of pictographic icons,examples,and documentation * can be found at:http://fortawesome.github.com/Font-Awesome/ * * License * ------------------------------------------------------- * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL * - Font Awesome CSS,LESS,and SASS files are licensed under the MIT License - * http://opensource.org/licenses/mit-license.html * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0,but much appreciated:* "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" * Contact * ------------------------------------------------------- * Email:dave@davegandy.com * Twitter:http://twitter.com/fortaweso_me * Work:Lead Product Designer @ http://kyruus.com */ .icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;} +.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;} +.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;} +.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;} +.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;} +.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;} +a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;}ul.icons{text-indent:-1.5em;margin-left:3em;} +.icon-glass{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-music{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-search{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-envelope{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-heart{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-star{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-star-empty{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-user{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-film{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-th-large{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-th{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-th-list{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-ok{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-remove{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-zoom-in{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-zoom-out{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-off{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-signal{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cog{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-trash{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-home{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-file{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-time{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-road{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-download-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-download{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-upload{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-inbox{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-play-circle{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-repeat{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-refresh{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-list-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-lock{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-flag{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-headphones{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-volume-off{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-volume-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-volume-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-qrcode{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-barcode{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-tag{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-tags{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-book{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bookmark{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-print{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-camera{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-font{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bold{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-italic{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-text-height{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-text-width{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-align-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-align-center{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-align-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-align-justify{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-list{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-indent-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-indent-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-facetime-video{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-picture{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-pencil{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-map-marker{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-adjust{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-tint{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-edit{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-share{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-check{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-move{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-step-backward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-fast-backward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-backward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-play{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-pause{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-stop{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-forward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-fast-forward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-step-forward{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-eject{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-chevron-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-chevron-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-plus-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-minus-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-remove-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-ok-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-question-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-info-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-screenshot{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-remove-circle{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-ok-circle{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-ban-circle{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-arrow-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-arrow-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-arrow-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-arrow-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-share-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-resize-full{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-resize-small{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-plus{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-minus{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-asterisk{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-exclamation-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-gift{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-leaf{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-fire{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-eye-open{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-eye-close{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-warning-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-plane{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-calendar{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-random{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-comment{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-magnet{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-chevron-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-chevron-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-retweet{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-shopping-cart{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-folder-close{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-folder-open{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-resize-vertical{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-resize-horizontal{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bar-chart{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-twitter-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-facebook-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-camera-retro{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-key{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cogs{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-comments{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-thumbs-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-thumbs-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-star-half{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-heart-empty{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-signout{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-linkedin-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-pushpin{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-external-link{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-signin{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-trophy{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-github-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-upload-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-lemon{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-phone{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-check-empty{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bookmark-empty{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-phone-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-twitter{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-facebook{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-github{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-unlock{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-credit-card{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-rss{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hdd{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bullhorn{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bell{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-certificate{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hand-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hand-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hand-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hand-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle-arrow-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle-arrow-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle-arrow-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle-arrow-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-globe{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-wrench{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-tasks{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-filter{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-briefcase{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-fullscreen{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-group{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-link{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cloud{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-beaker{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cut{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-copy{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-paper-clip{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-save{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-sign-blank{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-reorder{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-list-ul{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-list-ol{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-strikethrough{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-underline{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-table{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-magic{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-truck{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-pinterest{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-pinterest-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-google-plus-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-google-plus{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-money{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-caret-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-caret-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-caret-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-caret-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-columns{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-sort{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-sort-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-sort-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-envelope-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-linkedin{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-undo{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-legal{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-dashboard{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-comment-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-comments-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bolt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-sitemap{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-umbrella{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-paste{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-lightbulb{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-exchange{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cloud-download{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-cloud-upload{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-user-md{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-stethoscope{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-suitcase{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-bell-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-coffee{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-food{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-file-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-building{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-hospital{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-ambulance{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-medkit{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-fighter-jet{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-beer{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-h-sign{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-plus-sign-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-double-angle-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-double-angle-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-double-angle-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-double-angle-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-angle-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-angle-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-angle-up{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-angle-down{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-desktop{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-laptop{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-tablet{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-mobile-phone{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle-blank{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-quote-left{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-quote-right{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-spinner{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-circle{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-reply{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-github-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-folder-close-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.icon-folder-open-alt{*zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');} +.dropup,.dropdown{position:relative;}.dropdown-toggle{*margin-bottom:-3px;}.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} +.dropdown .caret{margin-top:8px;margin-left:2px;}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;} +.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;} +.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;} +.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#fff;background-color:#0081c2;} +.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;} +.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999;} +.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;} +.open{*z-index:1000;}.open>.dropdown-menu{display:block;}.pull-right>.dropdown-menu{right:0;left:auto;} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"";} +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} +.dropdown-submenu{position:relative;}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;} +.dropdown-submenu:hover>.dropdown-menu{display:block;}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;} +.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;} +.dropdown-submenu:hover>a:after{border-left-color:#fff;}.dropdown-submenu.pull-left{float:none;} +.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;}.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} +.typeahead{z-index:1051;margin-top:2px;}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;} +.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-large{padding:24px;} +.well-small{padding:9px;}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear;} +.fade.in{opacity:1;}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease;} +.collapse.in{height:auto;}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20);} +.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40);} +button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} +.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f5f5f5;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #ccc;*border:0;border-bottom-color:#b3b3b3;*margin-left:.3em;} +.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9;} +.btn:active,.btn.active{background-color:#ccc \9;}.btn:first-child{*margin-left:0;} +.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;} +.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{background-image:none;outline:0;}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);} +.btn-large{padding:11px 19px;font-size:17.5px;}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;} +.btn-small{padding:2px 10px;font-size:11.9px;}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;} +.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}.btn-mini{padding:0 6px;font-size:10.5px;} +.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.btn-block+.btn-block{margin-top:5px;}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75);} +.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;border-color:#04c #0044cc #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3;} +.btn-primary:active,.btn-primary.active{background-color:#039 \9;}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;border-color:#222 #222222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515;} +.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;} +button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} +button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} +button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} +.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;} +.btn-link{border-color:transparent;cursor:pointer;color:#08c;}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;} +.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none;} +.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;} +.btn-group:first-child{*margin-left:0;}.btn-group+.btn-group{margin-left:5px;}.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;} +.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;} +.btn-group>.btn{position:relative;}.btn-group>.btn+.btn{margin-left:-1px;}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px;} +.btn-group>.btn-mini{font-size:10.5px;}.btn-group>.btn-small{font-size:11.9px;}.btn-group>.btn-large{font-size:17.5px;} +.btn-group>.btn:first-child{margin-left:0;}.btn-group>.btn.large:first-child{margin-left:0;} +.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;} +.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} +.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} +.btn-group.open .dropdown-toggle{background-image:none;}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} +.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c;}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} +.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} +.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222;} +.btn .caret{margin-top:8px;margin-left:0;}.btn-large .caret{margin-top:6px;}.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} +.btn-mini .caret,.btn-small .caret{margin-top:8px;}.dropup .btn-large .caret{border-bottom-width:5px;} +.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;} +.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;} +.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;} +.alert,.alert h4{color:#c09853;}.alert h4{margin:0;}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}.alert-success h4{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} +.alert-danger h4,.alert-error h4{color:#b94a48;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} +.alert-info h4{color:#3a87ad;}.alert-block{padding-top:14px;padding-bottom:14px;} +.alert-block>p,.alert-block>ul{margin-bottom:0;}.alert-block p+p{margin-top:5px;} +.nav{margin-left:0;margin-bottom:20px;list-style:none;}.nav>li>a{display:block;} +.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee;}.nav>li>a>img{max-width:none;} +.nav>.pull-right{float:right;}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase;} +.nav li+.nav-header{margin-top:9px;}.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5);} +.nav-list>li>a{padding:3px 15px;}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} +.nav-tabs:after,.nav-pills:after{clear:both;}.nav-tabs>li,.nav-pills>li{float:left;} +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} +.nav-tabs{border-bottom:1px solid #ddd;}.nav-tabs>li{margin-bottom:-1px;}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;} +.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eeeeee #ddd;}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;} +.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c;} +.nav-stacked>li{float:none;}.nav-stacked>li>a{margin-right:0;}.nav-tabs.nav-stacked{border-bottom:0;} +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px;} +.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;} +.nav-tabs .dropdown-toggle .caret{margin-top:8px;}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} +.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555;} +.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999;} +.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999;}.tabbable{*zoom:1;} +.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}.tabbable:after{clear:both;} +.tab-content{overflow:auto;}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}.tab-content>.active,.pill-content>.active{display:block;} +.tabs-below>.nav-tabs{border-top:1px solid #ddd;}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} +.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;} +.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} +.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}.tabs-left>.nav-tabs>li>a{margin-right:-1px;} +.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #dddddd #eee #eeeeee;} +.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff;} +.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}.tabs-right>.nav-tabs>li>a{margin-left:-1px;} +.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eeeeee #eee #dddddd;} +.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff;} +.nav>.disabled>a{color:#999;}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;} +.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;border:1px solid #d4d4d4;*zoom:1;} +.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} +.navbar-inner:after{clear:both;}.navbar .container{width:auto;}.nav-collapse.collapse{height:auto;overflow:visible;} +.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff;} +.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}.navbar-text{margin-bottom:0;line-height:40px;color:#777;} +.navbar-link{color:#777;}.navbar-link:hover,.navbar-link:focus{color:#333;}.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff;} +.navbar .btn,.navbar .btn-group{margin-top:5px;}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} +.navbar-form:after{clear:both;}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;} +.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} +.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;} +.navbar-static-top{position:static;margin-bottom:0;}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} +.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} +.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;} +.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.navbar-fixed-top{top:0;}.navbar-fixed-bottom{bottom:0;}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;margin-right:0;}.navbar .nav>li{float:left;} +.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff;} +.navbar .nav .dropdown-toggle .caret{margin-top:8px;}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none;} +.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;} +.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9;} +.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9;} +.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;} +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute;top:-7px;left:9px;} +.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0;bottom:-7px;top:auto;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto;} +.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333;} +.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555;} +.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777;} +.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555;} +.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;} +.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} +.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} +.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;} +.navbar-inverse .navbar-inner{background-color:#1b1b1b;border-color:#252525;}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25);} +.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff;} +.navbar-inverse .brand{color:#999;}.navbar-inverse .navbar-text{color:#999;}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff;} +.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111;} +.navbar-inverse .navbar-link{color:#999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff;} +.navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111;color:#fff;} +.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;} +.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} +.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;} +.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc;}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc;} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc;} +.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;} +.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);} +.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000;} +.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9;} +.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;} +.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #fff;} +.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}.breadcrumb>.active{color:#999;} +.pagination{margin:20px 0;}.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;} +.pagination ul>li{display:inline;}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0;} +.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} +.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default;} +.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;background-color:transparent;cursor:default;} +.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;} +.pagination-centered{text-align:center;}.pagination-right{text-align:right;}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px;} +.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px;} +.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px;} +.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} +.pager:after{clear:both;}.pager li{display:inline;}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;} +.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;} +.pager .next>a,.pager .next>span{float:right;}.pager .previous>a,.pager .previous>span{float:left;} +.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:default;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;} +.modal-backdrop.fade{opacity:0;}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;} +.modal.fade{-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out;top:-25%;} +.modal.fade.in{top:10%;}.modal-header{padding:9px 15px;border-bottom:1px solid #eee;} +.modal-header .close{margin-top:2px;}.modal-header h3{margin:0;line-height:30px;} +.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}.modal-form{margin-bottom:0;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;*zoom:1;} +.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} +.modal-footer:after{clear:both;}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} +.modal-footer .btn-group .btn+.btn{margin-left:-1px;}.modal-footer .btn-block+.btn-block{margin-left:0;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);} +.tooltip.in{opacity:.8;filter:alpha(opacity=80);}.tooltip.top{margin-top:-3px;padding:5px 0;} +.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;} +.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);white-space:normal;} +.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;} +.popover-title:empty{display:none;}.popover-content{padding:9px 14px;}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow{border-width:11px;}.popover .arrow:after{border-width:10px;content:"";} +.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;} +.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;} +.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);} +.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;} +.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;} +.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff;} +.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);} +.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} +.thumbnails:after{clear:both;}.row-fluid .thumbnails{margin-left:0;}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} +.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;} +a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;}.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;color:#555;}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;} +.media,.media .media{margin-top:15px;}.media:first-child{margin-top:0;}.media-object{display:block;} +.media-heading{margin:0 0 5px;}.media>.pull-left{margin-right:10px;}.media>.pull-right{margin-left:10px;} +.media-list{margin-left:0;list-style:none;}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#999;} +.badge{padding-left:9px;padding-right:9px;}.label:empty,.badge:empty{display:none;} +a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;} +.label-important,.badge-important{background-color:#b94a48;}.label-important[href],.badge-important[href]{background-color:#953b39;} +.label-warning,.badge-warning{background-color:#f89406;}.label-warning[href],.badge-warning[href]{background-color:#c67605;} +.label-success,.badge-success{background-color:#468847;}.label-success[href],.badge-success[href]{background-color:#356635;} +.label-info,.badge-info{background-color:#3a87ad;}.label-info[href],.badge-info[href]{background-color:#2d6987;} +.label-inverse,.badge-inverse{background-color:#333;}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} +.btn .label,.btn .badge{position:relative;top:-1px;}.btn-mini .label,.btn-mini .badge{top:0;} +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;} +}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;} +}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;} +}@-o-keyframes progress-bar-stripes{from{background-position:0 0;}to{background-position:40px 0;} +}@keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;} +}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;} +.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease;} +.progress-striped .bar{background-color:#149bdf;-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;} +.progress-success .bar,.progress .bar-success{background-color:#5eb95e;}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;} +.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;} +.progress-warning .bar,.progress .bar-warning{background-color:#faa732;}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;} +.accordion{margin-bottom:20px;}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;} +.accordion-heading{border-bottom:0;}.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} +.accordion-toggle{cursor:pointer;}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:20px;line-height:1;}.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left;} +.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;} +.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;} +.carousel-inner>.active{left:0;}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;} +.carousel-inner>.next{left:100%;}.carousel-inner>.prev{left:-100%;}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;} +.carousel-inner>.active.left{left:-100%;}.carousel-inner>.active.right{left:100%;} +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;opacity:.5;filter:alpha(opacity=50);} +.carousel-control.right{left:auto;right:15px;}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90);} +.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;} +.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);} +.carousel-indicators .active{background-color:#fff;}.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333;background:rgba(0,0,0,0.75);} +.carousel-caption h4,.carousel-caption p{color:#fff;line-height:20px;}.carousel-caption h4{margin:0 0 5px;} +.carousel-caption p{margin-bottom:0;}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;} +.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} +.hero-unit li{line-height:30px;}.pull-right{float:right;}.pull-left{float:left;} +.hide{display:none;}.show{display:block;}.invisible{visibility:hidden;}.affix{position:fixed;} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.css new file mode 100644 index 0000000..e90b07e --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.css @@ -0,0 +1,6204 @@ +/*!@import url('//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic'); + +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 36px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family:"Microsoft Yahei","微软雅黑",Helvetica, Arial, sans-serif, "宋体"; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #f6f6f6; +} + +a { + color: #e78b24; + text-decoration: none; +} + +a:hover, +a:focus { + color: #da7e18; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 36px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 13px; +} + +.lead { + margin-bottom: 26px; + font-size: 25.5px; + font-weight: 200; + line-height: 39px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #e78b24; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #c37115; +} + +.text-error { + color: #9c0001; +} + +a.text-error:hover, +a.text-error:focus { + color: #690001; +} + +.text-info { + color: #0063ac; +} + +a.text-info:hover, +a.text-info:focus { + color: #004679; +} + +.text-success { + color: #1c9b47; +} + +a.text-success:hover, +a.text-success:focus { + color: #147033; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 13px 0; + font-family: inherit; + font-weight: bold; + line-height: 26px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 52px; +} + +h1 { + font-size: 46.75px; +} + +h2 { + font-size: 38.25px; +} + +h3 { + font-size: 29.75px; +} + +h4 { + font-size: 21.25px; +} + +h5 { + font-size: 17px; +} + +h6 { + font-size: 14.45px; +} + +h1 small { + font-size: 29.75px; +} + +h2 small { + font-size: 21.25px; +} + +h3 small { + font-size: 17px; +} + +h4 small { + font-size: 17px; +} + +.page-header { + padding-bottom: 12px; + margin: 26px 0 39px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 13px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 26px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 26px; +} + +dt, +dd { + line-height: 26px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 13px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 26px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 26px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 21.25px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 26px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 26px; + font-style: normal; + line-height: 26px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 15px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 12.5px; + margin: 0 0 13px; + font-size: 16px; + line-height: 26px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 26px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 26px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 26px; + font-size: 25.5px; + line-height: 52px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 19.5px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 17px; + font-weight: normal; + line-height: 26px; +} + +input, +button, +select, +textarea { + font-family: "Lora", Georgia, "Times New Roman", Times, serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 26px; + padding: 4px 6px; + margin-bottom: 13px; + font-size: 17px; + line-height: 26px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 36px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 36px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 26px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #e78b24; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #e78b24; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #e78b24; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #c37115; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f1bc80; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f1bc80; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f1bc80; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #e78b24; + background-color: #fcf8e3; + border-color: #e78b24; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #9c0001; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #9c0001; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #9c0001; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #690001; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff0305; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff0305; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff0305; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #9c0001; + background-color: #f2dede; + border-color: #9c0001; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #1c9b47; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #1c9b47; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #1c9b47; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #147033; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #40dd75; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #40dd75; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #40dd75; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #1c9b47; + background-color: #dff0d8; + border-color: #1c9b47; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #0063ac; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #0063ac; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #0063ac; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #004679; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #139bff; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #139bff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #139bff; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #0063ac; + background-color: #d9edf7; + border-color: #0063ac; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 25px 20px 26px; + margin-top: 26px; + margin-bottom: 26px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 13px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 13px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 17px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 26px; + min-width: 16px; + padding: 4px 5px; + font-size: 17px; + font-weight: normal; + line-height: 26px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #6ce495; + border-color: #1c9b47; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 13px; +} + +legend + .control-group { + margin-top: 26px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 26px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 13px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 26px; +} + +.table th, +.table td { + padding: 8px; + line-height: 26px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #f6f6f6; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #f6f6f6; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 12px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 26px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #e2861f; + background-image: -moz-linear-gradient(top, #e78b24, #da7e18); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e78b24), to(#da7e18)); + background-image: -webkit-linear-gradient(top, #e78b24, #da7e18); + background-image: -o-linear-gradient(top, #e78b24, #da7e18); + background-image: linear-gradient(to bottom, #e78b24, #da7e18); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe78b24', endColorstr='#ffda7e18', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #e2861f; + background-image: -moz-linear-gradient(top, #e78b24, #da7e18); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e78b24), to(#da7e18)); + background-image: -webkit-linear-gradient(top, #e78b24, #da7e18); + background-image: -o-linear-gradient(top, #e78b24, #da7e18); + background-image: linear-gradient(to bottom, #e78b24, #da7e18); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe78b24', endColorstr='#ffda7e18', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #c3c3c3; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #fefefe; + border: 1px solid #ececec; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 26px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 17px; + line-height: 26px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #e9e9e9; + *background-color: #e1e1e1; + background-image: -moz-linear-gradient(top, #eeeeee, #e1e1e1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#e1e1e1)); + background-image: -webkit-linear-gradient(top, #eeeeee, #e1e1e1); + background-image: -o-linear-gradient(top, #eeeeee, #e1e1e1); + background-image: linear-gradient(to bottom, #eeeeee, #e1e1e1); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e1e1e1 #e1e1e1 #bbbbbb; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffe1e1e1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e1e1e1; + *background-color: #d4d4d4; +} + +.btn:active, +.btn.active { + background-color: #c8c8c8 \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 21.25px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 14.45px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 12.75px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #e99232; + *background-color: #e78b24; + background-image: -moz-linear-gradient(top, #ea973b, #e78b24); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ea973b), to(#e78b24)); + background-image: -webkit-linear-gradient(top, #ea973b, #e78b24); + background-image: -o-linear-gradient(top, #ea973b, #e78b24); + background-image: linear-gradient(to bottom, #ea973b, #e78b24); + background-repeat: repeat-x; + border-color: #e78b24 #e78b24 #ac6413; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffea973b', endColorstr='#ffe78b24', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #e78b24; + *background-color: #da7e18; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #c37115 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #f8d91c; + *background-color: #f8d60d; + background-image: -moz-linear-gradient(top, #f9da26, #f8d60d); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9da26), to(#f8d60d)); + background-image: -webkit-linear-gradient(top, #f9da26, #f8d60d); + background-image: -o-linear-gradient(top, #f9da26, #f8d60d); + background-image: linear-gradient(to bottom, #f9da26, #f8d60d); + background-repeat: repeat-x; + border-color: #f8d60d #f8d60d #b39a05; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9da26', endColorstr='#fff8d60d', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f8d60d; + *background-color: #e5c507; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #ccaf06 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ab0001; + *background-color: #9c0001; + background-image: -moz-linear-gradient(top, #b60001, #9c0001); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b60001), to(#9c0001)); + background-image: -webkit-linear-gradient(top, #b60001, #9c0001); + background-image: -o-linear-gradient(top, #b60001, #9c0001); + background-image: linear-gradient(to bottom, #b60001, #9c0001); + background-repeat: repeat-x; + border-color: #9c0001 #9c0001 #500001; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb60001', endColorstr='#ff9c0001', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #9c0001; + *background-color: #830001; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #690001 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #1ea84d; + *background-color: #1c9b47; + background-image: -moz-linear-gradient(top, #20b151, #1c9b47); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#20b151), to(#1c9b47)); + background-image: -webkit-linear-gradient(top, #20b151, #1c9b47); + background-image: -o-linear-gradient(top, #20b151, #1c9b47); + background-image: linear-gradient(to bottom, #20b151, #1c9b47); + background-repeat: repeat-x; + border-color: #1c9b47 #1c9b47 #105a29; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff20b151', endColorstr='#ff1c9b47', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #1c9b47; + *background-color: #18853d; +} + +.btn-success:active, +.btn-success.active { + background-color: #147033 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006cbb; + *background-color: #0063ac; + background-image: -moz-linear-gradient(top, #0072c6, #0063ac); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0072c6), to(#0063ac)); + background-image: -webkit-linear-gradient(top, #0072c6, #0063ac); + background-image: -o-linear-gradient(top, #0072c6, #0063ac); + background-image: linear-gradient(to bottom, #0072c6, #0063ac); + background-repeat: repeat-x; + border-color: #0063ac #0063ac #003760; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0072c6', endColorstr='#ff0063ac', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #0063ac; + *background-color: #005493; +} + +.btn-info:active, +.btn-info.active { + background-color: #004679 \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #3b3b3b; + *background-color: #333333; + background-image: -moz-linear-gradient(top, #404040, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#404040), to(#333333)); + background-image: -webkit-linear-gradient(top, #404040, #333333); + background-image: -o-linear-gradient(top, #404040, #333333); + background-image: linear-gradient(to bottom, #404040, #333333); + background-repeat: repeat-x; + border-color: #333333 #333333 #0d0d0d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff404040', endColorstr='#ff333333', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #333333; + *background-color: #262626; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #1a1a1a \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #e78b24; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #da7e18; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 13px; + margin-bottom: 13px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 17px; +} + +.btn-group > .btn-mini { + font-size: 12.75px; +} + +.btn-group > .btn-small { + font-size: 14.45px; +} + +.btn-group > .btn-large { + font-size: 21.25px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e1e1e1; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #e78b24; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f8d60d; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #9c0001; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #1c9b47; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #0063ac; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #333333; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 26px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #e78b24; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 26px; +} + +.alert-success { + color: #1c9b47; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #1c9b47; +} + +.alert-danger, +.alert-error { + color: #9c0001; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #9c0001; +} + +.alert-info { + color: #0063ac; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #0063ac; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 26px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 26px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #e78b24; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 12px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 26px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #f6f6f6; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #e78b24; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #e78b24; + border-bottom-color: #e78b24; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #da7e18; + border-bottom-color: #da7e18; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 26px; + overflow: visible; +} + +.navbar-inner { + min-height: 60px; + padding-right: 20px; + padding-left: 20px; + background-color: #f6f6f6; + background-image: -moz-linear-gradient(top, #f6f6f6, #f6f6f6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f6f6f6), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #f6f6f6); + background-image: -o-linear-gradient(top, #f6f6f6, #f6f6f6); + background-image: linear-gradient(to bottom, #f6f6f6, #f6f6f6); + background-repeat: repeat-x; + border: 1px solid #d7d7d7; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6', endColorstr='#fff6f6f6', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 17px 20px 17px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #333333; + text-shadow: 0 1px 0 #f6f6f6; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 60px; + color: #333333; +} + +.navbar-link { + color: #333333; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 55px; + margin: 0 9px; + border-right: 1px solid #0099CC; + border-left: 1px solid #3399CC; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 15px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 15px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 15px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; + padding-top:30px; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 16px 10px 14px; + color: #333333; + text-decoration: none; + text-shadow: 0 1px 0 #f6f6f6; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: #1a99e2; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #2fa4e7; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #e9e9e9; + *background-color: #e9e9e9; + background-image: -moz-linear-gradient(top, #e9e9e9, #e9e9e9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e9e9e9), to(#e9e9e9)); + background-image: -webkit-linear-gradient(top, #e9e9e9, #e9e9e9); + background-image: -o-linear-gradient(top, #e9e9e9, #e9e9e9); + background-image: linear-gradient(to bottom, #e9e9e9, #e9e9e9); + background-repeat: repeat-x; + border-color: #e9e9e9 #e9e9e9 #c3c3c3; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe9e9e9', endColorstr='#ffe9e9e9', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e9e9e9; + *background-color: #dcdcdc; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #d0d0d0 \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #f6f6f6; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #f6f6f6; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #333333; + background-color: #e9e9e9; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #333333; + background-image: -moz-linear-gradient(top, #333333, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#333333)); + background-image: -webkit-linear-gradient(top, #333333, #333333); + background-image: -o-linear-gradient(top, #333333, #333333); + background-image: linear-gradient(to bottom, #333333, #333333); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff333333', endColorstr='#ff333333', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #333333; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #333333; + border-left-color: #333333; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #333333; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #737373; + border-color: #333333; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #262626; + *background-color: #262626; + background-image: -moz-linear-gradient(top, #262626, #262626); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#262626), to(#262626)); + background-image: -webkit-linear-gradient(top, #262626, #262626); + background-image: -o-linear-gradient(top, #262626, #262626); + background-image: linear-gradient(to bottom, #262626, #262626); + background-repeat: repeat-x; + border-color: #262626 #262626 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff262626', endColorstr='#ff262626', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #262626; + *background-color: #1a1a1a; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #0d0d0d \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 26px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 26px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 26px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 21.25px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 14.45px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 12.75px; +} + +.pager { + margin: 26px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 26px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 26px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #e78b24; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 14.382px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #9c0001; +} + +.label-important[href], +.badge-important[href] { + background-color: #690001; +} + +.label-warning, +.badge-warning { + background-color: #e78b24; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c37115; +} + +.label-success, +.badge-success { + background-color: #1c9b47; +} + +.label-success[href], +.badge-success[href] { + background-color: #147033; +} + +.label-info, +.badge-info { + background-color: #0063ac; +} + +.label-info[href], +.badge-info[href] { + background-color: #004679; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 26px; + margin-bottom: 26px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #eca14d; + background-image: -moz-linear-gradient(top, #efb069, #e78b24); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#efb069), to(#e78b24)); + background-image: -webkit-linear-gradient(top, #efb069, #e78b24); + background-image: -o-linear-gradient(top, #efb069, #e78b24); + background-image: linear-gradient(to bottom, #efb069, #e78b24); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffefb069', endColorstr='#ffe78b24', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #efb069; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 26px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 26px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 26px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 39px; + color: inherit; + background-color: #fefefe; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 39px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +div.subnav .nav > li > a, +div.subnav .nav > .active > a, +div.subnav .nav > .active > a:hover { + color: #333333; +} + +div.subnav-fixed { + top: 61px; +} + +.hero-unit h1, +.hero-unit h2, +.hero-unit h3, +.hero-unit h4, +.hero-unit h5, +.hero-unit h6 { + margin: 13px 0; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.min.css new file mode 100644 index 0000000..314abf1 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_readable/bootstrap.min.css @@ -0,0 +1,9 @@ +/*!@import url('//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic');/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:36px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Lora",Georgia,"Times New Roman",Times,serif;font-size:17px;line-height:26px;color:#333;background-color:#f6f6f6}a{color:#e78b24;text-decoration:none}a:hover,a:focus{color:#da7e18;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:36px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 13px}.lead{margin-bottom:26px;font-size:25.5px;font-weight:200;line-height:39px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#e78b24}a.text-warning:hover,a.text-warning:focus{color:#c37115}.text-error{color:#9c0001}a.text-error:hover,a.text-error:focus{color:#690001}.text-info{color:#0063ac}a.text-info:hover,a.text-info:focus{color:#004679}.text-success{color:#1c9b47}a.text-success:hover,a.text-success:focus{color:#147033}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:13px 0;font-family:inherit;font-weight:bold;line-height:26px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:52px}h1{font-size:46.75px}h2{font-size:38.25px}h3{font-size:29.75px}h4{font-size:21.25px}h5{font-size:17px}h6{font-size:14.45px}h1 small{font-size:29.75px}h2 small{font-size:21.25px}h3 small{font-size:17px}h4 small{font-size:17px}.page-header{padding-bottom:12px;margin:26px 0 39px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 13px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:26px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:26px}dt,dd{line-height:26px}dt{font-weight:bold}dd{margin-left:13px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:26px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 26px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:21.25px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:26px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:26px;font-style:normal;line-height:26px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:15px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:12.5px;margin:0 0 13px;font-size:16px;line-height:26px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:26px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 26px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:26px;font-size:25.5px;line-height:52px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:19.5px;color:#999}label,input,button,select,textarea{font-size:17px;font-weight:normal;line-height:26px}input,button,select,textarea{font-family:"Lora",Georgia,"Times New Roman",Times,serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:26px;padding:4px 6px;margin-bottom:13px;font-size:17px;line-height:26px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:36px;*margin-top:4px;line-height:36px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:26px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#e78b24}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#e78b24}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#e78b24;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#c37115;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f1bc80;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f1bc80;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f1bc80}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#e78b24;background-color:#fcf8e3;border-color:#e78b24}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#9c0001}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#9c0001}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#9c0001;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#690001;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff0305;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff0305;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ff0305}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#9c0001;background-color:#f2dede;border-color:#9c0001}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#1c9b47}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#1c9b47}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#1c9b47;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#147033;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #40dd75;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #40dd75;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #40dd75}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#1c9b47;background-color:#dff0d8;border-color:#1c9b47}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#0063ac}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#0063ac}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#0063ac;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#004679;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #139bff;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #139bff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #139bff}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#0063ac;background-color:#d9edf7;border-color:#0063ac}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:25px 20px 26px;margin-top:26px;margin-bottom:26px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:13px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:13px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:17px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:26px;min-width:16px;padding:4px 5px;font-size:17px;font-weight:normal;line-height:26px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#6ce495;border-color:#1c9b47}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:13px}legend+.control-group{margin-top:26px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:26px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:13px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:26px}.table th,.table td{padding:8px;line-height:26px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#f6f6f6}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#f6f6f6;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:12px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:26px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#e2861f;background-image:-moz-linear-gradient(top,#e78b24,#da7e18);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e78b24),to(#da7e18));background-image:-webkit-linear-gradient(top,#e78b24,#da7e18);background-image:-o-linear-gradient(top,#e78b24,#da7e18);background-image:linear-gradient(to bottom,#e78b24,#da7e18);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe78b24',endColorstr='#ffda7e18',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#e2861f;background-image:-moz-linear-gradient(top,#e78b24,#da7e18);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e78b24),to(#da7e18));background-image:-webkit-linear-gradient(top,#e78b24,#da7e18);background-image:-o-linear-gradient(top,#e78b24,#da7e18);background-image:linear-gradient(to bottom,#e78b24,#da7e18);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe78b24',endColorstr='#ffda7e18',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#c3c3c3;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#fefefe;border:1px solid #ececec;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:26px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:17px;line-height:26px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#e9e9e9;*background-color:#e1e1e1;background-image:-moz-linear-gradient(top,#eee,#e1e1e1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#eee),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#eee,#e1e1e1);background-image:-o-linear-gradient(top,#eee,#e1e1e1);background-image:linear-gradient(to bottom,#eee,#e1e1e1);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e1e1e1 #e1e1e1 #bbb;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee',endColorstr='#ffe1e1e1',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e1e1e1;*background-color:#d4d4d4}.btn:active,.btn.active{background-color:#c8c8c8 \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:21.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:14.45px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:12.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#e99232;*background-color:#e78b24;background-image:-moz-linear-gradient(top,#ea973b,#e78b24);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ea973b),to(#e78b24));background-image:-webkit-linear-gradient(top,#ea973b,#e78b24);background-image:-o-linear-gradient(top,#ea973b,#e78b24);background-image:linear-gradient(to bottom,#ea973b,#e78b24);background-repeat:repeat-x;border-color:#e78b24 #e78b24 #ac6413;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffea973b',endColorstr='#ffe78b24',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#e78b24;*background-color:#da7e18}.btn-primary:active,.btn-primary.active{background-color:#c37115 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#f8d91c;*background-color:#f8d60d;background-image:-moz-linear-gradient(top,#f9da26,#f8d60d);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f9da26),to(#f8d60d));background-image:-webkit-linear-gradient(top,#f9da26,#f8d60d);background-image:-o-linear-gradient(top,#f9da26,#f8d60d);background-image:linear-gradient(to bottom,#f9da26,#f8d60d);background-repeat:repeat-x;border-color:#f8d60d #f8d60d #b39a05;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9da26',endColorstr='#fff8d60d',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f8d60d;*background-color:#e5c507}.btn-warning:active,.btn-warning.active{background-color:#ccaf06 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ab0001;*background-color:#9c0001;background-image:-moz-linear-gradient(top,#b60001,#9c0001);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b60001),to(#9c0001));background-image:-webkit-linear-gradient(top,#b60001,#9c0001);background-image:-o-linear-gradient(top,#b60001,#9c0001);background-image:linear-gradient(to bottom,#b60001,#9c0001);background-repeat:repeat-x;border-color:#9c0001 #9c0001 #500001;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb60001',endColorstr='#ff9c0001',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#9c0001;*background-color:#830001}.btn-danger:active,.btn-danger.active{background-color:#690001 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#1ea84d;*background-color:#1c9b47;background-image:-moz-linear-gradient(top,#20b151,#1c9b47);background-image:-webkit-gradient(linear,0 0,0 100%,from(#20b151),to(#1c9b47));background-image:-webkit-linear-gradient(top,#20b151,#1c9b47);background-image:-o-linear-gradient(top,#20b151,#1c9b47);background-image:linear-gradient(to bottom,#20b151,#1c9b47);background-repeat:repeat-x;border-color:#1c9b47 #1c9b47 #105a29;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff20b151',endColorstr='#ff1c9b47',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#1c9b47;*background-color:#18853d}.btn-success:active,.btn-success.active{background-color:#147033 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006cbb;*background-color:#0063ac;background-image:-moz-linear-gradient(top,#0072c6,#0063ac);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0072c6),to(#0063ac));background-image:-webkit-linear-gradient(top,#0072c6,#0063ac);background-image:-o-linear-gradient(top,#0072c6,#0063ac);background-image:linear-gradient(to bottom,#0072c6,#0063ac);background-repeat:repeat-x;border-color:#0063ac #0063ac #003760;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0072c6',endColorstr='#ff0063ac',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#0063ac;*background-color:#005493}.btn-info:active,.btn-info.active{background-color:#004679 \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3b3b3b;*background-color:#333;background-image:-moz-linear-gradient(top,#404040,#333);background-image:-webkit-gradient(linear,0 0,0 100%,from(#404040),to(#333));background-image:-webkit-linear-gradient(top,#404040,#333);background-image:-o-linear-gradient(top,#404040,#333);background-image:linear-gradient(to bottom,#404040,#333);background-repeat:repeat-x;border-color:#333 #333 #0d0d0d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff404040',endColorstr='#ff333333',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#333;*background-color:#262626}.btn-inverse:active,.btn-inverse.active{background-color:#1a1a1a \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#e78b24;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#da7e18;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:13px;margin-bottom:13px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:17px}.btn-group>.btn-mini{font-size:12.75px}.btn-group>.btn-small{font-size:14.45px}.btn-group>.btn-large{font-size:21.25px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e1e1e1}.btn-group.open .btn-primary.dropdown-toggle{background-color:#e78b24}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f8d60d}.btn-group.open .btn-danger.dropdown-toggle{background-color:#9c0001}.btn-group.open .btn-success.dropdown-toggle{background-color:#1c9b47}.btn-group.open .btn-info.dropdown-toggle{background-color:#0063ac}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#333}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:26px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#e78b24}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:26px}.alert-success{color:#1c9b47;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#1c9b47}.alert-danger,.alert-error{color:#9c0001;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#9c0001}.alert-info{color:#0063ac;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#0063ac}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:26px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:26px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#e78b24}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:12px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:26px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#f6f6f6;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#e78b24}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#e78b24;border-bottom-color:#e78b24}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#da7e18;border-bottom-color:#da7e18}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:26px;overflow:visible}.navbar-inner{min-height:60px;padding-right:20px;padding-left:20px;background-color:#f6f6f6;background-image:-moz-linear-gradient(top,#f6f6f6,#f6f6f6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f6f6f6),to(#f6f6f6));background-image:-webkit-linear-gradient(top,#f6f6f6,#f6f6f6);background-image:-o-linear-gradient(top,#f6f6f6,#f6f6f6);background-image:linear-gradient(to bottom,#f6f6f6,#f6f6f6);background-repeat:repeat-x;border:1px solid #d7d7d7;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6',endColorstr='#fff6f6f6',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:17px 20px 17px;margin-left:-20px;font-size:20px;font-weight:200;color:#333;text-shadow:0 1px 0 #f6f6f6}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:60px;color:#333}.navbar-link{color:#333}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:60px;margin:0 9px;border-right:1px solid #f6f6f6;border-left:1px solid #f6f6f6}.navbar .btn,.navbar .btn-group{margin-top:15px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:15px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:15px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:17px 15px 17px;color:#333;text-decoration:none;text-shadow:0 1px 0 #f6f6f6}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#333;text-decoration:none;background-color:#e9e9e9;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#e9e9e9;*background-color:#e9e9e9;background-image:-moz-linear-gradient(top,#e9e9e9,#e9e9e9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e9e9e9),to(#e9e9e9));background-image:-webkit-linear-gradient(top,#e9e9e9,#e9e9e9);background-image:-o-linear-gradient(top,#e9e9e9,#e9e9e9);background-image:linear-gradient(to bottom,#e9e9e9,#e9e9e9);background-repeat:repeat-x;border-color:#e9e9e9 #e9e9e9 #c3c3c3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe9e9e9',endColorstr='#ffe9e9e9',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e9e9e9;*background-color:#dcdcdc}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#d0d0d0 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #f6f6f6;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#333;background-color:#e9e9e9}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#333;background-image:-moz-linear-gradient(top,#333,#333);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#333));background-image:-webkit-linear-gradient(top,#333,#333);background-image:-o-linear-gradient(top,#333,#333);background-image:linear-gradient(to bottom,#333,#333);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff333333',endColorstr='#ff333333',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#333}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#333;border-left-color:#333}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#333}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#737373;border-color:#333;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#262626;*background-color:#262626;background-image:-moz-linear-gradient(top,#262626,#262626);background-image:-webkit-gradient(linear,0 0,0 100%,from(#262626),to(#262626));background-image:-webkit-linear-gradient(top,#262626,#262626);background-image:-o-linear-gradient(top,#262626,#262626);background-image:linear-gradient(to bottom,#262626,#262626);background-repeat:repeat-x;border-color:#262626 #262626 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff262626',endColorstr='#ff262626',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#262626;*background-color:#1a1a1a}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#0d0d0d \9}.breadcrumb{padding:8px 15px;margin:0 0 26px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:26px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:26px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:21.25px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:14.45px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:12.75px}.pager{margin:26px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:26px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:26px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#e78b24;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:14.382px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#9c0001}.label-important[href],.badge-important[href]{background-color:#690001}.label-warning,.badge-warning{background-color:#e78b24}.label-warning[href],.badge-warning[href]{background-color:#c37115}.label-success,.badge-success{background-color:#1c9b47}.label-success[href],.badge-success[href]{background-color:#147033}.label-info,.badge-info{background-color:#0063ac}.label-info[href],.badge-info[href]{background-color:#004679}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:26px;margin-bottom:26px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#eca14d;background-image:-moz-linear-gradient(top,#efb069,#e78b24);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efb069),to(#e78b24));background-image:-webkit-linear-gradient(top,#efb069,#e78b24);background-image:-o-linear-gradient(top,#efb069,#e78b24);background-image:linear-gradient(to bottom,#efb069,#e78b24);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffefb069',endColorstr='#ffe78b24',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#efb069;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:26px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:26px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:26px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:39px;color:inherit;background-color:#fefefe;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:39px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}div.subnav .nav>li>a,div.subnav .nav>.active>a,div.subnav .nav>.active>a:hover{color:#333}div.subnav-fixed{top:61px}.hero-unit h1,.hero-unit h2,.hero-unit h3,.hero-unit h4,.hero-unit h5,.hero-unit h6{margin:13px 0}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_readable/thumbnail.png b/src/main/webapp/static/bootstrap/2.3.1/css_readable/thumbnail.png new file mode 100644 index 0000000..83ce2f0 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/css_readable/thumbnail.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.css new file mode 100644 index 0000000..129709a --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.css @@ -0,0 +1,6326 @@ +/*!@import url(//fonts.googleapis.com/css?family=Ubuntu); + +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: 'Ubuntu', Tahoma, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #dd4814; + text-decoration: none; +} + +a:hover, +a:focus { + color: #97310e; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #eca918; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #c18910; +} + +.text-error { + color: #df382c; +} + +a.text-error:hover, +a.text-error:focus { + color: #bc271c; +} + +.text-info { + color: #772953; +} + +a.text-info:hover, +a.text-info:focus { + color: #511c39; +} + +.text-success { + color: #38b44a; +} + +a.text-success:hover, +a.text-success:focus { + color: #2c8d3a; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #f5f5f5; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #f5f5f5; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #f5f5f5; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #f5f5f5; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: 'Ubuntu', Tahoma, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #f5f5f5; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #eca918; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #eca918; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #eca918; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #c18910; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f4cc76; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f4cc76; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f4cc76; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #eca918; + background-color: #fcefd4; + border-color: #eca918; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #df382c; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #df382c; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #df382c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #bc271c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ec8c85; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ec8c85; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ec8c85; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #df382c; + background-color: #fadfdd; + border-color: #df382c; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #38b44a; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #38b44a; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #38b44a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #2c8d3a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7cd689; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7cd689; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7cd689; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #38b44a; + background-color: #caeecf; + border-color: #38b44a; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #772953; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #772953; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #772953; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #511c39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #bf4788; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #bf4788; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #bf4788; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #772953; + background-color: #e7b8d1; + border-color: #772953; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: transparent; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a3e2ac; + border-color: #38b44a; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #caeecf; +} + +.table tbody tr.error > td { + background-color: #fadfdd; +} + +.table tbody tr.warning > td { + background-color: #fcefd4; +} + +.table tbody tr.info > td { + background-color: #e7b8d1; +} + +.table-hover tbody tr.success:hover > td { + background-color: #b6e8bd; +} + +.table-hover tbody tr.error:hover > td { + background-color: #f7cac7; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #fae6bd; +} + +.table-hover tbody tr.info:hover > td { + background-color: #e0a5c5; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #dd4814; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #d44513; + background-image: -moz-linear-gradient(top, #dd4814, #c64012); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4814), to(#c64012)); + background-image: -webkit-linear-gradient(top, #dd4814, #c64012); + background-image: -o-linear-gradient(top, #dd4814, #c64012); + background-image: linear-gradient(to bottom, #dd4814, #c64012); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814', endColorstr='#ffc64012', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #d44513; + background-image: -moz-linear-gradient(top, #dd4814, #c64012); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4814), to(#c64012)); + background-image: -webkit-linear-gradient(top, #dd4814, #c64012); + background-image: -o-linear-gradient(top, #dd4814, #c64012); + background-image: linear-gradient(to bottom, #dd4814, #c64012); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814', endColorstr='#ffc64012', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #dd5c14; + *background-color: #dd7a14; + background-image: -moz-linear-gradient(top, #dd4814, #dd7a14); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4814), to(#dd7a14)); + background-image: -webkit-linear-gradient(top, #dd4814, #dd7a14); + background-image: -o-linear-gradient(top, #dd4814, #dd7a14); + background-image: linear-gradient(to bottom, #dd4814, #dd7a14); + background-repeat: repeat-x; + border-color: #dd7a14 #dd7a14 #97530e; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814', endColorstr='#ffdd7a14', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #dd7a14; + *background-color: #c66d12; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #ae6010 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #e86537; + *background-color: #dd4814; + background-image: -moz-linear-gradient(top, #ef784e, #dd4814); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ef784e), to(#dd4814)); + background-image: -webkit-linear-gradient(top, #ef784e, #dd4814); + background-image: -o-linear-gradient(top, #ef784e, #dd4814); + background-image: linear-gradient(to bottom, #ef784e, #dd4814); + background-repeat: repeat-x; + border-color: #dd4814 #dd4814 #97310e; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e', endColorstr='#ffdd4814', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #dd4814; + *background-color: #c64012; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #ae3910 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #99356b; + *background-color: #772953; + background-image: -moz-linear-gradient(top, #b03d7b, #772953); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b03d7b), to(#772953)); + background-image: -webkit-linear-gradient(top, #b03d7b, #772953); + background-image: -o-linear-gradient(top, #b03d7b, #772953); + background-image: linear-gradient(to bottom, #b03d7b, #772953); + background-repeat: repeat-x; + border-color: #772953 #772953 #3e152b; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb03d7b', endColorstr='#ff772953', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #772953; + *background-color: #642246; +} + +.btn-info:active, +.btn-info.active { + background-color: #511c39 \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #414141; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #555555, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); + background-image: -webkit-linear-gradient(top, #555555, #222222); + background-image: -o-linear-gradient(top, #555555, #222222); + background-image: linear-gradient(to bottom, #555555, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #dd4814; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #97310e; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #dd7a14; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #dd4814; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #772953; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcefd4; + border: 1px solid #fae1c6; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #eca918; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #38b44a; + background-color: #caeecf; + border-color: #b7e8b6; +} + +.alert-success h4 { + color: #38b44a; +} + +.alert-danger, +.alert-error { + color: #df382c; + background-color: #fadfdd; + border-color: #f8d0d4; +} + +.alert-danger h4, +.alert-error h4 { + color: #df382c; +} + +.alert-info { + color: #772953; + background-color: #e7b8d1; + border-color: #de9ecb; +} + +.alert-info h4 { + color: #772953; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #dd4814; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #f5f5f5 #f5f5f5 #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #dd4814; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #dd4814; + border-bottom-color: #dd4814; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #97310e; + border-bottom-color: #97310e; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #f5f5f5 #dddddd #f5f5f5 #f5f5f5; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #f5f5f5 #f5f5f5 #f5f5f5 #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #d44413; + background-image: -moz-linear-gradient(top, #ce4213, #dd4814); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ce4213), to(#dd4814)); + background-image: -webkit-linear-gradient(top, #ce4213, #dd4814); + background-image: -o-linear-gradient(top, #ce4213, #dd4814); + background-image: linear-gradient(to bottom, #ce4213, #dd4814); + background-repeat: repeat-x; + border: 1px solid #c64012; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffce4213', endColorstr='#ffdd4814', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #ffffff; + text-shadow: 0 1px 0 #ce4213; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #ffffff; +} + +.navbar-link { + color: #ffffff; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #ffffff; +} + +.navbar .divider-vertical { + height: 53px; + margin: 0 9px; + border-right: 1px solid #ce4213; + border-left: 1px solid #dd4814; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: 'Ubuntu', Tahoma, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; + padding-top:33px; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 16px 10px 14px; + color: #ffffff; + text-decoration: none; + text-shadow: 0 1px 0 #ce4213; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #1a99e2; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #2fa4e7; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #bd3d11; + *background-color: #c64012; + background-image: -moz-linear-gradient(top, #b73b11, #c64012); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b73b11), to(#c64012)); + background-image: -webkit-linear-gradient(top, #b73b11, #c64012); + background-image: -o-linear-gradient(top, #b73b11, #c64012); + background-image: linear-gradient(to bottom, #b73b11, #c64012); + background-repeat: repeat-x; + border-color: #c64012 #c64012 #7f2a0c; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb73b11', endColorstr='#ffc64012', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #c64012; + *background-color: #ae3910; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #97310e \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #a5360f; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #802c59; + background-image: -moz-linear-gradient(top, #862e5e, #772953); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#862e5e), to(#772953)); + background-image: -webkit-linear-gradient(top, #862e5e, #772953); + background-image: -o-linear-gradient(top, #862e5e, #772953); + background-image: linear-gradient(to bottom, #862e5e, #772953); + background-repeat: repeat-x; + border-color: #642246; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff862e5e', endColorstr='#ff772953', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #ffffff; +} + +.navbar-inverse .navbar-text { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: #591f3e; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #591f3e; +} + +.navbar-inverse .navbar-link { + color: #ffffff; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #862e5e; + border-left-color: #772953; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #591f3e; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #c65a94; + border-color: #772953; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #eeeeee; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #eeeeee; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #eeeeee; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #6d264c; + *background-color: #642246; + background-image: -moz-linear-gradient(top, #732850, #642246); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#732850), to(#642246)); + background-image: -webkit-linear-gradient(top, #732850, #642246); + background-image: -o-linear-gradient(top, #732850, #642246); + background-image: linear-gradient(to bottom, #732850, #642246); + background-repeat: repeat-x; + border-color: #642246 #642246 #2b0f1e; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff732850', endColorstr='#ff642246', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #642246; + *background-color: #511c39; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #3e152b \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #dd4814; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #df382c; +} + +.label-important[href], +.badge-important[href] { + background-color: #bc271c; +} + +.label-warning, +.badge-warning { + background-color: #dd4814; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #ae3910; +} + +.label-success, +.badge-success { + background-color: #38b44a; +} + +.label-success[href], +.badge-success[href] { + background-color: #2c8d3a; +} + +.label-info, +.badge-info { + background-color: #772953; +} + +.label-info[href], +.badge-info[href] { + background-color: #511c39; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #e86537; + background-image: -moz-linear-gradient(top, #ef784e, #dd4814); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ef784e), to(#dd4814)); + background-image: -webkit-linear-gradient(top, #ef784e, #dd4814); + background-image: -o-linear-gradient(top, #ef784e, #dd4814); + background-image: linear-gradient(to bottom, #ef784e, #dd4814); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e', endColorstr='#ffdd4814', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #ef784e; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #f5f5f5; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.navbar .nav > li > a { + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(255, 255, 255, 0.1); +} + +.navbar .nav > li > a:hover { + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover { + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +.navbar .divider-vertical { + background-color: inherit; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} + +.navbar .navbar-text { + padding: 9px 10px 11px; + line-height: 19px; + color: #ffffff; +} + +.navbar .navbar-search .search-query { + margin-bottom: 3px; + border: 1px solid #97310e; +} + +@media (max-width: 979px) { + .navbar .nav-collapse .nav li > a { + color: #ffffff; + border-right: 0px solid #dd4814; + border-left: 0px solid #dd4814; + } + .navbar .nav-collapse .nav li > a:hover { + background-color: rgba(0, 0, 0, 0.3) !important; + background-image: none; + } + .navbar .nav-collapse .navbar-form, + .navbar .nav-collapse .navbar-search { + border-top: 0px solid #dd4814; + border-bottom: 0px solid #dd4814; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .navbar .nav-collapse .nav-header { + color: #f5f5f5; + } +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + border-right: 1px solid #C03D14; + border-left: 1px solid #E6633A; +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #e86537; + *background-color: #dd4814; + background-image: -moz-linear-gradient(top, #ef784e, #dd4814); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ef784e), to(#dd4814)); + background-image: -webkit-linear-gradient(top, #ef784e, #dd4814); + background-image: -o-linear-gradient(top, #ef784e, #dd4814); + background-image: linear-gradient(to bottom, #ef784e, #dd4814); + background-repeat: repeat-x; + border-color: #dd4814 #dd4814 #97310e; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e', endColorstr='#ffdd4814', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #dd4814; + *background-color: #c64012; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #ae3910 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #f3c768; + *background-color: #efb73e; + background-image: -moz-linear-gradient(top, #f5d185, #efb73e); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5d185), to(#efb73e)); + background-image: -webkit-linear-gradient(top, #f5d185, #efb73e); + background-image: -o-linear-gradient(top, #f5d185, #efb73e); + background-image: linear-gradient(to bottom, #f5d185, #efb73e); + background-repeat: repeat-x; + border-color: #efb73e #efb73e #cf9311; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5d185', endColorstr='#ffefb73e', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #efb73e; + *background-color: #edae26; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #e7a413 \9; +} + +.alert { + text-shadow: none; +} + +.hero-unit { + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.hero-unit h1 { + line-height: 1.6em; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.min.css b/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.min.css new file mode 100644 index 0000000..a060df8 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/css_united/bootstrap.min.css @@ -0,0 +1,9 @@ +/*!@import url(//fonts.googleapis.com/css?family=Ubuntu);/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:'Ubuntu',Tahoma,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#dd4814;text-decoration:none}a:hover,a:focus{color:#97310e;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#eca918}a.text-warning:hover,a.text-warning:focus{color:#c18910}.text-error{color:#df382c}a.text-error:hover,a.text-error:focus{color:#bc271c}.text-info{color:#772953}a.text-info:hover,a.text-info:focus{color:#511c39}.text-success{color:#38b44a}a.text-success:hover,a.text-success:focus{color:#2c8d3a}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #f5f5f5}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #f5f5f5;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #f5f5f5}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #f5f5f5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:'Ubuntu',Tahoma,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#f5f5f5}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#eca918}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#eca918}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#eca918;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#c18910;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f4cc76;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f4cc76;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f4cc76}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#eca918;background-color:#fcefd4;border-color:#eca918}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#df382c}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#df382c}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#df382c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#bc271c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ec8c85;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ec8c85;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ec8c85}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#df382c;background-color:#fadfdd;border-color:#df382c}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#38b44a}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#38b44a}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#38b44a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#2c8d3a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7cd689;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7cd689;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7cd689}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#38b44a;background-color:#caeecf;border-color:#38b44a}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#772953}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#772953}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#772953;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#511c39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #bf4788;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #bf4788;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #bf4788}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#772953;background-color:#e7b8d1;border-color:#772953}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:transparent;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a3e2ac;border-color:#38b44a}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#caeecf}.table tbody tr.error>td{background-color:#fadfdd}.table tbody tr.warning>td{background-color:#fcefd4}.table tbody tr.info>td{background-color:#e7b8d1}.table-hover tbody tr.success:hover>td{background-color:#b6e8bd}.table-hover tbody tr.error:hover>td{background-color:#f7cac7}.table-hover tbody tr.warning:hover>td{background-color:#fae6bd}.table-hover tbody tr.info:hover>td{background-color:#e0a5c5}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#dd4814;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#d44513;background-image:-moz-linear-gradient(top,#dd4814,#c64012);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd4814),to(#c64012));background-image:-webkit-linear-gradient(top,#dd4814,#c64012);background-image:-o-linear-gradient(top,#dd4814,#c64012);background-image:linear-gradient(to bottom,#dd4814,#c64012);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814',endColorstr='#ffc64012',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#d44513;background-image:-moz-linear-gradient(top,#dd4814,#c64012);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd4814),to(#c64012));background-image:-webkit-linear-gradient(top,#dd4814,#c64012);background-image:-o-linear-gradient(top,#dd4814,#c64012);background-image:linear-gradient(to bottom,#dd4814,#c64012);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814',endColorstr='#ffc64012',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#dd5c14;*background-color:#dd7a14;background-image:-moz-linear-gradient(top,#dd4814,#dd7a14);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd4814),to(#dd7a14));background-image:-webkit-linear-gradient(top,#dd4814,#dd7a14);background-image:-o-linear-gradient(top,#dd4814,#dd7a14);background-image:linear-gradient(to bottom,#dd4814,#dd7a14);background-repeat:repeat-x;border-color:#dd7a14 #dd7a14 #97530e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4814',endColorstr='#ffdd7a14',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#dd7a14;*background-color:#c66d12}.btn-primary:active,.btn-primary.active{background-color:#ae6010 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#e86537;*background-color:#dd4814;background-image:-moz-linear-gradient(top,#ef784e,#dd4814);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ef784e),to(#dd4814));background-image:-webkit-linear-gradient(top,#ef784e,#dd4814);background-image:-o-linear-gradient(top,#ef784e,#dd4814);background-image:linear-gradient(to bottom,#ef784e,#dd4814);background-repeat:repeat-x;border-color:#dd4814 #dd4814 #97310e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e',endColorstr='#ffdd4814',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#dd4814;*background-color:#c64012}.btn-warning:active,.btn-warning.active{background-color:#ae3910 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#99356b;*background-color:#772953;background-image:-moz-linear-gradient(top,#b03d7b,#772953);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b03d7b),to(#772953));background-image:-webkit-linear-gradient(top,#b03d7b,#772953);background-image:-o-linear-gradient(top,#b03d7b,#772953);background-image:linear-gradient(to bottom,#b03d7b,#772953);background-repeat:repeat-x;border-color:#772953 #772953 #3e152b;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb03d7b',endColorstr='#ff772953',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#772953;*background-color:#642246}.btn-info:active,.btn-info.active{background-color:#511c39 \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#414141;*background-color:#222;background-image:-moz-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:linear-gradient(to bottom,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#dd4814;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#97310e;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#dd7a14}.btn-group.open .btn-warning.dropdown-toggle{background-color:#dd4814}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#772953}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcefd4;border:1px solid #fae1c6;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#eca918}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#38b44a;background-color:#caeecf;border-color:#b7e8b6}.alert-success h4{color:#38b44a}.alert-danger,.alert-error{color:#df382c;background-color:#fadfdd;border-color:#f8d0d4}.alert-danger h4,.alert-error h4{color:#df382c}.alert-info{color:#772953;background-color:#e7b8d1;border-color:#de9ecb}.alert-info h4{color:#772953}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f5f5f5}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#dd4814}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#f5f5f5 #f5f5f5 #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#dd4814}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#dd4814;border-bottom-color:#dd4814}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#97310e;border-bottom-color:#97310e}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#f5f5f5 #ddd #f5f5f5 #f5f5f5}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#f5f5f5 #f5f5f5 #f5f5f5 #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#d44413;background-image:-moz-linear-gradient(top,#ce4213,#dd4814);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ce4213),to(#dd4814));background-image:-webkit-linear-gradient(top,#ce4213,#dd4814);background-image:-o-linear-gradient(top,#ce4213,#dd4814);background-image:linear-gradient(to bottom,#ce4213,#dd4814);background-repeat:repeat-x;border:1px solid #c64012;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffce4213',endColorstr='#ffdd4814',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#fff;text-shadow:0 1px 0 #ce4213}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#fff}.navbar-link{color:#fff}.navbar-link:hover,.navbar-link:focus{color:#fff}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #ce4213;border-left:1px solid #dd4814}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:'Ubuntu',Tahoma,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#fff;text-decoration:none;text-shadow:0 1px 0 #ce4213}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:#a5360f}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#fff;text-decoration:none;background-color:#a5360f;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#bd3d11;*background-color:#c64012;background-image:-moz-linear-gradient(top,#b73b11,#c64012);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b73b11),to(#c64012));background-image:-webkit-linear-gradient(top,#b73b11,#c64012);background-image:-o-linear-gradient(top,#b73b11,#c64012);background-image:linear-gradient(to bottom,#b73b11,#c64012);background-repeat:repeat-x;border-color:#c64012 #c64012 #7f2a0c;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb73b11',endColorstr='#ffc64012',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#c64012;*background-color:#ae3910}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#97310e \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#a5360f}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#802c59;background-image:-moz-linear-gradient(top,#862e5e,#772953);background-image:-webkit-gradient(linear,0 0,0 100%,from(#862e5e),to(#772953));background-image:-webkit-linear-gradient(top,#862e5e,#772953);background-image:-o-linear-gradient(top,#862e5e,#772953);background-image:linear-gradient(to bottom,#862e5e,#772953);background-repeat:repeat-x;border-color:#642246;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff862e5e',endColorstr='#ff772953',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#fff}.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:#591f3e}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#591f3e}.navbar-inverse .navbar-link{color:#fff}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#862e5e;border-left-color:#772953}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#591f3e}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#c65a94;border-color:#772953;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#eee}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#eee}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#eee}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#6d264c;*background-color:#642246;background-image:-moz-linear-gradient(top,#732850,#642246);background-image:-webkit-gradient(linear,0 0,0 100%,from(#732850),to(#642246));background-image:-webkit-linear-gradient(top,#732850,#642246);background-image:-o-linear-gradient(top,#732850,#642246);background-image:linear-gradient(to bottom,#732850,#642246);background-repeat:repeat-x;border-color:#642246 #642246 #2b0f1e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff732850',endColorstr='#ff642246',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#642246;*background-color:#511c39}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#3e152b \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#dd4814;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#df382c}.label-important[href],.badge-important[href]{background-color:#bc271c}.label-warning,.badge-warning{background-color:#dd4814}.label-warning[href],.badge-warning[href]{background-color:#ae3910}.label-success,.badge-success{background-color:#38b44a}.label-success[href],.badge-success[href]{background-color:#2c8d3a}.label-info,.badge-info{background-color:#772953}.label-info[href],.badge-info[href]{background-color:#511c39}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#e86537;background-image:-moz-linear-gradient(top,#ef784e,#dd4814);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ef784e),to(#dd4814));background-image:-webkit-linear-gradient(top,#ef784e,#dd4814);background-image:-o-linear-gradient(top,#ef784e,#dd4814);background-image:linear-gradient(to bottom,#ef784e,#dd4814);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e',endColorstr='#ffdd4814',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#ef784e;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}.navbar .nav>li>a{border-right:1px solid rgba(0,0,0,0.2);border-left:1px solid rgba(255,255,255,0.1)}.navbar .nav>li>a:hover{border-left:1px solid rgba(0,0,0,0.2)}.navbar .nav>.active>a,.navbar .nav>.active>a:hover{border-left:1px solid rgba(0,0,0,0.2)}.navbar .divider-vertical{background-color:inherit;border-right:1px solid rgba(0,0,0,0.2)}.navbar .navbar-text{padding:9px 10px 11px;line-height:19px;color:#fff}.navbar .navbar-search .search-query{margin-bottom:3px;border:1px solid #97310e}@media(max-width:979px){.navbar .nav-collapse .nav li>a{color:#fff;border-right:0 solid #dd4814;border-left:0 solid #dd4814}.navbar .nav-collapse .nav li>a:hover{background-color:rgba(0,0,0,0.3)!important;background-image:none}.navbar .nav-collapse .navbar-form,.navbar .nav-collapse .navbar-search{border-top:0 solid #dd4814;border-bottom:0 solid #dd4814;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.navbar .nav-collapse .nav-header{color:#f5f5f5}}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{border-right:1px solid #c03d14;border-left:1px solid #e6633a}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#e86537;*background-color:#dd4814;background-image:-moz-linear-gradient(top,#ef784e,#dd4814);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ef784e),to(#dd4814));background-image:-webkit-linear-gradient(top,#ef784e,#dd4814);background-image:-o-linear-gradient(top,#ef784e,#dd4814);background-image:linear-gradient(to bottom,#ef784e,#dd4814);background-repeat:repeat-x;border-color:#dd4814 #dd4814 #97310e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffef784e',endColorstr='#ffdd4814',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#dd4814;*background-color:#c64012}.btn-primary:active,.btn-primary.active{background-color:#ae3910 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#f3c768;*background-color:#efb73e;background-image:-moz-linear-gradient(top,#f5d185,#efb73e);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5d185),to(#efb73e));background-image:-webkit-linear-gradient(top,#f5d185,#efb73e);background-image:-o-linear-gradient(top,#f5d185,#efb73e);background-image:linear-gradient(to bottom,#f5d185,#efb73e);background-repeat:repeat-x;border-color:#efb73e #efb73e #cf9311;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5d185',endColorstr='#ffefb73e',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#efb73e;*background-color:#edae26}.btn-warning:active,.btn-warning.active{background-color:#e7a413 \9}.alert{text-shadow:none}.hero-unit{border:1px solid rgba(0,0,0,0.05);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.hero-unit h1{line-height:1.6em}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/css_united/thumbnail.png b/src/main/webapp/static/bootstrap/2.3.1/css_united/thumbnail.png new file mode 100644 index 0000000..d3a8377 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/css_united/thumbnail.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap-responsive.css b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap-responsive.css new file mode 100644 index 0000000..fcd72f7 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap-responsive.css @@ -0,0 +1,1109 @@ +/*! + * Bootstrap Responsive v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@-ms-viewport { + width: device-width; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap.css b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap.css new file mode 100644 index 0000000..2f56af3 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/bootstrap.css @@ -0,0 +1,6158 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/docs.css b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/docs.css new file mode 100644 index 0000000..af65540 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/css/docs.css @@ -0,0 +1,1067 @@ +/* Add additional stylesheets below +-------------------------------------------------- */ +/* + Bootstrap's documentation styles + Special styles for presenting Bootstrap's documentation and examples +*/ + + + +/* Body and structure +-------------------------------------------------- */ + +body { + position: relative; + padding-top: 40px; +} + +/* Code in headings */ +h3 code { + font-size: 14px; + font-weight: normal; +} + + + +/* Tweak navbar brand link to be super sleek +-------------------------------------------------- */ + +body > .navbar { + font-size: 13px; +} + +/* Change the docs' brand */ +body > .navbar .brand { + padding-right: 0; + padding-left: 0; + margin-left: 20px; + float: right; + font-weight: bold; + color: #000; + text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125); + -webkit-transition: all .2s linear; + -moz-transition: all .2s linear; + transition: all .2s linear; +} +body > .navbar .brand:hover { + text-decoration: none; + text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.4); +} + + +/* Sections +-------------------------------------------------- */ + +/* padding for in-page bookmarks and fixed navbar */ +section { + padding-top: 30px; +} +section > .page-header, +section > .lead { + color: #5a5a5a; +} +section > ul li { + margin-bottom: 5px; +} + +/* Separators (hr) */ +.bs-docs-separator { + margin: 40px 0 39px; +} + +/* Faded out hr */ +hr.soften { + height: 1px; + margin: 70px 0; + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0)); + background-image: -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0)); + background-image: -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0)); + border: 0; +} + + + +/* Jumbotrons +-------------------------------------------------- */ + +/* Base class +------------------------- */ +.jumbotron { + position: relative; + padding: 40px 0; + color: #fff; + text-align: center; + text-shadow: 0 1px 3px rgba(0,0,0,.4), 0 0 30px rgba(0,0,0,.075); + background: #020031; /* Old browsers */ + background: -moz-linear-gradient(45deg, #020031 0%, #6d3353 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#020031), color-stop(100%,#6d3353)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(45deg, #020031 0%,#6d3353 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(45deg, #020031 0%,#6d3353 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(45deg, #020031 0%,#6d3353 100%); /* IE10+ */ + background: linear-gradient(45deg, #020031 0%,#6d3353 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#020031', endColorstr='#6d3353',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ + -webkit-box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2); + -moz-box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2); + box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2); +} +.jumbotron h1 { + font-size: 80px; + font-weight: bold; + letter-spacing: -1px; + line-height: 1; +} +.jumbotron p { + font-size: 24px; + font-weight: 300; + line-height: 1.25; + margin-bottom: 30px; +} + +/* Link styles (used on .masthead-links as well) */ +.jumbotron a { + color: #fff; + color: rgba(255,255,255,.5); + -webkit-transition: all .2s ease-in-out; + -moz-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.jumbotron a:hover { + color: #fff; + text-shadow: 0 0 10px rgba(255,255,255,.25); +} + +/* Download button */ +.masthead .btn { + padding: 19px 24px; + font-size: 24px; + font-weight: 200; + color: #fff; /* redeclare to override the `.jumbotron a` */ + border: 0; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); + -webkit-transition: none; + -moz-transition: none; + transition: none; +} +.masthead .btn:hover { + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25); +} +.masthead .btn:active { + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1); +} + + +/* Pattern overlay +------------------------- */ +.jumbotron .container { + position: relative; + z-index: 2; +} +.jumbotron:after { + content: ''; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: url(../img/bs-docs-masthead-pattern.png) repeat center center; + opacity: .4; +} +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and ( min--moz-device-pixel-ratio: 2), +only screen and ( -o-min-device-pixel-ratio: 2/1) { + + .jumbotron:after { + background-size: 150px 150px; + } + +} + +/* Masthead (docs home) +------------------------- */ +.masthead { + padding: 70px 0 80px; + margin-bottom: 0; + color: #fff; +} +.masthead h1 { + font-size: 120px; + line-height: 1; + letter-spacing: -2px; +} +.masthead p { + font-size: 40px; + font-weight: 200; + line-height: 1.25; +} + +/* Textual links in masthead */ +.masthead-links { + margin: 0; + list-style: none; +} +.masthead-links li { + display: inline; + padding: 0 10px; + color: rgba(255,255,255,.25); +} + +/* Social proof buttons from GitHub & Twitter */ +.bs-docs-social { + padding: 15px 0; + text-align: center; + background-color: #f5f5f5; + border-top: 1px solid #fff; + border-bottom: 1px solid #ddd; +} + +/* Quick links on Home */ +.bs-docs-social-buttons { + margin-left: 0; + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.bs-docs-social-buttons li { + display: inline-block; + padding: 5px 8px; + line-height: 1; + *display: inline; + *zoom: 1; +} + +/* Subhead (other pages) +------------------------- */ +.subhead { + text-align: left; + border-bottom: 1px solid #ddd; +} +.subhead h1 { + font-size: 60px; +} +.subhead p { + margin-bottom: 20px; +} +.subhead .navbar { + display: none; +} + + + +/* Marketing section of Overview +-------------------------------------------------- */ + +.marketing { + text-align: center; + color: #5a5a5a; +} +.marketing h1 { + margin: 60px 0 10px; + font-size: 60px; + font-weight: 200; + line-height: 1; + letter-spacing: -1px; +} +.marketing h2 { + font-weight: 200; + margin-bottom: 5px; +} +.marketing p { + font-size: 16px; + line-height: 1.5; +} +.marketing .marketing-byline { + margin-bottom: 40px; + font-size: 20px; + font-weight: 300; + line-height: 1.25; + color: #999; +} +.marketing-img { + display: block; + margin: 0 auto 30px; + max-height: 145px; +} + + + +/* Footer +-------------------------------------------------- */ + +.footer { + text-align: center; + padding: 30px 0; + margin-top: 70px; + border-top: 1px solid #e5e5e5; + background-color: #f5f5f5; +} +.footer p { + margin-bottom: 0; + color: #777; +} +.footer-links { + margin: 10px 0; +} +.footer-links li { + display: inline; + padding: 0 2px; +} +.footer-links li:first-child { + padding-left: 0; +} + + + +/* Special grid styles +-------------------------------------------------- */ + +.show-grid { + margin-top: 10px; + margin-bottom: 20px; +} +.show-grid [class*="span"] { + background-color: #eee; + text-align: center; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + min-height: 40px; + line-height: 40px; +} +.show-grid [class*="span"]:hover { + background-color: #ddd; +} +.show-grid .show-grid { + margin-top: 0; + margin-bottom: 0; +} +.show-grid .show-grid [class*="span"] { + margin-top: 5px; +} +.show-grid [class*="span"] [class*="span"] { + background-color: #ccc; +} +.show-grid [class*="span"] [class*="span"] [class*="span"] { + background-color: #999; +} + + + +/* Mini layout previews +-------------------------------------------------- */ +.mini-layout { + border: 1px solid #ddd; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.075); + box-shadow: 0 1px 2px rgba(0,0,0,.075); +} +.mini-layout, +.mini-layout .mini-layout-body, +.mini-layout.fluid .mini-layout-sidebar { + height: 300px; +} +.mini-layout { + margin-bottom: 20px; + padding: 9px; +} +.mini-layout div { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.mini-layout .mini-layout-body { + background-color: #dceaf4; + margin: 0 auto; + width: 70%; +} +.mini-layout.fluid .mini-layout-sidebar, +.mini-layout.fluid .mini-layout-header, +.mini-layout.fluid .mini-layout-body { + float: left; +} +.mini-layout.fluid .mini-layout-sidebar { + background-color: #bbd8e9; + width: 20%; +} +.mini-layout.fluid .mini-layout-body { + width: 77.5%; + margin-left: 2.5%; +} + + + +/* Download page +-------------------------------------------------- */ + +.download .page-header { + margin-top: 36px; +} +.page-header .toggle-all { + margin-top: 5px; +} + +/* Space out h3s when following a section */ +.download h3 { + margin-bottom: 5px; +} +.download-builder input + h3, +.download-builder .checkbox + h3 { + margin-top: 9px; +} + +/* Fields for variables */ +.download-builder input[type=text] { + margin-bottom: 9px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #d14; +} +.download-builder input[type=text]:focus { + background-color: #fff; +} + +/* Custom, larger checkbox labels */ +.download .checkbox { + padding: 6px 10px 6px 25px; + font-size: 13px; + line-height: 18px; + color: #555; + background-color: #f9f9f9; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} +.download .checkbox:hover { + color: #333; + background-color: #f5f5f5; +} +.download .checkbox small { + font-size: 12px; + color: #777; +} + +/* Variables section */ +#variables label { + margin-bottom: 0; +} + +/* Giant download button */ +.download-btn { + margin: 36px 0 108px; +} +#download p, +#download h4 { + max-width: 50%; + margin: 0 auto; + color: #999; + text-align: center; +} +#download h4 { + margin-bottom: 0; +} +#download p { + margin-bottom: 18px; +} +.download-btn .btn { + display: block; + width: auto; + padding: 19px 24px; + margin-bottom: 27px; + font-size: 30px; + line-height: 1; + text-align: center; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + + + +/* Misc +-------------------------------------------------- */ + +/* Make tables spaced out a bit more */ +h2 + table, +h3 + table, +h4 + table, +h2 + .row { + margin-top: 5px; +} + +/* Example sites showcase */ +.example-sites { + xmargin-left: 20px; +} +.example-sites img { + max-width: 100%; + margin: 0 auto; +} + +.scrollspy-example { + height: 200px; + overflow: auto; + position: relative; +} + + +/* Fake the :focus state to demo it */ +.focused { + border-color: rgba(82,168,236,.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6); + box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6); + outline: 0; +} + +/* For input sizes, make them display block */ +.docs-input-sizes select, +.docs-input-sizes input[type=text] { + display: block; + margin-bottom: 9px; +} + +/* Icons +------------------------- */ +.the-icons { + margin-left: 0; + list-style: none; +} +.the-icons li { + float: left; + width: 25%; + line-height: 25px; +} +.the-icons i:hover { + background-color: rgba(255,0,0,.25); +} + +/* Example page +------------------------- */ +.bootstrap-examples h4 { + margin: 10px 0 5px; +} +.bootstrap-examples p { + font-size: 13px; + line-height: 18px; +} +.bootstrap-examples .thumbnail { + margin-bottom: 9px; + background-color: #fff; +} + + + +/* Bootstrap code examples +-------------------------------------------------- */ + +/* Base class */ +.bs-docs-example { + position: relative; + margin: 15px 0; + padding: 39px 19px 14px; + *padding-top: 19px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +/* Echo out a label for the example */ +.bs-docs-example:after { + content: "Example"; + position: absolute; + top: -1px; + left: -1px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + background-color: #f5f5f5; + border: 1px solid #ddd; + color: #9da0a4; + -webkit-border-radius: 4px 0 4px 0; + -moz-border-radius: 4px 0 4px 0; + border-radius: 4px 0 4px 0; +} + +/* Remove spacing between an example and it's code */ +.bs-docs-example + .prettyprint { + margin-top: -20px; + padding-top: 15px; +} + +/* Tweak examples +------------------------- */ +.bs-docs-example > p:last-child { + margin-bottom: 0; +} +.bs-docs-example .table, +.bs-docs-example .progress, +.bs-docs-example .well, +.bs-docs-example .alert, +.bs-docs-example .hero-unit, +.bs-docs-example .pagination, +.bs-docs-example .navbar, +.bs-docs-example > .nav, +.bs-docs-example blockquote { + margin-bottom: 5px; +} +.bs-docs-example .pagination { + margin-top: 0; +} +.bs-navbar-top-example, +.bs-navbar-bottom-example { + z-index: 1; + padding: 0; + height: 90px; + overflow: hidden; /* cut the drop shadows off */ +} +.bs-navbar-top-example .navbar-fixed-top, +.bs-navbar-bottom-example .navbar-fixed-bottom { + margin-left: 0; + margin-right: 0; +} +.bs-navbar-top-example { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.bs-navbar-top-example:after { + top: auto; + bottom: -1px; + -webkit-border-radius: 0 4px 0 4px; + -moz-border-radius: 0 4px 0 4px; + border-radius: 0 4px 0 4px; +} +.bs-navbar-bottom-example { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.bs-navbar-bottom-example .navbar { + margin-bottom: 0; +} +form.bs-docs-example { + padding-bottom: 19px; +} + +/* Images */ +.bs-docs-example-images img { + margin: 10px; + display: inline-block; +} + +/* Tooltips */ +.bs-docs-tooltip-examples { + text-align: center; + margin: 0 0 10px; + list-style: none; +} +.bs-docs-tooltip-examples li { + display: inline; + padding: 0 10px; +} + +/* Popovers */ +.bs-docs-example-popover { + padding-bottom: 24px; + background-color: #f9f9f9; +} +.bs-docs-example-popover .popover { + position: relative; + display: block; + float: left; + width: 260px; + margin: 20px; +} + +/* Dropdowns */ +.bs-docs-example-submenus { + min-height: 180px; +} +.bs-docs-example-submenus > .pull-left + .pull-left { + margin-left: 20px; +} +.bs-docs-example-submenus .dropup > .dropdown-menu, +.bs-docs-example-submenus .dropdown > .dropdown-menu { + display: block; + position: static; + margin-bottom: 5px; + *width: 180px; +} + + + +/* Responsive docs +-------------------------------------------------- */ + +/* Utility classes table +------------------------- */ +.responsive-utilities th small { + display: block; + font-weight: normal; + color: #999; +} +.responsive-utilities tbody th { + font-weight: normal; +} +.responsive-utilities td { + text-align: center; +} +.responsive-utilities td.is-visible { + color: #468847; + background-color: #dff0d8 !important; +} +.responsive-utilities td.is-hidden { + color: #ccc; + background-color: #f9f9f9 !important; +} + +/* Responsive tests +------------------------- */ +.responsive-utilities-test { + margin-top: 5px; + margin-left: 0; + list-style: none; + overflow: hidden; /* clear floats */ +} +.responsive-utilities-test li { + position: relative; + float: left; + width: 25%; + height: 43px; + font-size: 14px; + font-weight: bold; + line-height: 43px; + color: #999; + text-align: center; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.responsive-utilities-test li + li { + margin-left: 10px; +} +.responsive-utilities-test span { + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.responsive-utilities-test span { + color: #468847; + background-color: #dff0d8; + border: 1px solid #d6e9c6; +} + + + +/* Sidenav for Docs +-------------------------------------------------- */ + +.bs-docs-sidenav { + width: 228px; + margin: 30px 0 0; + padding: 0; + background-color: #fff; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 1px 4px rgba(0,0,0,.065); + -moz-box-shadow: 0 1px 4px rgba(0,0,0,.065); + box-shadow: 0 1px 4px rgba(0,0,0,.065); +} +.bs-docs-sidenav > li > a { + display: block; + width: 190px \9; + margin: 0 0 -1px; + padding: 8px 14px; + border: 1px solid #e5e5e5; +} +.bs-docs-sidenav > li:first-child > a { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} +.bs-docs-sidenav > li:last-child > a { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.bs-docs-sidenav > .active > a { + position: relative; + z-index: 2; + padding: 9px 15px; + border: 0; + text-shadow: 0 1px 0 rgba(0,0,0,.15); + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); + box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); +} +/* Chevrons */ +.bs-docs-sidenav .icon-chevron-right { + float: right; + margin-top: 2px; + margin-right: -6px; + opacity: .25; +} +.bs-docs-sidenav > li > a:hover { + background-color: #f5f5f5; +} +.bs-docs-sidenav a:hover .icon-chevron-right { + opacity: .5; +} +.bs-docs-sidenav .active .icon-chevron-right, +.bs-docs-sidenav .active a:hover .icon-chevron-right { + background-image: url(../img/glyphicons-halflings-white.png); + opacity: 1; +} +.bs-docs-sidenav.affix { + top: 40px; +} +.bs-docs-sidenav.affix-bottom { + position: absolute; + top: auto; + bottom: 270px; +} + + + + +/* Responsive +-------------------------------------------------- */ + +/* Desktop large +------------------------- */ +@media (min-width: 1200px) { + .bs-docs-container { + max-width: 970px; + } + .bs-docs-sidenav { + width: 258px; + } + .bs-docs-sidenav > li > a { + width: 230px \9; /* Override the previous IE8-9 hack */ + } +} + +/* Desktop +------------------------- */ +@media (max-width: 980px) { + /* Unfloat brand */ + body > .navbar-fixed-top .brand { + float: left; + margin-left: 0; + padding-left: 10px; + padding-right: 10px; + } + + /* Inline-block quick links for more spacing */ + .quick-links li { + display: inline-block; + margin: 5px; + } + + /* When affixed, space properly */ + .bs-docs-sidenav { + top: 0; + width: 218px; + margin-top: 30px; + margin-right: 0; + } +} + +/* Tablet to desktop +------------------------- */ +@media (min-width: 768px) and (max-width: 979px) { + /* Remove any padding from the body */ + body { + padding-top: 0; + } + /* Widen masthead and social buttons to fill body padding */ + .jumbotron { + margin-top: -20px; /* Offset bottom margin on .navbar */ + } + /* Adjust sidenav width */ + .bs-docs-sidenav { + width: 166px; + margin-top: 20px; + } + .bs-docs-sidenav.affix { + top: 0; + } +} + +/* Tablet +------------------------- */ +@media (max-width: 767px) { + /* Remove any padding from the body */ + body { + padding-top: 0; + } + + /* Widen masthead and social buttons to fill body padding */ + .jumbotron { + padding: 40px 20px; + margin-top: -20px; /* Offset bottom margin on .navbar */ + margin-right: -20px; + margin-left: -20px; + } + .masthead h1 { + font-size: 90px; + } + .masthead p, + .masthead .btn { + font-size: 24px; + } + .marketing .span4 { + margin-bottom: 40px; + } + .bs-docs-social { + margin: 0 -20px; + } + + /* Space out the show-grid examples */ + .show-grid [class*="span"] { + margin-bottom: 5px; + } + + /* Sidenav */ + .bs-docs-sidenav { + width: auto; + margin-bottom: 20px; + } + .bs-docs-sidenav.affix { + position: static; + width: auto; + top: 0; + } + + /* Unfloat the back to top link in footer */ + .footer { + margin-left: -20px; + margin-right: -20px; + padding-left: 20px; + padding-right: 20px; + } + .footer p { + margin-bottom: 9px; + } +} + +/* Landscape phones +------------------------- */ +@media (max-width: 480px) { + /* Remove padding above jumbotron */ + body { + padding-top: 0; + } + + /* Change up some type stuff */ + h2 small { + display: block; + } + + /* Downsize the jumbotrons */ + .jumbotron h1 { + font-size: 45px; + } + .jumbotron p, + .jumbotron .btn { + font-size: 18px; + } + .jumbotron .btn { + display: block; + margin: 0 auto; + } + + /* center align subhead text like the masthead */ + .subhead h1, + .subhead p { + text-align: center; + } + + /* Marketing on home */ + .marketing h1 { + font-size: 30px; + } + .marketing-byline { + font-size: 18px; + } + + /* center example sites */ + .example-sites { + margin-left: 0; + } + .example-sites > li { + float: none; + display: block; + max-width: 280px; + margin: 0 auto 18px; + text-align: center; + } + .example-sites .thumbnail > img { + max-width: 270px; + } + + /* Do our best to make tables work in narrow viewports */ + table code { + white-space: normal; + word-wrap: break-word; + word-break: break-all; + } + + /* Examples: dropdowns */ + .bs-docs-example-submenus > .pull-left { + float: none; + clear: both; + } + .bs-docs-example-submenus > .pull-left, + .bs-docs-example-submenus > .pull-left + .pull-left { + margin-left: 0; + } + .bs-docs-example-submenus p { + margin-bottom: 0; + } + .bs-docs-example-submenus .dropup > .dropdown-menu, + .bs-docs-example-submenus .dropdown > .dropdown-menu { + margin-bottom: 10px; + float: none; + max-width: 180px; + } + + /* Examples: modal */ + .modal-example .modal { + position: relative; + top: auto; + right: auto; + bottom: auto; + left: auto; + } + + /* Tighten up footer */ + .footer { + padding-top: 20px; + padding-bottom: 20px; + } +} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-114-precomposed.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-114-precomposed.png new file mode 100644 index 0000000..790a64f Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-114-precomposed.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-144-precomposed.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-144-precomposed.png new file mode 100644 index 0000000..6d0e463 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-144-precomposed.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-57-precomposed.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-57-precomposed.png new file mode 100644 index 0000000..4936cca Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-57-precomposed.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-72-precomposed.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-72-precomposed.png new file mode 100644 index 0000000..b1165bd Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/apple-touch-icon-72-precomposed.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.ico b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.ico new file mode 100644 index 0000000..cb8dbdf Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.ico differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.png new file mode 100644 index 0000000..073c13c Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/ico/favicon.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-docs-readme.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-docs-readme.png new file mode 100644 index 0000000..36603bd Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-docs-readme.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg new file mode 100644 index 0000000..2d39898 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg new file mode 100644 index 0000000..7a89371 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg new file mode 100644 index 0000000..3638f15 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-bootstrap-features.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-bootstrap-features.png new file mode 100644 index 0000000..7cd8501 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-bootstrap-features.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-masthead-pattern.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-masthead-pattern.png new file mode 100644 index 0000000..75c46a1 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-masthead-pattern.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-responsive-illustrations.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-responsive-illustrations.png new file mode 100644 index 0000000..77c8f18 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-responsive-illustrations.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-twitter-github.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-twitter-github.png new file mode 100644 index 0000000..06100f3 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/bs-docs-twitter-github.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/8020select.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/8020select.png new file mode 100644 index 0000000..e8eeeb2 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/8020select.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/adoptahydrant.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/adoptahydrant.png new file mode 100644 index 0000000..ec91889 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/adoptahydrant.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/breakingnews.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/breakingnews.png new file mode 100644 index 0000000..5a07785 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/breakingnews.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/fleetio.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/fleetio.png new file mode 100644 index 0000000..9207b0c Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/fleetio.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/gathercontent.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/gathercontent.png new file mode 100644 index 0000000..92cd0ee Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/gathercontent.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/jshint.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/jshint.png new file mode 100644 index 0000000..ac7086d Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/jshint.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/kippt.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/kippt.png new file mode 100644 index 0000000..7ea1742 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/kippt.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/soundready.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/soundready.png new file mode 100644 index 0000000..94e0e01 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/example-sites/soundready.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-carousel.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-carousel.png new file mode 100644 index 0000000..725fe07 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-carousel.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-fluid.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-fluid.png new file mode 100644 index 0000000..5f49a33 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-fluid.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-justified-nav.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-justified-nav.png new file mode 100644 index 0000000..3d1e233 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-justified-nav.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing-narrow.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing-narrow.png new file mode 100644 index 0000000..4bca8cd Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing-narrow.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing.png new file mode 100644 index 0000000..206e26e Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-marketing.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-signin.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-signin.png new file mode 100644 index 0000000..b649a98 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-signin.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-starter.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-starter.png new file mode 100644 index 0000000..1bf4b85 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-starter.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-sticky-footer.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-sticky-footer.png new file mode 100644 index 0000000..fb80e7b Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/bootstrap-example-sticky-footer.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-chrome.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-chrome.png new file mode 100644 index 0000000..8c846c5 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-chrome.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-firefox.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-firefox.png new file mode 100644 index 0000000..3dd68b1 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-firefox.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-safari.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-safari.png new file mode 100644 index 0000000..7aaa29a Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/browser-icon-safari.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-01.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-01.jpg new file mode 100644 index 0000000..bedab7d Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-01.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-02.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-02.jpg new file mode 100644 index 0000000..4ed12cc Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-02.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-03.jpg b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-03.jpg new file mode 100644 index 0000000..37415da Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/examples/slide-03.jpg differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings-white.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings-white.png new file mode 100644 index 0000000..3bf6484 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings-white.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings.png new file mode 100644 index 0000000..a996999 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/glyphicons-halflings.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/grid-baseline-20px.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/grid-baseline-20px.png new file mode 100644 index 0000000..ce8c69c Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/grid-baseline-20px.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/less-logo-large.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/less-logo-large.png new file mode 100644 index 0000000..8f62ffb Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/less-logo-large.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/responsive-illustrations.png b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/responsive-illustrations.png new file mode 100644 index 0000000..a4bcbe3 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/img/responsive-illustrations.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/README.md b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/README.md new file mode 100644 index 0000000..66903c7 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/README.md @@ -0,0 +1,106 @@ +## 2.0 BOOTSTRAP JS PHILOSOPHY +These are the high-level design rules which guide the development of Bootstrap's plugin apis. + +--- + +### DATA-ATTRIBUTE API + +We believe you should be able to use all plugins provided by Bootstrap purely through the markup API without writing a single line of javascript. + +We acknowledge that this isn't always the most performant and sometimes it may be desirable to turn this functionality off altogether. Therefore, as of 2.0 we provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this: + + $('body').off('.data-api') + +To target a specific plugin, just include the plugins name as a namespace along with the data-api namespace like this: + + $('body').off('.alert.data-api') + +--- + +### PROGRAMMATIC API + +We also believe you should be able to use all plugins provided by Bootstrap purely through the JS API. + +All public APIs should be single, chainable methods, and return the collection acted upon. + + $(".btn.danger").button("toggle").addClass("fat") + +All methods should accept an optional options object, a string which targets a particular method, or null which initiates the default behavior: + + $("#myModal").modal() // initialized with defaults + $("#myModal").modal({ keyboard: false }) // initialized with now keyboard + $("#myModal").modal('show') // initializes and invokes show immediately afterqwe2 + +--- + +### OPTIONS + +Options should be sparse and add universal value. We should pick the right defaults. + +All plugins should have a default object which can be modified to effect all instance's default options. The defaults object should be available via `$.fn.plugin.defaults`. + + $.fn.modal.defaults = { … } + +An options definition should take the following form: + + *noun*: *adjective* - describes or modifies a quality of an instance + +examples: + + backdrop: true + keyboard: false + placement: 'top' + +--- + +### EVENTS + +All events should have an infinitive and past participle form. The infinitive is fired just before an action takes place, the past participle on completion of the action. + + show | shown + hide | hidden + +--- + +### CONSTRUCTORS + +Each plugin should expose it's raw constructor on a `Constructor` property -- accessed in the following way: + + + $.fn.popover.Constructor + +--- + +### DATA ACCESSOR + +Each plugin stores a copy of the invoked class on an object. This class instance can be accessed directly through jQuery's data API like this: + + $('[rel=popover]').data('popover') instanceof $.fn.popover.Constructor + +--- + +### DATA ATTRIBUTES + +Data attributes should take the following form: + +- data-{{verb}}={{plugin}} - defines main interaction +- data-target || href^=# - defined on "control" element (if element controls an element other than self) +- data-{{noun}} - defines class instance options + +examples: + + // control other targets + data-toggle="modal" data-target="#foo" + data-toggle="collapse" data-target="#foo" data-parent="#bar" + + // defined on element they control + data-spy="scroll" + + data-dismiss="modal" + data-dismiss="alert" + + data-toggle="dropdown" + + data-toggle="button" + data-toggle="buttons-checkbox" + data-toggle="buttons-radio" \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/application.js b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/application.js new file mode 100644 index 0000000..f880bc0 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/assets/js/application.js @@ -0,0 +1,156 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +!function ($) { + + $(function(){ + + var $window = $(window) + + // Disable certain links in docs + $('section [href^=#]').click(function (e) { + e.preventDefault() + }) + + // side bar + setTimeout(function () { + $('.bs-docs-sidenav').affix({ + offset: { + top: function () { return $window.width() <= 980 ? 290 : 210 } + , bottom: 270 + } + }) + }, 100) + + // make code pretty + window.prettyPrint && prettyPrint() + + // add-ons + $('.add-on :checkbox').on('click', function () { + var $this = $(this) + , method = $this.attr('checked') ? 'addClass' : 'removeClass' + $(this).parents('.add-on')[method]('active') + }) + + // add tipsies to grid for scaffolding + if ($('#gridSystem').length) { + $('#gridSystem').tooltip({ + selector: '.show-grid > [class*="span"]' + , title: function () { return $(this).width() + 'px' } + }) + } + + // tooltip demo + $('.tooltip-demo').tooltip({ + selector: "a[data-toggle=tooltip]" + }) + + $('.tooltip-test').tooltip() + $('.popover-test').popover() + + // popover demo + $("a[data-toggle=popover]") + .popover() + .click(function(e) { + e.preventDefault() + }) + + // button state demo + $('#fat-btn') + .click(function () { + var btn = $(this) + btn.button('loading') + setTimeout(function () { + btn.button('reset') + }, 3000) + }) + + // carousel demo + $('#myCarousel').carousel() + + // javascript build logic + var inputsComponent = $("#components.download input") + , inputsPlugin = $("#plugins.download input") + , inputsVariables = $("#variables.download input") + + // toggle all plugin checkboxes + $('#components.download .toggle-all').on('click', function (e) { + e.preventDefault() + inputsComponent.attr('checked', !inputsComponent.is(':checked')) + }) + + $('#plugins.download .toggle-all').on('click', function (e) { + e.preventDefault() + inputsPlugin.attr('checked', !inputsPlugin.is(':checked')) + }) + + $('#variables.download .toggle-all').on('click', function (e) { + e.preventDefault() + inputsVariables.val('') + }) + + // request built javascript + $('.download-btn .btn').on('click', function () { + + var css = $("#components.download input:checked") + .map(function () { return this.value }) + .toArray() + , js = $("#plugins.download input:checked") + .map(function () { return this.value }) + .toArray() + , vars = {} + , img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png'] + + $("#variables.download input") + .each(function () { + $(this).val() && (vars[ $(this).prev().text() ] = $(this).val()) + }) + + $.ajax({ + type: 'POST' + , url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com' + , dataType: 'jsonpi' + , params: { + js: js + , css: css + , vars: vars + , img: img + } + }) + }) + }) + +// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi +$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) { + var url = opts.url; + + return { + send: function(_, completeCallback) { + var name = 'jQuery_iframe_' + jQuery.now() + , iframe, form + + iframe = $(' + +
                • + +
                • + +
                • + +
                • + + + + +
                  + +
                  + +

                  Introducing Bootstrap.

                  + + +
                  +
                  + +

                  By nerds, for nerds.

                  +

                  Built at Twitter by @mdo and @fat, Bootstrap utilizes LESS CSS, is compiled via Node, and is managed through GitHub to help nerds do awesome stuff on the web.

                  +
                  +
                  + +

                  Made for everyone.

                  +

                  Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via responsive CSS as well.

                  +
                  +
                  + +

                  Packed with features.

                  +

                  A 12-column responsive grid, dozens of components, JavaScript plugins, typography, form controls, and even a web-based Customizer to make Bootstrap your own.

                  +
                  +
                  + +
                  + +

                  Built with Bootstrap.

                  + +
                  + +
                  + +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/javascript.html b/src/main/webapp/static/bootstrap/2.3.1/docs/javascript.html new file mode 100644 index 0000000..f4957d9 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/javascript.html @@ -0,0 +1,1780 @@ + + + + + Javascript · Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +

                  JavaScript

                  +

                  Bring Bootstrap's components to life—now with 13 custom jQuery plugins. +

                  +
                  + +
                  + + +
                  + +
                  + + + +
                  + + +

                  Individual or compiled

                  +

                  Plugins can be included individually (though some have required dependencies), or all at once. Both bootstrap.js and bootstrap.min.js contain all plugins in a single file.

                  + +

                  Data attributes

                  +

                  You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.

                  + +

                  That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this: +

                  $('body').off('.data-api')
                  + +

                  Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:

                  +
                  $('body').off('.alert.data-api')
                  + +

                  Programmatic API

                  +

                  We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.

                  +
                  $(".btn.danger").button("toggle").addClass("fat")
                  +

                  All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):

                  +
                  +$("#myModal").modal()                       // initialized with defaults
                  +$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
                  +$("#myModal").modal('show')                // initializes and invokes show immediately

                  +
                  +

                  Each plugin also exposes its raw constructor on a `Constructor` property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel=popover]').data('popover').

                  + +

                  No Conflict

                  +

                  Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

                  + +
                  +var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
                  +$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
                  +
                  + +

                  Events

                  +

                  Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is trigger on the completion of an action.

                  +

                  All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.

                  +
                  +$('#myModal').on('show', function (e) {
                  +    if (!data) return e.preventDefault() // stops modal from being shown
                  +})
                  +
                  +
                  + + + + +
                  + +

                  About transitions

                  +

                  For simple transition effects, include bootstrap-transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.

                  +

                  Use cases

                  +

                  A few examples of the transition plugin:

                  +
                    +
                  • Sliding or fading in modals
                  • +
                  • Fading out tabs
                  • +
                  • Fading out alerts
                  • +
                  • Sliding carousel panes
                  • +
                  + +
                  + + + + +
                  + + + +

                  Examples

                  +

                  Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.

                  + +

                  Static example

                  +

                  A rendered modal with header, body, and set of actions in the footer.

                  +
                  + +
                  +
                  +<div class="modal hide fade">
                  +  <div class="modal-header">
                  +    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                  +    <h3>Modal header</h3>
                  +  </div>
                  +  <div class="modal-body">
                  +    <p>One fine body…</p>
                  +  </div>
                  +  <div class="modal-footer">
                  +    <a href="#" class="btn">Close</a>
                  +    <a href="#" class="btn btn-primary">Save changes</a>
                  +  </div>
                  +</div>
                  +
                  + +

                  Live demo

                  +

                  Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.

                  + + + +
                  +<!-- Button to trigger modal -->
                  +<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
                  +
                  +<!-- Modal -->
                  +<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                  +  <div class="modal-header">
                  +    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                  +    <h3 id="myModalLabel">Modal header</h3>
                  +  </div>
                  +  <div class="modal-body">
                  +    <p>One fine body…</p>
                  +  </div>
                  +  <div class="modal-footer">
                  +    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                  +    <button class="btn btn-primary">Save changes</button>
                  +  </div>
                  +</div>
                  +
                  + + +
                  + + +

                  Usage

                  + +

                  Via data attributes

                  +

                  Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.

                  +
                  <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
                  + +

                  Via JavaScript

                  +

                  Call a modal with id myModal with a single line of JavaScript:

                  +
                  $('#myModal').modal(options)
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  backdropbooleantrueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
                  keyboardbooleantrueCloses the modal when escape key is pressed
                  showbooleantrueShows the modal when initialized.
                  remotepathfalse

                  If a remote url is provided, content will be loaded via jQuery's load method and injected into the .modal-body. If you're using the data api, you may alternatively use the href tag to specify the remote source. An example of this is shown below:

                  +
                  <a data-toggle="modal" href="remote.html" data-target="#modal">click me</a>
                  + +

                  Methods

                  +

                  .modal(options)

                  +

                  Activates your content as a modal. Accepts an optional options object.

                  +
                  +$('#myModal').modal({
                  +  keyboard: false
                  +})
                  +
                  +

                  .modal('toggle')

                  +

                  Manually toggles a modal.

                  +
                  $('#myModal').modal('toggle')
                  +

                  .modal('show')

                  +

                  Manually opens a modal.

                  +
                  $('#myModal').modal('show')
                  +

                  .modal('hide')

                  +

                  Manually hides a modal.

                  +
                  $('#myModal').modal('hide')
                  +

                  Events

                  +

                  Bootstrap's modal class exposes a few events for hooking into modal functionality.

                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  EventDescription
                  showThis event fires immediately when the show instance method is called.
                  shownThis event is fired when the modal has been made visible to the user (will wait for css transitions to complete).
                  hideThis event is fired immediately when the hide instance method has been called.
                  hiddenThis event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).
                  +
                  +$('#myModal').on('hidden', function () {
                  +  // do something…
                  +})
                  +
                  +
                  + + + + + + + + + +
                  + + + +

                  Example in navbar

                  +

                  The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.

                  +
                  + +
                  +

                  @fat

                  +

                  Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

                  +

                  @mdo

                  +

                  Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

                  +

                  one

                  +

                  Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

                  +

                  two

                  +

                  In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

                  +

                  three

                  +

                  Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

                  +

                  Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. +

                  +
                  +
                  + + +
                  + + +

                  Usage

                  + +

                  Via data attributes

                  +

                  To easily add scrollspy behavior to your topbar navigation, just add data-spy="scroll" to the element you want to spy on (most typically this would be the body) and data-target=".navbar" to select which nav to use. You'll want to use scrollspy with a .nav component.

                  +
                  <body data-spy="scroll" data-target=".navbar">...</body>
                  + +

                  Via JavaScript

                  +

                  Call the scrollspy via JavaScript:

                  +
                  $('#navbar').scrollspy()
                  + +
                  + Heads up! + Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the dom like <div id="home"></div>. +
                  + +

                  Methods

                  +

                  .scrollspy('refresh')

                  +

                  When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:

                  +
                  +$('[data-spy="scroll"]').each(function () {
                  +  var $spy = $(this).scrollspy('refresh')
                  +});
                  +
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".

                  + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  offsetnumber10Pixels to offset from top when calculating position of scroll.
                  + +

                  Events

                  + + + + + + + + + + + + + +
                  EventDescription
                  activateThis event fires whenever a new item becomes activated by the scrollspy.
                  +
                  + + + + +
                  + + + +

                  Example tabs

                  +

                  Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.

                  +
                  + +
                  +
                  +

                  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.

                  +
                  +
                  +

                  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.

                  +
                  + + +
                  +
                  + + +
                  + + +

                  Usage

                  +

                  Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

                  +
                  +$('#myTab a').click(function (e) {
                  +  e.preventDefault();
                  +  $(this).tab('show');
                  +})
                  +

                  You can activate individual tabs in several ways:

                  +
                  +$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
                  +$('#myTab a:first').tab('show'); // Select first tab
                  +$('#myTab a:last').tab('show'); // Select last tab
                  +$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
                  +
                  + +

                  Markup

                  +

                  You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling.

                  +
                  +<ul class="nav nav-tabs">
                  +  <li><a href="#home" data-toggle="tab">Home</a></li>
                  +  <li><a href="#profile" data-toggle="tab">Profile</a></li>
                  +  <li><a href="#messages" data-toggle="tab">Messages</a></li>
                  +  <li><a href="#settings" data-toggle="tab">Settings</a></li>
                  +</ul>
                  + +

                  Methods

                  +

                  $().tab

                  +

                  + Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM. +

                  +
                  +<ul class="nav nav-tabs" id="myTab">
                  +  <li class="active"><a href="#home">Home</a></li>
                  +  <li><a href="#profile">Profile</a></li>
                  +  <li><a href="#messages">Messages</a></li>
                  +  <li><a href="#settings">Settings</a></li>
                  +</ul>
                  +
                  +<div class="tab-content">
                  +  <div class="tab-pane active" id="home">...</div>
                  +  <div class="tab-pane" id="profile">...</div>
                  +  <div class="tab-pane" id="messages">...</div>
                  +  <div class="tab-pane" id="settings">...</div>
                  +</div>
                  +
                  +<script>
                  +  $(function () {
                  +    $('#myTab a:last').tab('show');
                  +  })
                  +</script>
                  +
                  + +

                  Events

                  + + + + + + + + + + + + + + + + + +
                  EventDescription
                  showThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
                  shownThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
                  +
                  +$('a[data-toggle="tab"]').on('shown', function (e) {
                  +  e.target // activated tab
                  +  e.relatedTarget // previous tab
                  +})
                  +
                  +
                  + + + +
                  + + + +

                  Examples

                  +

                  Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.

                  +

                  For performance reasons, the tooltip and popover data-apis are opt in, meaning you must initialize them yourself.

                  +

                  Hover over the links below to see tooltips:

                  +
                  +

                  Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. +

                  +
                  + +

                  Four directions

                  + + + +

                  Tooltips in input groups

                  +

                  When using tooltips and popovers with the Bootstrap input groups, you'll have to set the container (documented below) option to avoid unwanted side effects.

                  + +
                  + + +

                  Usage

                  +

                  Trigger the tooltip via JavaScript:

                  +
                  $('#example').tooltip(options)
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  animationbooleantrueapply a css fade transition to the tooltip
                  htmlbooleanfalseInsert html into the tooltip. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.
                  placementstring | function'top'how to position the tooltip - top | bottom | left | right
                  selectorstringfalseIf a selector is provided, tooltip objects will be delegated to the specified targets.
                  titlestring | function''default title value if `title` tag isn't present
                  triggerstring'hover focus'how tooltip is triggered - click | hover | focus | manual. Note you case pass trigger mutliple, space seperated, trigger types.
                  delaynumber | object0 +

                  delay showing and hiding the tooltip (ms) - does not apply to manual trigger type

                  +

                  If a number is supplied, delay is applied to both hide/show

                  +

                  Object structure is: delay: { show: 500, hide: 100 }

                  +
                  containerstring | falsefalse +

                  Appends the tooltip to a specific element container: 'body'

                  +
                  +
                  + Heads up! + Options for individual tooltips can alternatively be specified through the use of data attributes. +
                  + +

                  Markup

                  +
                  <a href="#" data-toggle="tooltip" title="first tooltip">hover over me</a>
                  + +

                  Methods

                  +

                  $().tooltip(options)

                  +

                  Attaches a tooltip handler to an element collection.

                  +

                  .tooltip('show')

                  +

                  Reveals an element's tooltip.

                  +
                  $('#element').tooltip('show')
                  +

                  .tooltip('hide')

                  +

                  Hides an element's tooltip.

                  +
                  $('#element').tooltip('hide')
                  +

                  .tooltip('toggle')

                  +

                  Toggles an element's tooltip.

                  +
                  $('#element').tooltip('toggle')
                  +

                  .tooltip('destroy')

                  +

                  Hides and destroys an element's tooltip.

                  +
                  $('#element').tooltip('destroy')
                  +
                  + + + + +
                  + + +

                  Examples

                  +

                  Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. Requires Tooltip to be included.

                  + +

                  Static popover

                  +

                  Four options are available: top, right, bottom, and left aligned.

                  +
                  +
                  +
                  +

                  Popover top

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover right

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover bottom

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover left

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  No markup shown as popovers are generated from JavaScript and content within a data attribute.

                  + +

                  Live demo

                  + + +

                  Four directions

                  + + + +
                  + + +

                  Usage

                  +

                  Enable popovers via JavaScript:

                  +
                  $('#example').popover(options)
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  animationbooleantrueapply a css fade transition to the tooltip
                  htmlbooleanfalseInsert html into the popover. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.
                  placementstring | function'right'how to position the popover - top | bottom | left | right
                  selectorstringfalseif a selector is provided, tooltip objects will be delegated to the specified targets
                  triggerstring'click'how popover is triggered - click | hover | focus | manual
                  titlestring | function''default title value if `title` attribute isn't present
                  contentstring | function''default content value if `data-content` attribute isn't present
                  delaynumber | object0 +

                  delay showing and hiding the popover (ms) - does not apply to manual trigger type

                  +

                  If a number is supplied, delay is applied to both hide/show

                  +

                  Object structure is: delay: { show: 500, hide: 100 }

                  +
                  containerstring | falsefalse +

                  Appends the popover to a specific element container: 'body'

                  +
                  +
                  + Heads up! + Options for individual popovers can alternatively be specified through the use of data attributes. +
                  + +

                  Markup

                  +

                  For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.

                  + +

                  Methods

                  +

                  $().popover(options)

                  +

                  Initializes popovers for an element collection.

                  +

                  .popover('show')

                  +

                  Reveals an elements popover.

                  +
                  $('#element').popover('show')
                  +

                  .popover('hide')

                  +

                  Hides an elements popover.

                  +
                  $('#element').popover('hide')
                  +

                  .popover('toggle')

                  +

                  Toggles an elements popover.

                  +
                  $('#element').popover('toggle')
                  +

                  .popover('destroy')

                  +

                  Hides and destroys an element's popover.

                  +
                  $('#element').popover('destroy')
                  +
                  + + + + +
                  + + + +

                  Example alerts

                  +

                  Add dismiss functionality to all alert messages with this plugin.

                  +
                  +
                  + + Holy guacamole! Best check yo self, you're not looking too good. +
                  +
                  + +
                  +
                  + +

                  Oh snap! You got an error!

                  +

                  Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

                  +

                  + Take this action Or do this +

                  +
                  +
                  + + +
                  + + +

                  Usage

                  +

                  Enable dismissal of an alert via JavaScript:

                  +
                  $(".alert").alert()
                  + +

                  Markup

                  +

                  Just add data-dismiss="alert" to your close button to automatically give an alert close functionality.

                  +
                  <a class="close" data-dismiss="alert" href="#">&times;</a>
                  + +

                  Methods

                  +

                  $().alert()

                  +

                  Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the .fade and .in class already applied to them.

                  +

                  .alert('close')

                  +

                  Closes an alert.

                  +
                  $(".alert").alert('close')
                  + + +

                  Events

                  +

                  Bootstrap's alert class exposes a few events for hooking into alert functionality.

                  + + + + + + + + + + + + + + + + + +
                  EventDescription
                  closeThis event fires immediately when the close instance method is called.
                  closedThis event is fired when the alert has been closed (will wait for css transitions to complete).
                  +
                  +$('#my-alert').bind('closed', function () {
                  +  // do something…
                  +})
                  +
                  +
                  + + + + +
                  + + +

                  Example uses

                  +

                  Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

                  + +

                  Stateful

                  +

                  Add data-loading-text="Loading..." to use a loading state on a button.

                  +
                  + +
                  +
                  <button type="button" class="btn btn-primary" data-loading-text="Loading...">Loading state</button>
                  + +

                  Single toggle

                  +

                  Add data-toggle="button" to activate toggling on a single button.

                  +
                  + +
                  +
                  <button type="button" class="btn btn-primary" data-toggle="button">Single Toggle</button>
                  + +

                  Checkbox

                  +

                  Add data-toggle="buttons-checkbox" for checkbox style toggling on btn-group.

                  +
                  +
                  + + + +
                  +
                  +
                  +<div class="btn-group" data-toggle="buttons-checkbox">
                  +  <button type="button" class="btn btn-primary">Left</button>
                  +  <button type="button" class="btn btn-primary">Middle</button>
                  +  <button type="button" class="btn btn-primary">Right</button>
                  +</div>
                  +
                  + +

                  Radio

                  +

                  Add data-toggle="buttons-radio" for radio style toggling on btn-group.

                  +
                  +
                  + + + +
                  +
                  +
                  +<div class="btn-group" data-toggle="buttons-radio">
                  +  <button type="button" class="btn btn-primary">Left</button>
                  +  <button type="button" class="btn btn-primary">Middle</button>
                  +  <button type="button" class="btn btn-primary">Right</button>
                  +</div>
                  +
                  + + +
                  + + +

                  Usage

                  +

                  Enable buttons via JavaScript:

                  +
                  $('.nav-tabs').button()
                  + +

                  Markup

                  +

                  Data attributes are integral to the button plugin. Check out the example code below for the various markup types.

                  + +

                  Options

                  +

                  None

                  + +

                  Methods

                  +

                  $().button('toggle')

                  +

                  Toggles push state. Gives the button the appearance that it has been activated.

                  +
                  + Heads up! + You can enable auto toggling of a button by using the data-toggle attribute. +
                  +
                  <button type="button" class="btn" data-toggle="button" >…</button>
                  +

                  $().button('loading')

                  +

                  Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute data-loading-text. +

                  +
                  <button type="button" class="btn" data-loading-text="loading stuff..." >...</button>
                  +
                  + Heads up! + Firefox persists the disabled state across page loads. A workaround for this is to use autocomplete="off". +
                  +

                  $().button('reset')

                  +

                  Resets button state - swaps text to original text.

                  +

                  $().button(string)

                  +

                  Resets button state - swaps text to any data defined text state.

                  +
                  <button type="button" class="btn" data-complete-text="finished!" >...</button>
                  +<script>
                  +  $('.btn').button('complete')
                  +</script>
                  +
                  +
                  + + + + +
                  + + +

                  About

                  +

                  Get base styles and flexible support for collapsible components like accordions and navigation.

                  +

                  * Requires the Transitions plugin to be included.

                  + +

                  Example accordion

                  +

                  Using the collapse plugin, we built a simple accordion style widget:

                  + +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  +
                  +
                  +<div class="accordion" id="accordion2">
                  +  <div class="accordion-group">
                  +    <div class="accordion-heading">
                  +      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
                  +        Collapsible Group Item #1
                  +      </a>
                  +    </div>
                  +    <div id="collapseOne" class="accordion-body collapse in">
                  +      <div class="accordion-inner">
                  +        Anim pariatur cliche...
                  +      </div>
                  +    </div>
                  +  </div>
                  +  <div class="accordion-group">
                  +    <div class="accordion-heading">
                  +      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
                  +        Collapsible Group Item #2
                  +      </a>
                  +    </div>
                  +    <div id="collapseTwo" class="accordion-body collapse">
                  +      <div class="accordion-inner">
                  +        Anim pariatur cliche...
                  +      </div>
                  +    </div>
                  +  </div>
                  +</div>
                  +...
                  +
                  +

                  You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.

                  +
                  +<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
                  +  simple collapsible
                  +</button>
                  +
                  +<div id="demo" class="collapse in"> … </div>
                  +
                  + + +
                  + + +

                  Usage

                  + +

                  Via data attributes

                  +

                  Just add data-toggle="collapse" and a data-target to element to automatically assign control of a collapsible element. The data-target attribute accepts a css selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.

                  +

                  To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.

                  + +

                  Via JavaScript

                  +

                  Enable manually with:

                  +
                  $(".collapse").collapse()
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".

                  + + + + + + + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  parentselectorfalseIf selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior)
                  togglebooleantrueToggles the collapsible element on invocation
                  + + +

                  Methods

                  +

                  .collapse(options)

                  +

                  Activates your content as a collapsible element. Accepts an optional options object. +

                  +$('#myCollapsible').collapse({
                  +  toggle: false
                  +})
                  +
                  +

                  .collapse('toggle')

                  +

                  Toggles a collapsible element to shown or hidden.

                  +

                  .collapse('show')

                  +

                  Shows a collapsible element.

                  +

                  .collapse('hide')

                  +

                  Hides a collapsible element.

                  + +

                  Events

                  +

                  Bootstrap's collapse class exposes a few events for hooking into collapse functionality.

                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  EventDescription
                  showThis event fires immediately when the show instance method is called.
                  shownThis event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).
                  hide + This event is fired immediately when the hide method has been called. +
                  hiddenThis event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).
                  +
                  +$('#myCollapsible').on('hidden', function () {
                  +  // do something…
                  +})
                  +
                  + + + + + + + + + +
                  + + + +

                  Example

                  +

                  A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.

                  +
                  + +
                  +
                  <input type="text" data-provide="typeahead">
                  +

                  You'll want to set autocomplete="off" to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.

                  + +
                  + + +

                  Usage

                  + +

                  Via data attributes

                  +

                  Add data attributes to register an element with typeahead functionality as shown in the example above.

                  + +

                  Via JavaScript

                  +

                  Call the typeahead manually with:

                  +
                  $('.typeahead').typeahead()
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-source="".

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  sourcearray, function[ ]The data source to query against. May be an array of strings or a function. The function is passed two arguments, the query value in the input field and the process callback. The function may be used synchronously by returning the data source directly or asynchronously via the process callback's single argument.
                  itemsnumber8The max number of items to display in the dropdown.
                  minLengthnumber1The minimum character length needed before triggering autocomplete suggestions
                  matcherfunctioncase insensitiveThe method used to determine if a query matches an item. Accepts a single argument, the item against which to test the query. Access the current query with this.query. Return a boolean true if query is a match.
                  sorterfunctionexact match,
                  case sensitive,
                  case insensitive
                  Method used to sort autocomplete results. Accepts a single argument items and has the scope of the typeahead instance. Reference the current query with this.query.
                  updaterfunctionreturns selected itemThe method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance.
                  highlighterfunctionhighlights all default matchesMethod used to highlight autocomplete results. Accepts a single argument item and has the scope of the typeahead instance. Should return html.
                  + +

                  Methods

                  +

                  .typeahead(options)

                  +

                  Initializes an input with a typeahead.

                  +
                  + + + + +
                  + + +

                  Example

                  +

                  The subnavigation on the left is a live demo of the affix plugin.

                  + +
                  + +

                  Usage

                  + +

                  Via data attributes

                  +

                  To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.

                  + +
                  <div data-spy="affix" data-offset-top="200">...</div>
                  + +
                  + Heads up! + You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by affix, affix-top, and affix-bottom. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page. +
                  + +

                  Via JavaScript

                  +

                  Call the affix plugin via JavaScript:

                  +
                  $('#navbar').affix()
                  + +

                  Options

                  +

                  Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset-top="200".

                  + + + + + + + + + + + + + + + + + +
                  Nametypedefaultdescription
                  offsetnumber | function | object10Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object offset: { x: 10 }. Use a function when you need to dynamically provide an offset (useful for some responsive designs).
                  +
                  + + + +
                  +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/scaffolding.html b/src/main/webapp/static/bootstrap/2.3.1/docs/scaffolding.html new file mode 100644 index 0000000..87a9bb0 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/scaffolding.html @@ -0,0 +1,602 @@ + + + + + Scaffolding · Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +

                  Scaffolding

                  +

                  Bootstrap is built on responsive 12-column grids, layouts, and components.

                  +
                  +
                  + +
                  + + +
                  + +
                  + + + + +
                  + + +

                  Requires HTML5 doctype

                  +

                  Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

                  +
                  +<!DOCTYPE html>
                  +<html lang="en">
                  +  ...
                  +</html>
                  +
                  + +

                  Typography and links

                  +

                  Bootstrap sets basic global display, typography, and link styles. Specifically, we:

                  +
                    +
                  • Remove margin on the body
                  • +
                  • Set background-color: white; on the body
                  • +
                  • Use the @baseFontFamily, @baseFontSize, and @baseLineHeight attributes as our typographic base
                  • +
                  • Set the global link color via @linkColor and apply link underlines only on :hover
                  • +
                  +

                  These styles can be found within scaffolding.less.

                  + +

                  Reset via Normalize

                  +

                  With Bootstrap 2, the old reset block has been dropped in favor of Normalize.css, a project by Nicolas Gallagher and Jonathan Neal that also powers the HTML5 Boilerplate. While we use much of Normalize within our reset.less, we have removed some elements specifically for Bootstrap.

                  + +
                  + + + + + +
                  + + +

                  Live grid example

                  +

                  The default Bootstrap grid system utilizes 12 columns, making for a 940px wide container without responsive features enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.

                  +
                  +
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  +
                  +
                  2
                  +
                  3
                  +
                  4
                  +
                  +
                  +
                  4
                  +
                  5
                  +
                  +
                  +
                  9
                  +
                  +
                  + +

                  Basic grid HTML

                  +

                  For a simple two column layout, create a .row and add the appropriate number of .span* columns. As this is a 12-column grid, each .span* spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).

                  +
                  +<div class="row">
                  +  <div class="span4">...</div>
                  +  <div class="span8">...</div>
                  +</div>
                  +
                  +

                  Given this example, we have .span4 and .span8, making for 12 total columns and a complete row.

                  + +

                  Offsetting columns

                  +

                  Move columns to the right using .offset* classes. Each class increases the left margin of a column by a whole column. For example, .offset4 moves .span4 over four columns.

                  +
                  +
                  +
                  4
                  +
                  3 offset 2
                  +
                  +
                  +
                  3 offset 1
                  +
                  3 offset 2
                  +
                  +
                  +
                  6 offset 3
                  +
                  +
                  +
                  +<div class="row">
                  +  <div class="span4">...</div>
                  +  <div class="span3 offset2">...</div>
                  +</div>
                  +
                  + +

                  Nesting columns

                  +

                  To nest your content with the default grid, add a new .row and set of .span* columns within an existing .span* column. Nested rows should include a set of columns that add up to the number of columns of its parent.

                  +
                  +
                  + Level 1 column +
                  +
                  + Level 2 +
                  +
                  + Level 2 +
                  +
                  +
                  +
                  +
                  +<div class="row">
                  +  <div class="span9">
                  +    Level 1 column
                  +    <div class="row">
                  +      <div class="span6">Level 2</div>
                  +      <div class="span3">Level 2</div>
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  +
                  + + + + +
                  + + +

                  Live fluid grid example

                  +

                  The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.

                  +
                  +
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  +
                  +
                  4
                  +
                  4
                  +
                  4
                  +
                  +
                  +
                  4
                  +
                  8
                  +
                  +
                  +
                  6
                  +
                  6
                  +
                  +
                  +
                  12
                  +
                  +
                  + +

                  Basic fluid grid HTML

                  +

                  Make any row "fluid" by changing .row to .row-fluid. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.

                  +
                  +<div class="row-fluid">
                  +  <div class="span4">...</div>
                  +  <div class="span8">...</div>
                  +</div>
                  +
                  + +

                  Fluid offsetting

                  +

                  Operates the same way as the fixed grid system offsetting: add .offset* to any column to offset by that many columns.

                  +
                  +
                  +
                  4
                  +
                  4 offset 4
                  +
                  +
                  +
                  3 offset 3
                  +
                  3 offset 3
                  +
                  +
                  +
                  6 offset 6
                  +
                  +
                  +
                  +<div class="row-fluid">
                  +  <div class="span4">...</div>
                  +  <div class="span4 offset2">...</div>
                  +</div>
                  +
                  + +

                  Fluid nesting

                  +

                  Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.

                  +
                  +
                  + Fluid 12 +
                  +
                  + Fluid 6 +
                  +
                  + Fluid 6 +
                  +
                  + Fluid 6 +
                  +
                  +
                  +
                  + Fluid 6 +
                  +
                  +
                  +
                  +
                  +<div class="row-fluid">
                  +  <div class="span12">
                  +    Fluid 12
                  +    <div class="row-fluid">
                  +      <div class="span6">
                  +        Fluid 6
                  +        <div class="row-fluid">
                  +          <div class="span6">Fluid 6</div>
                  +          <div class="span6">Fluid 6</div>
                  +        </div>
                  +      </div>
                  +      <div class="span6">Fluid 6</div>
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  + +
                  + + + + + +
                  + + +

                  Fixed layout

                  +

                  Provides a common fixed-width (and optionally responsive) layout with only <div class="container"> required.

                  +
                  +
                  +
                  +
                  +<body>
                  +  <div class="container">
                  +    ...
                  +  </div>
                  +</body>
                  +
                  + +

                  Fluid layout

                  +

                  Create a fluid, two-column page with <div class="container-fluid">—great for applications and docs.

                  +
                  +
                  +
                  +
                  +
                  +<div class="container-fluid">
                  +  <div class="row-fluid">
                  +    <div class="span2">
                  +      <!--Sidebar content-->
                  +    </div>
                  +    <div class="span10">
                  +      <!--Body content-->
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  +
                  + + + + + +
                  + + +

                  Enabling responsive features

                  +

                  Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <head> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.

                  +
                  +<meta name="viewport" content="width=device-width, initial-scale=1.0">
                  +<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
                  +
                  +

                  Heads up! Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.

                  + +

                  About responsive Bootstrap

                  + Responsive devices +

                  Media queries allow for custom CSS based on a number of conditions—ratios, widths, display type, etc—but usually focuses around min-width and max-width.

                  +
                    +
                  • Modify the width of column in our grid
                  • +
                  • Stack elements instead of float wherever necessary
                  • +
                  • Resize headings and text to be more appropriate for devices
                  • +
                  +

                  Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.

                  + +

                  Supported devices

                  +

                  Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  LabelLayout widthColumn widthGutter width
                  Large display1200px and up70px30px
                  Default980px and up60px20px
                  Portrait tablets768px and above42px20px
                  Phones to tablets767px and belowFluid columns, no fixed widths
                  Phones480px and belowFluid columns, no fixed widths
                  +
                  +/* Large desktop */
                  +@media (min-width: 1200px) { ... }
                  +
                  +/* Portrait tablet to landscape and desktop */
                  +@media (min-width: 768px) and (max-width: 979px) { ... }
                  +
                  +/* Landscape phone to portrait tablet */
                  +@media (max-width: 767px) { ... }
                  +
                  +/* Landscape phones and down */
                  +@media (max-width: 480px) { ... }
                  +
                  + + +

                  Responsive utility classes

                  +

                  For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in responsive.less.

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  ClassPhones 767px and belowTablets 979px to 768pxDesktops Default
                  .visible-phoneVisible
                  .visible-tabletVisible
                  .visible-desktopVisible
                  .hidden-phoneVisibleVisible
                  .hidden-tabletVisibleVisible
                  .hidden-desktopVisibleVisible
                  + +

                  When to use

                  +

                  Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.

                  + +

                  Responsive utilities test case

                  +

                  Resize your browser or load on different devices to test the above classes.

                  +

                  Visible on...

                  +

                  Green checkmarks indicate that class is visible in your current viewport.

                  +
                    +
                  • Phone✔ Phone
                  • +
                  • Tablet✔ Tablet
                  • +
                  • Desktop✔ Desktop
                  • +
                  +

                  Hidden on...

                  +

                  Here, green checkmarks indicate that class is hidden in your current viewport.

                  +
                    +
                  • Phone✔ Phone
                  • +
                  • Tablet✔ Tablet
                  • +
                  • Desktop✔ Desktop
                  • +
                  + +
                  + + + +
                  +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/layout.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/layout.mustache new file mode 100644 index 0000000..993b446 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/layout.mustache @@ -0,0 +1,151 @@ + + + + + {{title}} + + + + + + + + + + + + + + + + + + + + + {{#production}} + + {{/production}} + + + + + + + +{{>body}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{#production}} + + + {{/production}} + + + diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/base-css.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/base-css.mustache new file mode 100644 index 0000000..1f40f37 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/base-css.mustache @@ -0,0 +1,2102 @@ + +
                  +
                  +

                  {{_i}}Base CSS{{/i}}

                  +

                  {{_i}}Fundamental HTML elements styled and enhanced with extensible classes.{{/i}}

                  +
                  +
                  + + +
                  + + +
                  + +
                  + + + + +
                  + + + {{! Headings }} +

                  {{_i}}Headings{{/i}}

                  +

                  {{_i}}All HTML headings, <h1> through <h6> are available.{{/i}}

                  +
                  +

                  h1. {{_i}}Heading 1{{/i}}

                  +

                  h2. {{_i}}Heading 2{{/i}}

                  +

                  h3. {{_i}}Heading 3{{/i}}

                  +

                  h4. {{_i}}Heading 4{{/i}}

                  +
                  h5. {{_i}}Heading 5{{/i}}
                  +
                  h6. {{_i}}Heading 6{{/i}}
                  +
                  + + {{! Body copy }} +

                  {{_i}}Body copy{{/i}}

                  +

                  {{_i}}Bootstrap's global default font-size is 14px, with a line-height of 20px. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their line-height (10px by default).{{/i}}

                  +
                  +

                  Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

                  +

                  Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

                  +

                  Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

                  +
                  +
                  <p>...</p>
                  + + {{! Body copy .lead }} +

                  {{_i}}Lead body copy{{/i}}

                  +

                  {{_i}}Make a paragraph stand out by adding .lead.{{/i}}

                  +
                  +

                  Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

                  +
                  +
                  <p class="lead">...</p>
                  + + {{! Using LESS }} +

                  {{_i}}Built with Less{{/i}}

                  +

                  {{_i}}The typographic scale is based on two LESS variables in variables.less: @baseFontSize and @baseLineHeight. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.{{/i}}

                  + + +
                  + + + {{! Emphasis }} +

                  {{_i}}Emphasis{{/i}}

                  +

                  {{_i}}Make use of HTML's default emphasis tags with lightweight styles.{{/i}}

                  + +

                  <small>

                  +

                  {{_i}}For de-emphasizing inline or blocks of text, use the small tag.{{/i}}

                  +
                  +

                  This line of text is meant to be treated as fine print.

                  +
                  +
                  +<p>
                  +  <small>This line of text is meant to be treated as fine print.</small>
                  +</p>
                  +
                  + +

                  {{_i}}Bold{{/i}}

                  +

                  {{_i}}For emphasizing a snippet of text with a heavier font-weight.{{/i}}

                  +
                  +

                  The following snippet of text is rendered as bold text.

                  +
                  +
                  <strong>rendered as bold text</strong>
                  + +

                  {{_i}}Italics{{/i}}

                  +

                  {{_i}}For emphasizing a snippet of text with italics.{{/i}}

                  +
                  +

                  The following snippet of text is rendered as italicized text.

                  +
                  +
                  <em>rendered as italicized text</em>
                  + +

                  {{_i}}Heads up!{{/i}} {{_i}}Feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.{{/i}}

                  + +

                  {{_i}}Alignment classes{{/i}}

                  +

                  {{_i}}Easily realign text to components with text alignment classes.{{/i}}

                  +
                  +

                  Left aligned text.

                  +

                  Center aligned text.

                  +

                  Right aligned text.

                  +
                  +
                  +<p class="text-left">Left aligned text.</p>
                  +<p class="text-center">Center aligned text.</p>
                  +<p class="text-right">Right aligned text.</p>
                  +
                  + +

                  {{_i}}Emphasis classes{{/i}}

                  +

                  {{_i}}Convey meaning through color with a handful of emphasis utility classes.{{/i}}

                  +
                  +

                  Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

                  +

                  Etiam porta sem malesuada magna mollis euismod.

                  +

                  Donec ullamcorper nulla non metus auctor fringilla.

                  +

                  Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.

                  +

                  Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

                  +
                  +
                  +<p class="muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
                  +<p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
                  +<p class="text-error">Donec ullamcorper nulla non metus auctor fringilla.</p>
                  +<p class="text-info">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>
                  +<p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
                  +
                  + + +
                  + + + {{! Abbreviations }} +

                  {{_i}}Abbreviations{{/i}}

                  +

                  {{_i}}Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a title attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.{{/i}}

                  + +

                  <abbr>

                  +

                  {{_i}}For expanded text on long hover of an abbreviation, include the title attribute.{{/i}}

                  +
                  +

                  {{_i}}An abbreviation of the word attribute is attr.{{/i}}

                  +
                  +
                  <abbr title="attribute">attr</abbr>
                  + +

                  <abbr class="initialism">

                  +

                  {{_i}}Add .initialism to an abbreviation for a slightly smaller font-size.{{/i}}

                  +
                  +

                  {{_i}}HTML is the best thing since sliced bread.{{/i}}

                  +
                  +
                  <abbr title="HyperText Markup Language" class="initialism">HTML</abbr>
                  + + +
                  + + + {{! Addresses }} +

                  {{_i}}Addresses{{/i}}

                  +

                  {{_i}}Present contact information for the nearest ancestor or the entire body of work.{{/i}}

                  + +

                  <address>

                  +

                  {{_i}}Preserve formatting by ending all lines with <br>.{{/i}}

                  +
                  +
                  + Twitter, Inc.
                  + 795 Folsom Ave, Suite 600
                  + San Francisco, CA 94107
                  + P: (123) 456-7890 +
                  +
                  + {{_i}}Full Name{{/i}}
                  + {{_i}}first.last@example.com{{/i}} +
                  +
                  +
                  +<address>
                  +  <strong>Twitter, Inc.</strong><br>
                  +  795 Folsom Ave, Suite 600<br>
                  +  San Francisco, CA 94107<br>
                  +  <abbr title="Phone">P:</abbr> (123) 456-7890
                  +</address>
                  +
                  +<address>
                  +  <strong>{{_i}}Full Name{{/i}}</strong><br>
                  +  <a href="mailto:#">{{_i}}first.last@example.com{{/i}}</a>
                  +</address>
                  +
                  + + +
                  + + + {{! Blockquotes }} +

                  {{_i}}Blockquotes{{/i}}

                  +

                  {{_i}}For quoting blocks of content from another source within your document.{{/i}}

                  + +

                  {{_i}}Default blockquote{{/i}}

                  +

                  {{_i}}Wrap <blockquote> around any HTML as the quote. For straight quotes we recommend a <p>.{{/i}}

                  +
                  +
                  +

                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

                  +
                  +
                  +
                  +<blockquote>
                  +  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
                  +</blockquote>
                  +
                  + +

                  {{_i}}Blockquote options{{/i}}

                  +

                  {{_i}}Style and content changes for simple variations on a standard blockquote.{{/i}}

                  + +

                  {{_i}}Naming a source{{/i}}

                  +

                  {{_i}}Add <small> tag for identifying the source. Wrap the name of the source work in <cite>.{{/i}}

                  +
                  +
                  +

                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

                  + {{_i}}Someone famous in Source Title{{/i}} +
                  +
                  +
                  +<blockquote>
                  +  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
                  +  <small>{{_i}}Someone famous <cite title="Source Title">Source Title</cite>{{/i}}</small>
                  +</blockquote>
                  +
                  + +

                  {{_i}}Alternate displays{{/i}}

                  +

                  {{_i}}Use .pull-right for a floated, right-aligned blockquote.{{/i}}

                  +
                  +
                  +

                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

                  + {{_i}}Someone famous in Source Title{{/i}} +
                  +
                  +
                  +<blockquote class="pull-right">
                  +  ...
                  +</blockquote>
                  +
                  + + +
                  + + + +

                  {{_i}}Lists{{/i}}

                  + +

                  {{_i}}Unordered{{/i}}

                  +

                  {{_i}}A list of items in which the order does not explicitly matter.{{/i}}

                  +
                  +
                    +
                  • Lorem ipsum dolor sit amet
                  • +
                  • Consectetur adipiscing elit
                  • +
                  • Integer molestie lorem at massa
                  • +
                  • Facilisis in pretium nisl aliquet
                  • +
                  • Nulla volutpat aliquam velit +
                      +
                    • Phasellus iaculis neque
                    • +
                    • Purus sodales ultricies
                    • +
                    • Vestibulum laoreet porttitor sem
                    • +
                    • Ac tristique libero volutpat at
                    • +
                    +
                  • +
                  • Faucibus porta lacus fringilla vel
                  • +
                  • Aenean sit amet erat nunc
                  • +
                  • Eget porttitor lorem
                  • +
                  +
                  +
                  +<ul>
                  +  <li>...</li>
                  +</ul>
                  +
                  + +

                  {{_i}}Ordered{{/i}}

                  +

                  {{_i}}A list of items in which the order does explicitly matter.{{/i}}

                  +
                  +
                    +
                  1. Lorem ipsum dolor sit amet
                  2. +
                  3. Consectetur adipiscing elit
                  4. +
                  5. Integer molestie lorem at massa
                  6. +
                  7. Facilisis in pretium nisl aliquet
                  8. +
                  9. Nulla volutpat aliquam velit
                  10. +
                  11. Faucibus porta lacus fringilla vel
                  12. +
                  13. Aenean sit amet erat nunc
                  14. +
                  15. Eget porttitor lorem
                  16. +
                  +
                  +
                  +<ol>
                  +  <li>...</li>
                  +</ol>
                  +
                  + +

                  {{_i}}Unstyled{{/i}}

                  +

                  {{_i}}Remove the default list-style and left padding on list items (immediate children only).{{/i}}

                  +
                  +
                    +
                  • Lorem ipsum dolor sit amet
                  • +
                  • Consectetur adipiscing elit
                  • +
                  • Integer molestie lorem at massa
                  • +
                  • Facilisis in pretium nisl aliquet
                  • +
                  • Nulla volutpat aliquam velit +
                      +
                    • Phasellus iaculis neque
                    • +
                    • Purus sodales ultricies
                    • +
                    • Vestibulum laoreet porttitor sem
                    • +
                    • Ac tristique libero volutpat at
                    • +
                    +
                  • +
                  • Faucibus porta lacus fringilla vel
                  • +
                  • Aenean sit amet erat nunc
                  • +
                  • Eget porttitor lorem
                  • +
                  +
                  +
                  +<ul class="unstyled">
                  +  <li>...</li>
                  +</ul>
                  +
                  + +

                  {{_i}}Inline{{/i}}

                  +

                  {{_i}}Place all list items on a single line with inline-block and some light padding.{{/i}}

                  +
                  +
                    +
                  • Lorem ipsum
                  • +
                  • Phasellus iaculis
                  • +
                  • Nulla volutpat
                  • +
                  +
                  +
                  +<ul class="inline">
                  +  <li>...</li>
                  +</ul>
                  +
                  + +

                  {{_i}}Description{{/i}}

                  +

                  {{_i}}A list of terms with their associated descriptions.{{/i}}

                  +
                  +
                  +
                  {{_i}}Description lists{{/i}}
                  +
                  {{_i}}A description list is perfect for defining terms.{{/i}}
                  +
                  Euismod
                  +
                  Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
                  +
                  Donec id elit non mi porta gravida at eget metus.
                  +
                  Malesuada porta
                  +
                  Etiam porta sem malesuada magna mollis euismod.
                  +
                  +
                  +
                  +<dl>
                  +  <dt>...</dt>
                  +  <dd>...</dd>
                  +</dl>
                  +
                  + +

                  {{_i}}Horizontal description{{/i}}

                  +

                  {{_i}}Make terms and descriptions in <dl> line up side-by-side.{{/i}}

                  +
                  +
                  +
                  {{_i}}Description lists{{/i}}
                  +
                  {{_i}}A description list is perfect for defining terms.{{/i}}
                  +
                  Euismod
                  +
                  Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
                  +
                  Donec id elit non mi porta gravida at eget metus.
                  +
                  Malesuada porta
                  +
                  Etiam porta sem malesuada magna mollis euismod.
                  +
                  Felis euismod semper eget lacinia
                  +
                  Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
                  +
                  +
                  +
                  +<dl class="dl-horizontal">
                  +  <dt>...</dt>
                  +  <dd>...</dd>
                  +</dl>
                  +
                  +

                  + {{_i}}Heads up!{{/i}} + {{_i}}Horizontal description lists will truncate terms that are too long to fit in the left column fix text-overflow. In narrower viewports, they will change to the default stacked layout.{{/i}} +

                  +
                  + + + + +
                  + + +

                  Inline

                  +

                  Wrap inline snippets of code with <code>.

                  +
                  + For example, <section> should be wrapped as inline. +
                  +
                  +{{_i}}For example, <code>&lt;section&gt;</code> should be wrapped as inline.{{/i}}
                  +
                  + +

                  Basic block

                  +

                  {{_i}}Use <pre> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.{{/i}}

                  +
                  +
                  <p>{{_i}}Sample text here...{{/i}}</p>
                  +
                  +
                  +<pre>
                  +  &lt;p&gt;{{_i}}Sample text here...{{/i}}&lt;/p&gt;
                  +</pre>
                  +
                  +

                  {{_i}}Heads up!{{/i}} {{_i}}Be sure to keep code within <pre> tags as close to the left as possible; it will render all tabs.{{/i}}

                  +

                  {{_i}}You may optionally add the .pre-scrollable class which will set a max-height of 350px and provide a y-axis scrollbar.{{/i}}

                  +
                  + + + + +
                  + + +

                  {{_i}}Default styles{{/i}}

                  +

                  {{_i}}For basic styling—light padding and only horizontal dividers—add the base class .table to any <table>.{{/i}}

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
                  1MarkOtto@mdo
                  2JacobThornton@fat
                  3Larrythe Bird@twitter
                  +
                  {{! /example }} +
                  +<table class="table">
                  +  …
                  +</table>
                  +
                  + + +
                  + + +

                  {{_i}}Optional classes{{/i}}

                  +

                  {{_i}}Add any of the following classes to the .table base class.{{/i}}

                  + +

                  {{_i}}.table-striped{{/i}}

                  +

                  {{_i}}Adds zebra-striping to any table row within the <tbody> via the :nth-child CSS selector (not available in IE7-8).{{/i}}

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
                  1MarkOtto@mdo
                  2JacobThornton@fat
                  3Larrythe Bird@twitter
                  +
                  {{! /example }} +
                  +<table class="table table-striped">
                  +  …
                  +</table>
                  +
                  + +

                  {{_i}}.table-bordered{{/i}}

                  +

                  {{_i}}Add borders and rounded corners to the table.{{/i}}

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
                  1MarkOtto@mdo
                  MarkOtto@TwBootstrap
                  2JacobThornton@fat
                  3Larry the Bird@twitter
                  +
                  {{! /example }} +
                  +<table class="table table-bordered">
                  +  …
                  +</table>
                  +
                  + +

                  {{_i}}.table-hover{{/i}}

                  +

                  {{_i}}Enable a hover state on table rows within a <tbody>.{{/i}}

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
                  1MarkOtto@mdo
                  2JacobThornton@fat
                  3Larry the Bird@twitter
                  +
                  {{! /example }} +
                  +<table class="table table-hover">
                  +  …
                  +</table>
                  +
                  + +

                  {{_i}}.table-condensed{{/i}}

                  +

                  {{_i}}Makes tables more compact by cutting cell padding in half.{{/i}}

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
                  1MarkOtto@mdo
                  2JacobThornton@fat
                  3Larry the Bird@twitter
                  +
                  {{! /example }} +
                  +<table class="table table-condensed">
                  +  …
                  +</table>
                  +
                  + + +
                  + + +

                  {{_i}}Optional row classes{{/i}}

                  +

                  {{_i}}Use contextual classes to color table rows.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Class{{/i}}{{_i}}Description{{/i}}
                  + .success + {{_i}}Indicates a successful or positive action.{{/i}}
                  + .error + {{_i}}Indicates a dangerous or potentially negative action.{{/i}}
                  + .warning + {{_i}}Indicates a warning that might need attention.{{/i}}
                  + .info + {{_i}}Used as an alternative to the default styles.{{/i}}
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  #{{_i}}Product{{/i}}{{_i}}Payment Taken{{/i}}{{_i}}Status{{/i}}
                  1TB - Monthly01/04/2012Approved
                  2TB - Monthly02/04/2012Declined
                  3TB - Monthly03/04/2012Pending
                  4TB - Monthly04/04/2012Call in to confirm
                  +
                  {{! /example }} +
                  +...
                  +  <tr class="success">
                  +    <td>1</td>
                  +    <td>TB - Monthly</td>
                  +    <td>01/04/2012</td>
                  +    <td>Approved</td>
                  +  </tr>
                  +...
                  +
                  + + +
                  + + +

                  {{_i}}Supported table markup{{/i}}

                  +

                  {{_i}}List of supported table HTML elements and how they should be used.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Tag{{/i}}{{_i}}Description{{/i}}
                  + <table> + + {{_i}}Wrapping element for displaying data in a tabular format{{/i}} +
                  + <thead> + + {{_i}}Container element for table header rows (<tr>) to label table columns{{/i}} +
                  + <tbody> + + {{_i}}Container element for table rows (<tr>) in the body of the table{{/i}} +
                  + <tr> + + {{_i}}Container element for a set of table cells (<td> or <th>) that appears on a single row{{/i}} +
                  + <td> + + {{_i}}Default table cell{{/i}} +
                  + <th> + + {{_i}}Special table cell for column (or row, depending on scope and placement) labels{{/i}} +
                  + <caption> + + {{_i}}Description or summary of what the table holds, especially useful for screen readers{{/i}} +
                  +
                  +<table>
                  +  <caption>...</caption>
                  +  <thead>
                  +    <tr>
                  +      <th>...</th>
                  +      <th>...</th>
                  +    </tr>
                  +  </thead>
                  +  <tbody>
                  +    <tr>
                  +      <td>...</td>
                  +      <td>...</td>
                  +    </tr>
                  +  </tbody>
                  +</table>
                  +
                  + +
                  + + + + +
                  + + +

                  {{_i}}Default styles{{/i}}

                  +

                  {{_i}}Individual form controls receive styling, but without any required base class on the <form> or large changes in markup. Results in stacked, left-aligned labels on top of form controls.{{/i}}

                  +
                  +
                  + Legend + + + {{_i}}Example block-level help text here.{{/i}} + + +
                  +
                  {{! /example }} +
                  +<form>
                  +  <fieldset>
                  +    <legend>{{_i}}Legend{{/i}}</legend>
                  +    <label>{{_i}}Label name{{/i}}</label>
                  +    <input type="text" placeholder="{{_i}}Type something…{{/i}}">
                  +    <span class="help-block">Example block-level help text here.</span>
                  +    <label class="checkbox">
                  +      <input type="checkbox"> {{_i}}Check me out{{/i}}
                  +    </label>
                  +    <button type="submit" class="btn">{{_i}}Submit{{/i}}</button>
                  +  </fieldset>
                  +</form>
                  +
                  + + +
                  + + +

                  {{_i}}Optional layouts{{/i}}

                  +

                  {{_i}}Included with Bootstrap are three optional form layouts for common use cases.{{/i}}

                  + +

                  {{_i}}Search form{{/i}}

                  +

                  {{_i}}Add .form-search to the form and .search-query to the <input> for an extra-rounded text input.{{/i}}

                  + {{! /example }} +
                  +<form class="form-search">
                  +  <input type="text" class="input-medium search-query">
                  +  <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
                  +</form>
                  +
                  + +

                  {{_i}}Inline form{{/i}}

                  +

                  {{_i}}Add .form-inline for left-aligned labels and inline-block controls for a compact layout.{{/i}}

                  +
                  + + + + +
                  {{! /example }} +
                  +<form class="form-inline">
                  +  <input type="text" class="input-small" placeholder="{{_i}}Email{{/i}}">
                  +  <input type="password" class="input-small" placeholder="{{_i}}Password{{/i}}">
                  +  <label class="checkbox">
                  +    <input type="checkbox"> {{_i}}Remember me{{/i}}
                  +  </label>
                  +  <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
                  +</form>
                  +
                  + +

                  {{_i}}Horizontal form{{/i}}

                  +

                  {{_i}}Right align labels and float them to the left to make them appear on the same line as controls. Requires the most markup changes from a default form:{{/i}}

                  +
                    +
                  • {{_i}}Add .form-horizontal to the form{{/i}}
                  • +
                  • {{_i}}Wrap labels and controls in .control-group{{/i}}
                  • +
                  • {{_i}}Add .control-label to the label{{/i}}
                  • +
                  • {{_i}}Wrap any associated controls in .controls for proper alignment{{/i}}
                  • +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  +
                  + + +
                  +
                  +
                  +
                  +<form class="form-horizontal">
                  +  <div class="control-group">
                  +    <label class="control-label" for="inputEmail">{{_i}}Email{{/i}}</label>
                  +    <div class="controls">
                  +      <input type="text" id="inputEmail" placeholder="{{_i}}Email{{/i}}">
                  +    </div>
                  +  </div>
                  +  <div class="control-group">
                  +    <label class="control-label" for="inputPassword">{{_i}}Password{{/i}}</label>
                  +    <div class="controls">
                  +      <input type="password" id="inputPassword" placeholder="{{_i}}Password{{/i}}">
                  +    </div>
                  +  </div>
                  +  <div class="control-group">
                  +    <div class="controls">
                  +      <label class="checkbox">
                  +        <input type="checkbox"> {{_i}}Remember me{{/i}}
                  +      </label>
                  +      <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
                  +    </div>
                  +  </div>
                  +</form>
                  +
                  + + +
                  + + +

                  {{_i}}Supported form controls{{/i}}

                  +

                  {{_i}}Examples of standard form controls supported in an example form layout.{{/i}}

                  + +

                  {{_i}}Inputs{{/i}}

                  +

                  {{_i}}Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.{{/i}}

                  +

                  {{_i}}Requires the use of a specified type at all times.{{/i}}

                  +
                  + +
                  +
                  +<input type="text" placeholder="Text input">
                  +
                  + +

                  {{_i}}Textarea{{/i}}

                  +

                  {{_i}}Form control which supports multiple lines of text. Change rows attribute as necessary.{{/i}}

                  +
                  + +
                  +
                  +<textarea rows="3"></textarea>
                  +
                  + +

                  {{_i}}Checkboxes and radios{{/i}}

                  +

                  {{_i}}Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.{{/i}}

                  +

                  {{_i}}Default (stacked){{/i}}

                  +
                  + +
                  + + +
                  +
                  +<label class="checkbox">
                  +  <input type="checkbox" value="">
                  +  {{_i}}Option one is this and that—be sure to include why it's great{{/i}}
                  +</label>
                  +
                  +<label class="radio">
                  +  <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
                  +  {{_i}}Option one is this and that—be sure to include why it's great{{/i}}
                  +</label>
                  +<label class="radio">
                  +  <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
                  +  {{_i}}Option two can be something else and selecting it will deselect option one{{/i}}
                  +</label>
                  +
                  + +

                  {{_i}}Inline checkboxes{{/i}}

                  +

                  {{_i}}Add the .inline class to a series of checkboxes or radios for controls appear on the same line.{{/i}}

                  +
                  + + + +
                  +
                  +<label class="checkbox inline">
                  +  <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
                  +</label>
                  +<label class="checkbox inline">
                  +  <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
                  +</label>
                  +<label class="checkbox inline">
                  +  <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
                  +</label>
                  +
                  + +

                  {{_i}}Selects{{/i}}

                  +

                  {{_i}}Use the default option or specify a multiple="multiple" to show multiple options at once.{{/i}}

                  +
                  + +
                  + +
                  +
                  +<select>
                  +  <option>1</option>
                  +  <option>2</option>
                  +  <option>3</option>
                  +  <option>4</option>
                  +  <option>5</option>
                  +</select>
                  +
                  +<select multiple="multiple">
                  +  <option>1</option>
                  +  <option>2</option>
                  +  <option>3</option>
                  +  <option>4</option>
                  +  <option>5</option>
                  +</select>
                  +
                  + + +
                  + + +

                  {{_i}}Extending form controls{{/i}}

                  +

                  {{_i}}Adding on top of existing browser controls, Bootstrap includes other useful form components.{{/i}}

                  + +

                  {{_i}}Prepended and appended inputs{{/i}}

                  +

                  {{_i}}Add text or buttons before or after any text-based input. Do note that select elements are not supported here.{{/i}}

                  + +

                  {{_i}}Default options{{/i}}

                  +

                  {{_i}}Wrap an .add-on and an input with one of two classes to prepend or append text to an input.{{/i}}

                  +
                  +
                  + @ + +
                  +
                  +
                  + + .00 +
                  +
                  +
                  +<div class="input-prepend">
                  +  <span class="add-on">@</span>
                  +  <input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
                  +</div>
                  +<div class="input-append">
                  +  <input class="span2" id="appendedInput" type="text">
                  +  <span class="add-on">.00</span>
                  +</div>
                  +
                  + +

                  {{_i}}Combined{{/i}}

                  +

                  {{_i}}Use both classes and two instances of .add-on to prepend and append an input.{{/i}}

                  +
                  +
                  + $ + + .00 +
                  +
                  +
                  +<div class="input-prepend input-append">
                  +  <span class="add-on">$</span>
                  +  <input class="span2" id="appendedPrependedInput" type="text">
                  +  <span class="add-on">.00</span>
                  +</div>
                  +
                  + +

                  {{_i}}Buttons instead of text{{/i}}

                  +

                  {{_i}}Instead of a <span> with text, use a .btn to attach a button (or two) to an input.{{/i}}

                  +
                  +
                  + + +
                  +
                  +
                  +<div class="input-append">
                  +  <input class="span2" id="appendedInputButton" type="text">
                  +  <button class="btn" type="button">Go!</button>
                  +</div>
                  +
                  +
                  +
                  + + + +
                  +
                  +
                  +<div class="input-append">
                  +  <input class="span2" id="appendedInputButtons" type="text">
                  +  <button class="btn" type="button">Search</button>
                  +  <button class="btn" type="button">Options</button>
                  +</div>
                  +
                  + +

                  {{_i}}Button dropdowns{{/i}}

                  +

                  {{_i}}{{/i}}

                  +
                  + +
                  +
                  +<div class="input-append">
                  +  <input class="span2" id="appendedDropdownButton" type="text">
                  +  <div class="btn-group">
                  +    <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +      {{_i}}Action{{/i}}
                  +      <span class="caret"></span>
                  +    </button>
                  +    <ul class="dropdown-menu">
                  +      ...
                  +    </ul>
                  +  </div>
                  +</div>
                  +
                  + +
                  + +
                  +
                  +<div class="input-prepend">
                  +  <div class="btn-group">
                  +    <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +      {{_i}}Action{{/i}}
                  +      <span class="caret"></span>
                  +    </button>
                  +    <ul class="dropdown-menu">
                  +      ...
                  +    </ul>
                  +  </div>
                  +  <input class="span2" id="prependedDropdownButton" type="text">
                  +</div>
                  +
                  + +
                  + +
                  +
                  +<div class="input-prepend input-append">
                  +  <div class="btn-group">
                  +    <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +      {{_i}}Action{{/i}}
                  +      <span class="caret"></span>
                  +    </button>
                  +    <ul class="dropdown-menu">
                  +      ...
                  +    </ul>
                  +  </div>
                  +  <input class="span2" id="appendedPrependedDropdownButton" type="text">
                  +  <div class="btn-group">
                  +    <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +      {{_i}}Action{{/i}}
                  +      <span class="caret"></span>
                  +    </button>
                  +    <ul class="dropdown-menu">
                  +      ...
                  +    </ul>
                  +  </div>
                  +</div>
                  +
                  + +

                  {{_i}}Segmented dropdown groups{{/i}}

                  +
                  + + +
                  +
                  +<form>
                  +  <div class="input-prepend">
                  +    <div class="btn-group">...</div>
                  +    <input type="text">
                  +  </div>
                  +  <div class="input-append">
                  +    <input type="text">
                  +    <div class="btn-group">...</div>
                  +  </div>
                  +</form>
                  +
                  + +

                  {{_i}}Search form{{/i}}

                  + {{! /example }} +
                  +<form class="form-search">
                  +  <div class="input-append">
                  +    <input type="text" class="span2 search-query">
                  +    <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
                  +  </div>
                  +  <div class="input-prepend">
                  +    <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
                  +    <input type="text" class="span2 search-query">
                  +  </div>
                  +</form>
                  +
                  + +

                  {{_i}}Control sizing{{/i}}

                  +

                  {{_i}}Use relative sizing classes like .input-large or match your inputs to the grid column sizes using .span* classes.{{/i}}

                  + +

                  {{_i}}Block level inputs{{/i}}

                  +

                  {{_i}}Make any <input> or <textarea> element behave like a block level element.{{/i}}

                  +
                  +
                  + +
                  +
                  +
                  +<input class="input-block-level" type="text" placeholder=".input-block-level">
                  +
                  + +

                  {{_i}}Relative sizing{{/i}}

                  +
                  +
                  + + + + + + +
                  +
                  +
                  +<input class="input-mini" type="text" placeholder=".input-mini">
                  +<input class="input-small" type="text" placeholder=".input-small">
                  +<input class="input-medium" type="text" placeholder=".input-medium">
                  +<input class="input-large" type="text" placeholder=".input-large">
                  +<input class="input-xlarge" type="text" placeholder=".input-xlarge">
                  +<input class="input-xxlarge" type="text" placeholder=".input-xxlarge">
                  +
                  +

                  + {{_i}}Heads up!{{/i}} In future versions, we'll be altering the use of these relative input classes to match our button sizes. For example, .input-large will increase the padding and font-size of an input. +

                  + +

                  {{_i}}Grid sizing{{/i}}

                  +

                  {{_i}}Use .span1 to .span12 for inputs that match the same sizes of the grid columns.{{/i}}

                  +
                  +
                  + + + + + + +
                  +
                  +
                  +<input class="span1" type="text" placeholder=".span1">
                  +<input class="span2" type="text" placeholder=".span2">
                  +<input class="span3" type="text" placeholder=".span3">
                  +<select class="span1">
                  +  ...
                  +</select>
                  +<select class="span2">
                  +  ...
                  +</select>
                  +<select class="span3">
                  +  ...
                  +</select>
                  +
                  + +

                  {{_i}}For multiple grid inputs per line, use the .controls-row modifier class for proper spacing. It floats the inputs to collapse white-space, sets the proper margins, and clears the float.{{/i}}

                  +
                  +
                  + +
                  +
                  + + +
                  +
                  + + +
                  +
                  + + +
                  +
                  + + +
                  +
                  +
                  +<div class="controls">
                  +  <input class="span5" type="text" placeholder=".span5">
                  +</div>
                  +<div class="controls controls-row">
                  +  <input class="span4" type="text" placeholder=".span4">
                  +  <input class="span1" type="text" placeholder=".span1">
                  +</div>
                  +...
                  +
                  + +

                  {{_i}}Uneditable inputs{{/i}}

                  +

                  {{_i}}Present data in a form that's not editable without using actual form markup.{{/i}}

                  +
                  + Some value here +
                  +
                  +<span class="input-xlarge uneditable-input">Some value here</span>
                  +
                  + +

                  {{_i}}Form actions{{/i}}

                  +

                  {{_i}}End a form with a group of actions (buttons). When placed within a .form-actions, the buttons will automatically indent to line up with the form controls.{{/i}}

                  +
                  +
                  + + +
                  +
                  +
                  +<div class="form-actions">
                  +  <button type="submit" class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
                  +  <button type="button" class="btn">{{_i}}Cancel{{/i}}</button>
                  +</div>
                  +
                  + +

                  {{_i}}Help text{{/i}}

                  +

                  {{_i}}Inline and block level support for help text that appears around form controls.{{/i}}

                  +

                  {{_i}}Inline help{{/i}}

                  +
                  + Inline help text +
                  +
                  +<input type="text"><span class="help-inline">Inline help text</span>
                  +
                  + +

                  {{_i}}Block help{{/i}}

                  +
                  + + A longer block of help text that breaks onto a new line and may extend beyond one line. +
                  +
                  +<input type="text"><span class="help-block">A longer block of help text that breaks onto a new line and may extend beyond one line.</span>
                  +
                  + + +
                  + + +

                  {{_i}}Form control states{{/i}}

                  +

                  {{_i}}Provide feedback to users or visitors with basic feedback states on form controls and labels.{{/i}}

                  + +

                  {{_i}}Input focus{{/i}}

                  +

                  {{_i}}We remove the default outline styles on some form controls and apply a box-shadow in its place for :focus.{{/i}}

                  +
                  + +
                  +
                  +<input class="input-xlarge" id="focusedInput" type="text" value="{{_i}}This is focused...{{/i}}">
                  +
                  + +

                  {{_i}}Invalid inputs{{/i}}

                  +

                  {{_i}}Style inputs via default browser functionality with :invalid. Specify a type, add the required attribute if the field is not optional, and (if applicable) specify a pattern.{{/i}}

                  +

                  {{_i}}This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.{{/i}}

                  +
                  + +
                  +
                  +<input class="span3" type="email" required>
                  +
                  + +

                  {{_i}}Disabled inputs{{/i}}

                  +

                  {{_i}}Add the disabled attribute on an input to prevent user input and trigger a slightly different look.{{/i}}

                  +
                  + +
                  +
                  +<input class="input-xlarge" id="disabledInput" type="text" placeholder="{{_i}}Disabled input here...{{/i}}" disabled>
                  +
                  + +

                  {{_i}}Validation states{{/i}}

                  +

                  {{_i}}Bootstrap includes validation styles for error, warning, info, and success messages. To use, add the appropriate class to the surrounding .control-group.{{/i}}

                  + +
                  +
                  + +
                  + + {{_i}}Something may have gone wrong{{/i}} +
                  +
                  +
                  + +
                  + + {{_i}}Please correct the error{{/i}} +
                  +
                  +
                  + +
                  + + {{_i}}Username is taken{{/i}} +
                  +
                  +
                  + +
                  + + {{_i}}Woohoo!{{/i}} +
                  +
                  +
                  +
                  +<div class="control-group warning">
                  +  <label class="control-label" for="inputWarning">{{_i}}Input with warning{{/i}}</label>
                  +  <div class="controls">
                  +    <input type="text" id="inputWarning">
                  +    <span class="help-inline">{{_i}}Something may have gone wrong{{/i}}</span>
                  +  </div>
                  +</div>
                  +
                  +<div class="control-group error">
                  +  <label class="control-label" for="inputError">{{_i}}Input with error{{/i}}</label>
                  +  <div class="controls">
                  +    <input type="text" id="inputError">
                  +    <span class="help-inline">{{_i}}Please correct the error{{/i}}</span>
                  +  </div>
                  +</div>
                  +
                  +<div class="control-group info">
                  +  <label class="control-label" for="inputInfo">{{_i}}Input with info{{/i}}</label>
                  +  <div class="controls">
                  +    <input type="text" id="inputInfo">
                  +    <span class="help-inline">{{_i}}Username is already taken{{/i}}</span>
                  +  </div>
                  +</div>
                  +
                  +<div class="control-group success">
                  +  <label class="control-label" for="inputSuccess">{{_i}}Input with success{{/i}}</label>
                  +  <div class="controls">
                  +    <input type="text" id="inputSuccess">
                  +    <span class="help-inline">{{_i}}Woohoo!{{/i}}</span>
                  +  </div>
                  +</div>
                  +
                  + +
                  + + + + +
                  + + +

                  Default buttons

                  +

                  {{_i}}Button styles can be applied to anything with the .btn class applied. However, typically you'll want to apply these to only <a> and <button> elements for the best rendering.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Button{{/i}}{{_i}}class=""{{/i}}{{_i}}Description{{/i}}
                  btn{{_i}}Standard gray button with gradient{{/i}}
                  btn btn-primary{{_i}}Provides extra visual weight and identifies the primary action in a set of buttons{{/i}}
                  btn btn-info{{_i}}Used as an alternative to the default styles{{/i}}
                  btn btn-success{{_i}}Indicates a successful or positive action{{/i}}
                  btn btn-warning{{_i}}Indicates caution should be taken with this action{{/i}}
                  btn btn-danger{{_i}}Indicates a dangerous or potentially negative action{{/i}}
                  btn btn-inverse{{_i}}Alternate dark gray button, not tied to a semantic action or use{{/i}}
                  btn btn-link{{_i}}Deemphasize a button by making it look like a link while maintaining button behavior{{/i}}
                  + +

                  {{_i}}Cross browser compatibility{{/i}}

                  +

                  {{_i}}IE9 doesn't crop background gradients on rounded corners, so we remove it. Related, IE9 jankifies disabled button elements, rendering text gray with a nasty text-shadow that we cannot fix.{{/i}}

                  + + +

                  {{_i}}Button sizes{{/i}}

                  +

                  {{_i}}Fancy larger or smaller buttons? Add .btn-large, .btn-small, or .btn-mini for additional sizes.{{/i}}

                  +
                  +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  +
                  +
                  +<p>
                  +  <button class="btn btn-large btn-primary" type="button">{{_i}}Large button{{/i}}</button>
                  +  <button class="btn btn-large" type="button">{{_i}}Large button{{/i}}</button>
                  +</p>
                  +<p>
                  +  <button class="btn btn-primary" type="button">{{_i}}Default button{{/i}}</button>
                  +  <button class="btn" type="button">{{_i}}Default button{{/i}}</button>
                  +</p>
                  +<p>
                  +  <button class="btn btn-small btn-primary" type="button">{{_i}}Small button{{/i}}</button>
                  +  <button class="btn btn-small" type="button">{{_i}}Small button{{/i}}</button>
                  +</p>
                  +<p>
                  +  <button class="btn btn-mini btn-primary" type="button">{{_i}}Mini button{{/i}}</button>
                  +  <button class="btn btn-mini" type="button">{{_i}}Mini button{{/i}}</button>
                  +</p>
                  +
                  +

                  {{_i}}Create block level buttons—those that span the full width of a parent— by adding .btn-block.{{/i}}

                  +
                  +
                  + + +
                  +
                  +
                  +<button class="btn btn-large btn-block btn-primary" type="button">{{_i}}Block level button{{/i}}</button>
                  +<button class="btn btn-large btn-block" type="button">{{_i}}Block level button{{/i}}</button>
                  +
                  + + +

                  {{_i}}Disabled state{{/i}}

                  +

                  {{_i}}Make buttons look unclickable by fading them back 50%.{{/i}}

                  + +

                  Anchor element

                  +

                  {{_i}}Add the .disabled class to <a> buttons.{{/i}}

                  +

                  + {{_i}}Primary link{{/i}} + {{_i}}Link{{/i}} +

                  +
                  +<a href="#" class="btn btn-large btn-primary disabled">{{_i}}Primary link{{/i}}</a>
                  +<a href="#" class="btn btn-large disabled">{{_i}}Link{{/i}}</a>
                  +
                  +

                  + {{_i}}Heads up!{{/i}} + {{_i}}We use .disabled as a utility class here, similar to the common .active class, so no prefix is required. Also, this class is only for aesthetic; you must use custom JavaScript to disable links here.{{/i}} +

                  + +

                  Button element

                  +

                  {{_i}}Add the disabled attribute to <button> buttons.{{/i}}

                  +

                  + + +

                  +
                  +<button type="button" class="btn btn-large btn-primary disabled" disabled="disabled">{{_i}}Primary button{{/i}}</button>
                  +<button type="button" class="btn btn-large" disabled>{{_i}}Button{{/i}}</button>
                  +
                  + + +

                  {{_i}}One class, multiple tags{{/i}}

                  +

                  {{_i}}Use the .btn class on an <a>, <button>, or <input> element.{{/i}}

                  +
                  + {{_i}}Link{{/i}} + + + +
                  +
                  +<a class="btn" href="">{{_i}}Link{{/i}}</a>
                  +<button class="btn" type="submit">{{_i}}Button{{/i}}</button>
                  +<input class="btn" type="button" value="{{_i}}Input{{/i}}">
                  +<input class="btn" type="submit" value="{{_i}}Submit{{/i}}">
                  +
                  +

                  {{_i}}As a best practice, try to match the element for your context to ensure matching cross-browser rendering. If you have an input, use an <input type="submit"> for your button.{{/i}}

                  + +
                  + + + + +
                  + + +

                  {{_i}}Add classes to an <img> element to easily style images in any project.{{/i}}

                  +
                  + + + +
                  +
                  +<img src="..." class="img-rounded">
                  +<img src="..." class="img-circle">
                  +<img src="..." class="img-polaroid">
                  +
                  +

                  {{_i}}Heads up!{{/i}} {{_i}}.img-rounded and .img-circle do not work in IE7-8 due to lack of border-radius support.{{/i}}

                  + + +
                  + + + + +
                  + + +

                  {{_i}}Icon glyphs{{/i}}

                  +

                  {{_i}}140 icons in sprite form, available in dark gray (default) and white, provided by Glyphicons.{{/i}}

                  +
                    +
                  • icon-glass
                  • +
                  • icon-music
                  • +
                  • icon-search
                  • +
                  • icon-envelope
                  • +
                  • icon-heart
                  • +
                  • icon-star
                  • +
                  • icon-star-empty
                  • +
                  • icon-user
                  • +
                  • icon-film
                  • +
                  • icon-th-large
                  • +
                  • icon-th
                  • +
                  • icon-th-list
                  • +
                  • icon-ok
                  • +
                  • icon-remove
                  • +
                  • icon-zoom-in
                  • +
                  • icon-zoom-out
                  • +
                  • icon-off
                  • +
                  • icon-signal
                  • +
                  • icon-cog
                  • +
                  • icon-trash
                  • +
                  • icon-home
                  • +
                  • icon-file
                  • +
                  • icon-time
                  • +
                  • icon-road
                  • +
                  • icon-download-alt
                  • +
                  • icon-download
                  • +
                  • icon-upload
                  • +
                  • icon-inbox
                  • + +
                  • icon-play-circle
                  • +
                  • icon-repeat
                  • +
                  • icon-refresh
                  • +
                  • icon-list-alt
                  • +
                  • icon-lock
                  • +
                  • icon-flag
                  • +
                  • icon-headphones
                  • +
                  • icon-volume-off
                  • +
                  • icon-volume-down
                  • +
                  • icon-volume-up
                  • +
                  • icon-qrcode
                  • +
                  • icon-barcode
                  • +
                  • icon-tag
                  • +
                  • icon-tags
                  • +
                  • icon-book
                  • +
                  • icon-bookmark
                  • +
                  • icon-print
                  • +
                  • icon-camera
                  • +
                  • icon-font
                  • +
                  • icon-bold
                  • +
                  • icon-italic
                  • +
                  • icon-text-height
                  • +
                  • icon-text-width
                  • +
                  • icon-align-left
                  • +
                  • icon-align-center
                  • +
                  • icon-align-right
                  • +
                  • icon-align-justify
                  • +
                  • icon-list
                  • + +
                  • icon-indent-left
                  • +
                  • icon-indent-right
                  • +
                  • icon-facetime-video
                  • +
                  • icon-picture
                  • +
                  • icon-pencil
                  • +
                  • icon-map-marker
                  • +
                  • icon-adjust
                  • +
                  • icon-tint
                  • +
                  • icon-edit
                  • +
                  • icon-share
                  • +
                  • icon-check
                  • +
                  • icon-move
                  • +
                  • icon-step-backward
                  • +
                  • icon-fast-backward
                  • +
                  • icon-backward
                  • +
                  • icon-play
                  • +
                  • icon-pause
                  • +
                  • icon-stop
                  • +
                  • icon-forward
                  • +
                  • icon-fast-forward
                  • +
                  • icon-step-forward
                  • +
                  • icon-eject
                  • +
                  • icon-chevron-left
                  • +
                  • icon-chevron-right
                  • +
                  • icon-plus-sign
                  • +
                  • icon-minus-sign
                  • +
                  • icon-remove-sign
                  • +
                  • icon-ok-sign
                  • + +
                  • icon-question-sign
                  • +
                  • icon-info-sign
                  • +
                  • icon-screenshot
                  • +
                  • icon-remove-circle
                  • +
                  • icon-ok-circle
                  • +
                  • icon-ban-circle
                  • +
                  • icon-arrow-left
                  • +
                  • icon-arrow-right
                  • +
                  • icon-arrow-up
                  • +
                  • icon-arrow-down
                  • +
                  • icon-share-alt
                  • +
                  • icon-resize-full
                  • +
                  • icon-resize-small
                  • +
                  • icon-plus
                  • +
                  • icon-minus
                  • +
                  • icon-asterisk
                  • +
                  • icon-exclamation-sign
                  • +
                  • icon-gift
                  • +
                  • icon-leaf
                  • +
                  • icon-fire
                  • +
                  • icon-eye-open
                  • +
                  • icon-eye-close
                  • +
                  • icon-warning-sign
                  • +
                  • icon-plane
                  • +
                  • icon-calendar
                  • +
                  • icon-random
                  • +
                  • icon-comment
                  • +
                  • icon-magnet
                  • + +
                  • icon-chevron-up
                  • +
                  • icon-chevron-down
                  • +
                  • icon-retweet
                  • +
                  • icon-shopping-cart
                  • +
                  • icon-folder-close
                  • +
                  • icon-folder-open
                  • +
                  • icon-resize-vertical
                  • +
                  • icon-resize-horizontal
                  • +
                  • icon-hdd
                  • +
                  • icon-bullhorn
                  • +
                  • icon-bell
                  • +
                  • icon-certificate
                  • +
                  • icon-thumbs-up
                  • +
                  • icon-thumbs-down
                  • +
                  • icon-hand-right
                  • +
                  • icon-hand-left
                  • +
                  • icon-hand-up
                  • +
                  • icon-hand-down
                  • +
                  • icon-circle-arrow-right
                  • +
                  • icon-circle-arrow-left
                  • +
                  • icon-circle-arrow-up
                  • +
                  • icon-circle-arrow-down
                  • +
                  • icon-globe
                  • +
                  • icon-wrench
                  • +
                  • icon-tasks
                  • +
                  • icon-filter
                  • +
                  • icon-briefcase
                  • +
                  • icon-fullscreen
                  • +
                  + +

                  Glyphicons attribution

                  +

                  {{_i}}Glyphicons Halflings are normally not available for free, but an arrangement between Bootstrap and the Glyphicons creators have made this possible at no cost to you as developers. As a thank you, we ask you to include an optional link back to Glyphicons whenever practical.{{/i}}

                  + + +
                  + + +

                  {{_i}}How to use{{/i}}

                  +

                  {{_i}}All icons require an <i> tag with a unique class, prefixed with icon-. To use, place the following code just about anywhere:{{/i}}

                  +
                  +<i class="icon-search"></i>
                  +
                  +

                  {{_i}}There are also styles available for inverted (white) icons, made ready with one extra class. We will specifically enforce this class on hover and active states for nav and dropdown links.{{/i}}

                  +
                  +<i class="icon-search icon-white"></i>
                  +
                  +

                  + {{_i}}Heads up!{{/i}} + {{_i}}When using beside strings of text, as in buttons or nav links, be sure to leave a space after the <i> tag for proper spacing.{{/i}} +

                  + + +
                  + + +

                  {{_i}}Icon examples{{/i}}

                  +

                  {{_i}}Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.{{/i}}

                  + +

                  {{_i}}Buttons{{/i}}

                  + +
                  {{_i}}Button group in a button toolbar{{/i}}
                  +
                  +
                  +
                  + + + + +
                  +
                  +
                  {{! /bs-docs-example }} +
                  +<div class="btn-toolbar">
                  +  <div class="btn-group">
                  +    <a class="btn" href="#"><i class="icon-align-left"></i></a>
                  +    <a class="btn" href="#"><i class="icon-align-center"></i></a>
                  +    <a class="btn" href="#"><i class="icon-align-right"></i></a>
                  +    <a class="btn" href="#"><i class="icon-align-justify"></i></a>
                  +  </div>
                  +</div>
                  +
                  + +
                  {{_i}}Dropdown in a button group{{/i}}
                  + {{! /bs-docs-example }} +
                  +<div class="btn-group">
                  +  <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> {{_i}}User{{/i}}</a>
                  +  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
                  +  <ul class="dropdown-menu">
                  +    <li><a href="#"><i class="icon-pencil"></i> {{_i}}Edit{{/i}}</a></li>
                  +    <li><a href="#"><i class="icon-trash"></i> {{_i}}Delete{{/i}}</a></li>
                  +    <li><a href="#"><i class="icon-ban-circle"></i> {{_i}}Ban{{/i}}</a></li>
                  +    <li class="divider"></li>
                  +    <li><a href="#"><i class="i"></i> {{_i}}Make admin{{/i}}</a></li>
                  +  </ul>
                  +</div>
                  +
                  + +
                  {{_i}}Button sizes{{/i}}
                  + {{! /bs-docs-example }} +
                  +<a class="btn btn-large" href="#"><i class="icon-star"></i> Star</a>
                  +<a class="btn btn-small" href="#"><i class="icon-star"></i> Star</a>
                  +<a class="btn btn-mini" href="#"><i class="icon-star"></i> Star</a>
                  +
                  + +

                  {{_i}}Navigation{{/i}}

                  + {{! /bs-docs-example }} +
                  +<ul class="nav nav-list">
                  +  <li class="active"><a href="#"><i class="icon-home icon-white"></i> {{_i}}Home{{/i}}</a></li>
                  +  <li><a href="#"><i class="icon-book"></i> {{_i}}Library{{/i}}</a></li>
                  +  <li><a href="#"><i class="icon-pencil"></i> {{_i}}Applications{{/i}}</a></li>
                  +  <li><a href="#"><i class="i"></i> {{_i}}Misc{{/i}}</a></li>
                  +</ul>
                  +
                  + +

                  {{_i}}Form fields{{/i}}

                  +
                  +
                  + +
                  +
                  + +
                  +
                  +
                  +
                  +
                  +<div class="control-group">
                  +  <label class="control-label" for="inputIcon">{{_i}}Email address{{/i}}</label>
                  +  <div class="controls">
                  +    <div class="input-prepend">
                  +      <span class="add-on"><i class="icon-envelope"></i></span>
                  +      <input class="span2" id="inputIcon" type="text">
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  + +
                  + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/components.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/components.mustache new file mode 100644 index 0000000..6d3ff9b --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/components.mustache @@ -0,0 +1,2505 @@ + +
                  +
                  +

                  {{_i}}Components{{/i}}

                  +

                  {{_i}}Dozens of reusable components built to provide navigation, alerts, popovers, and more.{{/i}}

                  +
                  +
                  + + +
                  + + +
                  + +
                  + + + + + + + + + + +
                  + + +

                  {{_i}}Examples{{/i}}

                  +

                  {{_i}}Two basic options, along with two more specific variations.{{/i}}

                  + +

                  {{_i}}Single button group{{/i}}

                  +

                  {{_i}}Wrap a series of buttons with .btn in .btn-group.{{/i}}

                  +
                  +
                  + + + +
                  +
                  +
                  +<div class="btn-group">
                  +  <button class="btn">Left</button>
                  +  <button class="btn">Middle</button>
                  +  <button class="btn">Right</button>
                  +</div>
                  +
                  + +

                  {{_i}}Multiple button groups{{/i}}

                  +

                  {{_i}}Combine sets of <div class="btn-group"> into a <div class="btn-toolbar"> for more complex components.{{/i}}

                  +
                  +
                  +
                  + + + + +
                  +
                  + + + +
                  +
                  + +
                  +
                  +
                  +
                  +<div class="btn-toolbar">
                  +  <div class="btn-group">
                  +    ...
                  +  </div>
                  +</div>
                  +
                  + +

                  {{_i}}Vertical button groups{{/i}}

                  +

                  {{_i}}Make a set of buttons appear vertically stacked rather than horizontally.{{/i}}

                  +
                  +
                  + + + + +
                  +
                  +
                  +<div class="btn-group btn-group-vertical">
                  +  ...
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Checkbox and radio flavors{{/i}}

                  +

                  {{_i}}Button groups can also function as radios, where only one button may be active, or checkboxes, where any number of buttons may be active. View the JavaScript docs for that.{{/i}}

                  + +

                  {{_i}}Dropdowns in button groups{{/i}}

                  +

                  {{_i}}Heads up!{{/i}} {{_i}}Buttons with dropdowns must be individually wrapped in their own .btn-group within a .btn-toolbar for proper rendering.{{/i}}

                  +
                  + + + + +
                  + + + +

                  {{_i}}Overview and examples{{/i}}

                  +

                  {{_i}}Use any button to trigger a dropdown menu by placing it within a .btn-group and providing the proper menu markup.{{/i}}

                  + {{! /example }} +
                  +<div class="btn-group">
                  +  <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
                  +    {{_i}}Action{{/i}}
                  +    <span class="caret"></span>
                  +  </a>
                  +  <ul class="dropdown-menu">
                  +    <!-- {{_i}}dropdown menu links{{/i}} -->
                  +  </ul>
                  +</div>
                  +
                  + +

                  {{_i}}Works with all button sizes{{/i}}

                  +

                  {{_i}}Button dropdowns work at any size: .btn-large, .btn-small, or .btn-mini.{{/i}}

                  + {{! /example }} + +

                  {{_i}}Requires JavaScript{{/i}}

                  +

                  {{_i}}Button dropdowns require the Bootstrap dropdown plugin to function.{{/i}}

                  +

                  {{_i}}In some cases—like mobile—dropdown menus will extend outside the viewport. You need to resolve the alignment manually or with custom JavaScript.{{/i}}

                  + + +
                  + + +

                  {{_i}}Split button dropdowns{{/i}}

                  +

                  {{_i}}Building on the button group styles and markup, we can easily create a split button. Split buttons feature a standard action on the left and a dropdown toggle on the right with contextual links.{{/i}}

                  + {{! /example }} +
                  +<div class="btn-group">
                  +  <button class="btn">{{_i}}Action{{/i}}</button>
                  +  <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +    <span class="caret"></span>
                  +  </button>
                  +  <ul class="dropdown-menu">
                  +    <!-- {{_i}}dropdown menu links{{/i}} -->
                  +  </ul>
                  +</div>
                  +
                  + +

                  {{_i}}Sizes{{/i}}

                  +

                  {{_i}}Utilize the extra button classes .btn-mini, .btn-small, or .btn-large for sizing.{{/i}}

                  + {{! /example }} +
                  +<div class="btn-group">
                  +  <button class="btn btn-mini">{{_i}}Action{{/i}}</button>
                  +  <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
                  +    <span class="caret"></span>
                  +  </button>
                  +  <ul class="dropdown-menu">
                  +    <!-- {{_i}}dropdown menu links{{/i}} -->
                  +  </ul>
                  +</div>
                  +
                  + +

                  {{_i}}Dropup menus{{/i}}

                  +

                  {{_i}}Dropdown menus can also be toggled from the bottom up by adding a single class to the immediate parent of .dropdown-menu. It will flip the direction of the .caret and reposition the menu itself to move from the bottom up instead of top down.{{/i}}

                  + {{! /example }} +
                  +<div class="btn-group dropup">
                  +  <button class="btn">{{_i}}Dropup{{/i}}</button>
                  +  <button class="btn dropdown-toggle" data-toggle="dropdown">
                  +    <span class="caret"></span>
                  +  </button>
                  +  <ul class="dropdown-menu">
                  +    <!-- {{_i}}dropdown menu links{{/i}} -->
                  +  </ul>
                  +</div>
                  +
                  + +
                  + + + + + + + + + + + + + + + + + + + +
                  + + +

                  {{_i}}Standard pagination{{/i}}

                  +

                  {{_i}}Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.{{/i}}

                  +
                  + +
                  +
                  +<div class="pagination">
                  +  <ul>
                  +    <li><a href="#">Prev</a></li>
                  +    <li><a href="#">1</a></li>
                  +    <li><a href="#">2</a></li>
                  +    <li><a href="#">3</a></li>
                  +    <li><a href="#">4</a></li>
                  +    <li><a href="#">5</a></li>
                  +    <li><a href="#">Next</a></li>
                  +  </ul>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Options{{/i}}

                  + +

                  {{_i}}Disabled and active states{{/i}}

                  +

                  {{_i}}Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.{{/i}}

                  +
                  + +
                  +
                  +<div class="pagination">
                  +  <ul>
                  +    <li class="disabled"><a href="#">&laquo;</a></li>
                  +    <li class="active"><a href="#">1</a></li>
                  +    ...
                  +  </ul>
                  +</div>
                  +
                  +

                  {{_i}}You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.{{/i}}

                  +
                  +<div class="pagination">
                  +  <ul>
                  +    <li class="disabled"><span>&laquo;</span></li>
                  +    <li class="active"><span>1</span></li>
                  +    ...
                  +  </ul>
                  +</div>
                  +
                  + +

                  {{_i}}Sizes{{/i}}

                  +

                  {{_i}}Fancy larger or smaller pagination? Add .pagination-large, .pagination-small, or .pagination-mini for additional sizes.{{/i}}

                  +
                  + + + + +
                  +
                  +<div class="pagination pagination-large">
                  +  <ul>
                  +    ...
                  +  </ul>
                  +</div>
                  +<div class="pagination">
                  +  <ul>
                  +    ...
                  +  </ul>
                  +</div>
                  +<div class="pagination pagination-small">
                  +  <ul>
                  +    ...
                  +  </ul>
                  +</div>
                  +<div class="pagination pagination-mini">
                  +  <ul>
                  +    ...
                  +  </ul>
                  +</div>
                  +
                  + +

                  {{_i}}Alignment{{/i}}

                  +

                  {{_i}}Add one of two optional classes to change the alignment of pagination links: .pagination-centered and .pagination-right.{{/i}}

                  +
                  + +
                  +
                  +<div class="pagination pagination-centered">
                  +  ...
                  +</div>
                  +
                  +
                  + +
                  +
                  +<div class="pagination pagination-right">
                  +  ...
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Pager{{/i}}

                  +

                  {{_i}}Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.{{/i}}

                  + +

                  {{_i}}Default example{{/i}}

                  +

                  {{_i}}By default, the pager centers links.{{/i}}

                  + +
                  +<ul class="pager">
                  +  <li><a href="#">{{_i}}Previous{{/i}}</a></li>
                  +  <li><a href="#">{{_i}}Next{{/i}}</a></li>
                  +</ul>
                  +
                  + +

                  {{_i}}Aligned links{{/i}}

                  +

                  {{_i}}Alternatively, you can align each link to the sides:{{/i}}

                  + +
                  +<ul class="pager">
                  +  <li class="previous">
                  +    <a href="#">{{_i}}&larr; Older{{/i}}</a>
                  +  </li>
                  +  <li class="next">
                  +    <a href="#">{{_i}}Newer &rarr;{{/i}}</a>
                  +  </li>
                  +</ul>
                  +
                  + +

                  {{_i}}Optional disabled state{{/i}}

                  +

                  {{_i}}Pager links also use the general .disabled utility class from the pagination.{{/i}}

                  + +
                  +<ul class="pager">
                  +  <li class="previous disabled">
                  +    <a href="#">{{_i}}&larr; Older{{/i}}</a>
                  +  </li>
                  +  ...
                  +</ul>
                  +
                  + +
                  + + + + +
                  + +

                  {{_i}}Labels{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Labels{{/i}}{{_i}}Markup{{/i}}
                  + {{_i}}Default{{/i}} + + <span class="label">{{_i}}Default{{/i}}</span> +
                  + {{_i}}Success{{/i}} + + <span class="label label-success">{{_i}}Success{{/i}}</span> +
                  + {{_i}}Warning{{/i}} + + <span class="label label-warning">{{_i}}Warning{{/i}}</span> +
                  + {{_i}}Important{{/i}} + + <span class="label label-important">{{_i}}Important{{/i}}</span> +
                  + {{_i}}Info{{/i}} + + <span class="label label-info">{{_i}}Info{{/i}}</span> +
                  + {{_i}}Inverse{{/i}} + + <span class="label label-inverse">{{_i}}Inverse{{/i}}</span> +
                  + +

                  {{_i}}Badges{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}Example{{/i}}{{_i}}Markup{{/i}}
                  + {{_i}}Default{{/i}} + + 1 + + <span class="badge">1</span> +
                  + {{_i}}Success{{/i}} + + 2 + + <span class="badge badge-success">2</span> +
                  + {{_i}}Warning{{/i}} + + 4 + + <span class="badge badge-warning">4</span> +
                  + {{_i}}Important{{/i}} + + 6 + + <span class="badge badge-important">6</span> +
                  + {{_i}}Info{{/i}} + + 8 + + <span class="badge badge-info">8</span> +
                  + {{_i}}Inverse{{/i}} + + 10 + + <span class="badge badge-inverse">10</span> +
                  + +

                  {{_i}}Easily collapsible{{/i}}

                  +

                  {{_i}}For easy implementation, labels and badges will simply collapse (via CSS's :empty selector) when no content exists within.{{/i}}

                  + +
                  + + + + +
                  + + +

                  {{_i}}Hero unit{{/i}}

                  +

                  {{_i}}A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.{{/i}}

                  +
                  +
                  +

                  {{_i}}Hello, world!{{/i}}

                  +

                  {{_i}}This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.{{/i}}

                  +

                  {{_i}}Learn more{{/i}}

                  +
                  +
                  +
                  +<div class="hero-unit">
                  +  <h1>{{_i}}Heading{{/i}}</h1>
                  +  <p>{{_i}}Tagline{{/i}}</p>
                  +  <p>
                  +    <a class="btn btn-primary btn-large">
                  +      {{_i}}Learn more{{/i}}
                  +    </a>
                  +  </p>
                  +</div>
                  +
                  + +

                  {{_i}}Page header{{/i}}

                  +

                  {{_i}}A simple shell for an h1 to appropriately space out and segment sections of content on a page. It can utilize the h1's default small, element as well most other components (with additional styles).{{/i}}

                  +
                  + +
                  +
                  +<div class="page-header">
                  +  <h1>{{_i}}Example page header{{/i}} <small>{{_i}}Subtext for header{{/i}}</small></h1>
                  +</div>
                  +
                  + +
                  + + + + +
                  + + +

                  {{_i}}Default thumbnails{{/i}}

                  +

                  {{_i}}By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.{{/i}}

                  +
                  + +
                  + +

                  {{_i}}Highly customizable{{/i}}

                  +

                  {{_i}}With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.{{/i}}

                  +
                  +
                    +
                  • +
                    + +
                    +

                    {{_i}}Thumbnail label{{/i}}

                    +

                    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

                    +

                    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

                    +
                    +
                    +
                  • +
                  • +
                    + +
                    +

                    {{_i}}Thumbnail label{{/i}}

                    +

                    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

                    +

                    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

                    +
                    +
                    +
                  • +
                  • +
                    + +
                    +

                    {{_i}}Thumbnail label{{/i}}

                    +

                    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

                    +

                    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

                    +
                    +
                    +
                  • +
                  +
                  + +

                  {{_i}}Why use thumbnails{{/i}}

                  +

                  {{_i}}Thumbnails (previously .media-grid up until v1.4) are great for grids of photos or videos, image search results, retail products, portfolios, and much more. They can be links or static content.{{/i}}

                  + +

                  {{_i}}Simple, flexible markup{{/i}}

                  +

                  {{_i}}Thumbnail markup is simple—a ul with any number of li elements is all that is required. It's also super flexible, allowing for any type of content with just a bit more markup to wrap your contents.{{/i}}

                  + +

                  {{_i}}Uses grid column sizes{{/i}}

                  +

                  {{_i}}Lastly, the thumbnails component uses existing grid system classes—like .span2 or .span3—for control of thumbnail dimensions.{{/i}}

                  + +

                  {{_i}}Markup{{/i}}

                  +

                  {{_i}}As mentioned previously, the required markup for thumbnails is light and straightforward. Here's a look at the default setup for linked images:{{/i}}

                  +
                  +<ul class="thumbnails">
                  +  <li class="span4">
                  +    <a href="#" class="thumbnail">
                  +      <img data-src="holder.js/300x200" alt="">
                  +    </a>
                  +  </li>
                  +  ...
                  +</ul>
                  +
                  +

                  {{_i}}For custom HTML content in thumbnails, the markup changes slightly. To allow block level content anywhere, we swap the <a> for a <div> like so:{{/i}}

                  +
                  +<ul class="thumbnails">
                  +  <li class="span4">
                  +    <div class="thumbnail">
                  +      <img data-src="holder.js/300x200" alt="">
                  +      <h3>{{_i}}Thumbnail label{{/i}}</h3>
                  +      <p>{{_i}}Thumbnail caption...{{/i}}</p>
                  +    </div>
                  +  </li>
                  +  ...
                  +</ul>
                  +
                  + +

                  {{_i}}More examples{{/i}}

                  +

                  {{_i}}Explore all your options with the various grid classes available to you. You can also mix and match different sizes.{{/i}}

                  + + +
                  + + + + + +
                  + + +

                  {{_i}}Default alert{{/i}}

                  +

                  {{_i}}Wrap any text and an optional dismiss button in .alert for a basic warning alert message.{{/i}}

                  +
                  +
                  + + {{_i}}Warning!{{/i}} {{_i}}Best check yo self, you're not looking too good.{{/i}} +
                  +
                  +
                  +<div class="alert">
                  +  <button type="button" class="close" data-dismiss="alert">&times;</button>
                  +  <strong>{{_i}}Warning!{{/i}}</strong> {{_i}}Best check yo self, you're not looking too good.{{/i}}
                  +</div>
                  +
                  + +

                  {{_i}}Dismiss buttons{{/i}}

                  +

                  {{_i}}Mobile Safari and Mobile Opera browsers, in addition to the data-dismiss="alert" attribute, require an href="#" for the dismissal of alerts when using an <a> tag.{{/i}}

                  +
                  <a href="#" class="close" data-dismiss="alert">&times;</a>
                  +

                  {{_i}}Alternatively, you may use a <button> element with the data attribute, which we have opted to do for our docs. When using <button>, you must include type="button" or your forms may not submit.{{/i}}

                  +
                  <button type="button" class="close" data-dismiss="alert">&times;</button>
                  + +

                  {{_i}}Dismiss alerts via JavaScript{{/i}}

                  +

                  {{_i}}Use the alerts jQuery plugin for quick and easy dismissal of alerts.{{/i}}

                  + + +
                  + + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}For longer messages, increase the padding on the top and bottom of the alert wrapper by adding .alert-block.{{/i}}

                  +
                  +
                  + +

                  {{_i}}Warning!{{/i}}

                  +

                  {{_i}}Best check yo self, you're not looking too good.{{/i}} Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

                  +
                  +
                  +
                  +<div class="alert alert-block">
                  +  <button type="button" class="close" data-dismiss="alert">&times;</button>
                  +  <h4>{{_i}}Warning!{{/i}}</h4>
                  +  {{_i}}Best check yo self, you're not...{{/i}}
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Contextual alternatives{{/i}}

                  +

                  {{_i}}Add optional classes to change an alert's connotation.{{/i}}

                  + +

                  {{_i}}Error or danger{{/i}}

                  +
                  +
                  + + {{_i}}Oh snap!{{/i}} {{_i}}Change a few things up and try submitting again.{{/i}} +
                  +
                  +
                  +<div class="alert alert-error">
                  +  ...
                  +</div>
                  +
                  + +

                  {{_i}}Success{{/i}}

                  +
                  +
                  + + {{_i}}Well done!{{/i}} {{_i}}You successfully read this important alert message.{{/i}} +
                  +
                  +
                  +<div class="alert alert-success">
                  +  ...
                  +</div>
                  +
                  + +

                  {{_i}}Information{{/i}}

                  +
                  +
                  + + {{_i}}Heads up!{{/i}} {{_i}}This alert needs your attention, but it's not super important.{{/i}} +
                  +
                  +
                  +<div class="alert alert-info">
                  +  ...
                  +</div>
                  +
                  + +
                  + + + + + +
                  + + +

                  {{_i}}Examples and markup{{/i}}

                  + +

                  {{_i}}Basic{{/i}}

                  +

                  {{_i}}Default progress bar with a vertical gradient.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress">
                  +  <div class="bar" style="width: 60%;"></div>
                  +</div>
                  +
                  + +

                  {{_i}}Striped{{/i}}

                  +

                  {{_i}}Uses a gradient to create a striped effect. Not available in IE7-8.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress progress-striped">
                  +  <div class="bar" style="width: 20%;"></div>
                  +</div>
                  +
                  + +

                  {{_i}}Animated{{/i}}

                  +

                  {{_i}}Add .active to .progress-striped to animate the stripes right to left. Not available in all versions of IE.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress progress-striped active">
                  +  <div class="bar" style="width: 40%;"></div>
                  +</div>
                  +
                  + +

                  Stacked

                  +

                  Place multiple bars into the same .progress to stack them.

                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress">
                  +  <div class="bar bar-success" style="width: 35%;"></div>
                  +  <div class="bar bar-warning" style="width: 20%;"></div>
                  +  <div class="bar bar-danger" style="width: 10%;"></div>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Options{{/i}}

                  + +

                  {{_i}}Additional colors{{/i}}

                  +

                  {{_i}}Progress bars use some of the same button and alert classes for consistent styles.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress progress-info">
                  +  <div class="bar" style="width: 20%"></div>
                  +</div>
                  +<div class="progress progress-success">
                  +  <div class="bar" style="width: 40%"></div>
                  +</div>
                  +<div class="progress progress-warning">
                  +  <div class="bar" style="width: 60%"></div>
                  +</div>
                  +<div class="progress progress-danger">
                  +  <div class="bar" style="width: 80%"></div>
                  +</div>
                  +
                  + +

                  {{_i}}Striped bars{{/i}}

                  +

                  {{_i}}Similar to the solid colors, we have varied striped progress bars.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +<div class="progress progress-info progress-striped">
                  +  <div class="bar" style="width: 20%"></div>
                  +</div>
                  +<div class="progress progress-success progress-striped">
                  +  <div class="bar" style="width: 40%"></div>
                  +</div>
                  +<div class="progress progress-warning progress-striped">
                  +  <div class="bar" style="width: 60%"></div>
                  +</div>
                  +<div class="progress progress-danger progress-striped">
                  +  <div class="bar" style="width: 80%"></div>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Browser support{{/i}}

                  +

                  {{_i}}Progress bars use CSS3 gradients, transitions, and animations to achieve all their effects. These features are not supported in IE7-9 or older versions of Firefox.{{/i}}

                  +

                  {{_i}}Versions earlier than Internet Explorer 10 and Opera 12 do not support animations.{{/i}}

                  + +
                  + + + + + +
                  + +

                  {{_i}}Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.{{/i}}

                  + +

                  {{_i}}Default example{{/i}}

                  +

                  {{_i}}The default media allow to float a media object (images, video, audio) to the left or right of a content block.{{/i}}

                  +
                  +
                  + + + +
                  +

                  {{_i}}Media heading{{/i}}

                  + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
                  +
                  +
                  + + + +
                  +

                  {{_i}}Media heading{{/i}}

                  + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
                  + + + +
                  +

                  {{_i}}Media heading{{/i}}

                  + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
                  +
                  +
                  +
                  +
                  {{! /.bs-docs-example }} +
                  +<div class="media">
                  +  <a class="pull-left" href="#">
                  +    <img class="media-object" data-src="holder.js/64x64">
                  +  </a>
                  +  <div class="media-body">
                  +    <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
                  +    ...
                  +
                  +    <!-- Nested media object -->
                  +    <div class="media">
                  +      ...
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Media list{{/i}}

                  +

                  {{_i}}With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).{{/i}}

                  +
                  +
                    +
                  • + + + +
                    +

                    {{_i}}Media heading{{/i}}

                    +

                    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

                    + +
                    + + + +
                    +

                    {{_i}}Nested media heading{{/i}}

                    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. + +
                    + + + +
                    +

                    {{_i}}Nested media heading{{/i}}

                    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
                    +
                    +
                    +
                    + +
                    + + + +
                    +

                    {{_i}}Nested media heading{{/i}}

                    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
                    +
                    +
                    +
                  • +
                  • + + + +
                    +

                    {{_i}}Media heading{{/i}}

                    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
                    +
                  • +
                  +
                  +
                  +<ul class="media-list">
                  +  <li class="media">
                  +    <a class="pull-left" href="#">
                  +      <img class="media-object" data-src="holder.js/64x64">
                  +    </a>
                  +    <div class="media-body">
                  +      <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
                  +      ...
                  +
                  +      <!-- Nested media object -->
                  +      <div class="media">
                  +        ...
                  +     </div>
                  +    </div>
                  +  </li>
                  +</ul>
                  +
                  + +
                  + + + + + + +
                  + + +

                  {{_i}}Wells{{/i}}

                  +

                  {{_i}}Use the well as a simple effect on an element to give it an inset effect.{{/i}}

                  +
                  +
                  + {{_i}}Look, I'm in a well!{{/i}} +
                  +
                  +
                  +<div class="well">
                  +  ...
                  +</div>
                  +
                  +

                  {{_i}}Optional classes{{/i}}

                  +

                  {{_i}}Control padding and rounded corners with two optional modifier classes.{{/i}}

                  +
                  +
                  + {{_i}}Look, I'm in a well!{{/i}} +
                  +
                  +
                  +<div class="well well-large">
                  +  ...
                  +</div>
                  +
                  +
                  +
                  + {{_i}}Look, I'm in a well!{{/i}} +
                  +
                  +
                  +<div class="well well-small">
                  +  ...
                  +</div>
                  +
                  + +

                  {{_i}}Close icon{{/i}}

                  +

                  {{_i}}Use the generic close icon for dismissing content like modals and alerts.{{/i}}

                  +
                  +

                  +
                  +
                  <button class="close">&times;</button>
                  +

                  {{_i}}iOS devices require an href="#" for click events if you would rather use an anchor.{{/i}}

                  +
                  <a class="close" href="#">&times;</a>
                  + +

                  {{_i}}Helper classes{{/i}}

                  +

                  {{_i}}Simple, focused classes for small display or behavior tweaks.{{/i}}

                  + +

                  {{_i}}.pull-left{{/i}}

                  +

                  {{_i}}Float an element left{{/i}}

                  +
                  +class="pull-left"
                  +
                  +
                  +.pull-left {
                  +  float: left;
                  +}
                  +
                  + +

                  {{_i}}.pull-right{{/i}}

                  +

                  {{_i}}Float an element right{{/i}}

                  +
                  +class="pull-right"
                  +
                  +
                  +.pull-right {
                  +  float: right;
                  +}
                  +
                  + +

                  {{_i}}.muted{{/i}}

                  +

                  {{_i}}Change an element's color to #999{{/i}}

                  +
                  +class="muted"
                  +
                  +
                  +.muted {
                  +  color: #999;
                  +}
                  +
                  + +

                  {{_i}}.clearfix{{/i}}

                  +

                  {{_i}}Clear the float on any element{{/i}}

                  +
                  +class="clearfix"
                  +
                  +
                  +.clearfix {
                  +  *zoom: 1;
                  +  &:before,
                  +  &:after {
                  +    display: table;
                  +    content: "";
                  +  }
                  +  &:after {
                  +    clear: both;
                  +  }
                  +}
                  +
                  + +
                  + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/customize.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/customize.mustache new file mode 100644 index 0000000..8d8a2f9 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/customize.mustache @@ -0,0 +1,393 @@ + +
                  +
                  +

                  {{_i}}Customize and download{{/i}}

                  +

                  {{_i}}Download Bootstrap or customize variables, components, JavaScript plugins, and more.{{/i}}

                  +
                  +
                  + + +
                  + + +
                  + +
                  + + + +
                  +
                  + +
                  +
                  +

                  {{_i}}Scaffolding{{/i}}

                  + + + + +

                  {{_i}}Base CSS{{/i}}

                  + + + + + + + +
                  +
                  +

                  {{_i}}Components{{/i}}

                  + + + + + + + + + + + +

                  {{_i}}JS Components{{/i}}

                  + + + + + + +
                  +
                  +

                  {{_i}}Miscellaneous{{/i}}

                  + + + + +

                  {{_i}}Responsive{{/i}}

                  + + + + + +
                  +
                  +
                  + +
                  + +
                  +
                  + + + + + + + +
                  +
                  + + + + + + +
                  +
                  +

                  {{_i}}Heads up!{{/i}}

                  +

                  {{_i}}All checked plugins will be compiled into a single file, bootstrap.js. All plugins require the latest version of jQuery to be included.{{/i}}

                  +
                  +
                  +
                  + + +
                  + +
                  +
                  +

                  {{_i}}Scaffolding{{/i}}

                  + + + + + +

                  {{_i}}Links{{/i}}

                  + + + + +

                  {{_i}}Colors{{/i}}

                  + + + + + + + + + + + + + + + +

                  {{_i}}Sprites{{/i}}

                  + + + + + +

                  {{_i}}Grid system{{/i}}

                  + + + + + + + + + + + + + + + +
                  +
                  + +

                  {{_i}}Typography{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  {{_i}}Tables{{/i}}

                  + + + + + + + + + +

                  {{_i}}Forms{{/i}}

                  + + + + + + + + + + + + + + + + + +
                  +
                  + +

                  {{_i}}Form states & alerts{{/i}}

                  + + + + + + + + + + + + + + + + + +

                  {{_i}}Navbar{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  {{_i}}Dropdowns{{/i}}

                  + + + + + + + + + + +
                  +
                  +
                  + +
                  + +
                  + {{_i}}Customize and Download{{/i}} +

                  {{_i}}What's included?{{/i}}

                  +

                  {{_i}}Downloads include compiled CSS, compiled and minified CSS, and compiled jQuery plugins, all nicely packed up into a zipball for your convenience.{{/i}}

                  +
                  +
                  +
                  + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/extend.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/extend.mustache new file mode 100644 index 0000000..b5c8d57 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/extend.mustache @@ -0,0 +1,161 @@ + +
                  +
                  +

                  {{_i}}Extending Bootstrap{{/i}}

                  +

                  {{_i}}Extend Bootstrap to take advantage of included styles and components, as well as LESS variables and mixins.{{/i}}

                  +
                  +
                  + +
                  + + +
                  + +
                  + + + + +
                  + + + LESS CSS +

                  {{_i}}Bootstrap is made with LESS at its core, a dynamic stylesheet language created by our good friend, Alexis Sellier. It makes developing systems-based CSS faster, easier, and more fun.{{/i}}

                  + +

                  {{_i}}Why LESS?{{/i}}

                  +

                  {{_i}}One of Bootstrap's creators wrote a quick blog post about this, summarized here:{{/i}}

                  +
                    +
                  • {{_i}}Bootstrap compiles faster ~6x faster with Less compared to Sass{{/i}}
                  • +
                  • {{_i}}Less is written in JavaScript, making it easier to us to dive in and patch compared to Ruby with Sass.{{/i}}
                  • +
                  • {{_i}}Less is more; we want to feel like we're writing CSS and making Bootstrap approachable to all.{{/i}}
                  • +
                  + +

                  {{_i}}What's included?{{/i}}

                  +

                  {{_i}}As an extension of CSS, LESS includes variables, mixins for reusable snippets of code, operations for simple math, nesting, and even color functions.{{/i}}

                  + +

                  {{_i}}Learn more{{/i}}

                  +

                  {{_i}}Visit the official website at http://lesscss.org to learn more.{{/i}}

                  +
                  + + + + +
                  + + +

                  {{_i}}Since our CSS is written with Less and utilizes variables and mixins, it needs to be compiled for final production implementation. Here's how.{{/i}}

                  + +
                  + {{_i}}Note: If you're submitting a pull request to GitHub with modified CSS, you must recompile the CSS via any of these methods.{{/i}} +
                  + +

                  {{_i}}Tools for compiling{{/i}}

                  + +

                  {{_i}}Command line{{/i}}

                  +

                  {{_i}}Follow the instructions in the project readme on GitHub for compiling via command line.{{/i}}

                  + +

                  {{_i}}JavaScript{{/i}}

                  +

                  {{_i}}Download the latest Less.js and include the path to it (and Bootstrap) in the <head>.{{/i}}

                  +
                  +<link rel="stylesheet/less" href="/path/to/bootstrap.less">
                  +<script src="/path/to/less.js"></script>
                  +
                  +

                  {{_i}}To recompile the .less files, just save them and reload your page. Less.js compiles them and stores them in local storage.{{/i}}

                  + +

                  {{_i}}Unofficial Mac app{{/i}}

                  +

                  {{_i}}The unofficial Mac app watches directories of .less files and compiles the code to local files after every save of a watched .less file. If you like, you can toggle preferences in the app for automatic minifying and which directory the compiled files end up in.{{/i}}

                  + +

                  {{_i}}More apps{{/i}}

                  +

                  Crunch

                  +

                  {{_i}}Crunch is a great looking LESS editor and compiler built on Adobe Air.{{/i}}

                  +

                  CodeKit

                  +

                  {{_i}}Created by the same guy as the unofficial Mac app, CodeKit is a Mac app that compiles LESS, SASS, Stylus, and CoffeeScript.{{/i}}

                  +

                  Simpless

                  +

                  {{_i}}Mac, Linux, and Windows app for drag and drop compiling of LESS files. Plus, the source code is on GitHub.{{/i}}

                  + +
                  + + + + +
                  + +

                  {{_i}}Quickly start any web project by dropping in the compiled or minified CSS and JS. Layer on custom styles separately for easy upgrades and maintenance moving forward.{{/i}}

                  + +

                  {{_i}}Setup file structure{{/i}}

                  +

                  {{_i}}Download the latest compiled Bootstrap and place into your project. For example, you might have something like this:{{/i}}

                  +
                  +   app/
                  +       layouts/
                  +       templates/
                  +   public/
                  +       css/
                  +           bootstrap.min.css
                  +       js/
                  +           bootstrap.min.js
                  +       img/
                  +           glyphicons-halflings.png
                  +           glyphicons-halflings-white.png
                  +
                  + +

                  {{_i}}Utilize starter template{{/i}}

                  +

                  {{_i}}Copy the following base HTML to get started.{{/i}}

                  +
                  +<html>
                  +  <head>
                  +    <title>Bootstrap 101 Template</title>
                  +    <!-- Bootstrap -->
                  +    <link href="public/css/bootstrap.min.css" rel="stylesheet">
                  +  </head>
                  +  <body>
                  +    <h1>Hello, world!</h1>
                  +    <!-- Bootstrap -->
                  +    <script src="public/js/bootstrap.min.js"></script>
                  +  </body>
                  +</html>
                  +
                  + +

                  {{_i}}Layer on custom code{{/i}}

                  +

                  {{_i}}Work in your custom CSS, JS, and more as necessary to make Bootstrap your own with your own separate CSS and JS files.{{/i}}

                  +
                  +<html>
                  +  <head>
                  +    <title>Bootstrap 101 Template</title>
                  +    <!-- Bootstrap -->
                  +    <link href="public/css/bootstrap.min.css" rel="stylesheet">
                  +    <!-- Project -->
                  +    <link href="public/css/application.css" rel="stylesheet">
                  +  </head>
                  +  <body>
                  +    <h1>Hello, world!</h1>
                  +    <!-- Bootstrap -->
                  +    <script src="public/js/bootstrap.min.js"></script>
                  +    <!-- Project -->
                  +    <script src="public/js/application.js"></script>
                  +  </body>
                  +</html>
                  +
                  + +
                  + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/getting-started.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/getting-started.mustache new file mode 100644 index 0000000..ae1534c --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/getting-started.mustache @@ -0,0 +1,256 @@ + +
                  +
                  +

                  {{_i}}Getting started{{/i}}

                  +

                  {{_i}}Overview of the project, its contents, and how to get started with a simple template.{{/i}}

                  +
                  +
                  + + +
                  + + +
                  + +
                  + + + + +
                  + +

                  {{_i}}Before downloading, be sure to have a code editor (we recommend Sublime Text 2) and some working knowledge of HTML and CSS. We won't walk through the source files here, but they are available for download. We'll focus on getting started with the compiled Bootstrap files.{{/i}}

                  + +
                  +
                  +

                  {{_i}}Download compiled{{/i}}

                  +

                  {{_i}}Fastest way to get started: get the compiled and minified versions of our CSS, JS, and images. No docs or original source files.{{/i}}

                  +

                  {{_i}}Download Bootstrap{{/i}}

                  +
                  +
                  +

                  Download source

                  +

                  Get the original files for all CSS and JavaScript, along with a local copy of the docs by downloading the latest version directly from GitHub.

                  +

                  {{_i}}Download Bootstrap source{{/i}}

                  +
                  +
                  +
                  + + + + +
                  + +

                  {{_i}}Within the download you'll find the following file structure and contents, logically grouping common assets and providing both compiled and minified variations.{{/i}}

                  +

                  {{_i}}Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:{{/i}}

                  +
                  +  bootstrap/
                  +  ├── css/
                  +  │   ├── bootstrap.css
                  +  │   ├── bootstrap.min.css
                  +  ├── js/
                  +  │   ├── bootstrap.js
                  +  │   ├── bootstrap.min.js
                  +  └── img/
                  +      ├── glyphicons-halflings.png
                  +      └── glyphicons-halflings-white.png
                  +
                  +

                  {{_i}}This is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). The image files are compressed using ImageOptim, a Mac app for compressing PNGs.{{/i}}

                  +

                  {{_i}}Please note that all JavaScript plugins require jQuery to be included.{{/i}}

                  +
                  + + + + +
                  + +

                  {{_i}}Bootstrap comes equipped with HTML, CSS, and JS for all sorts of things, but they can be summarized with a handful of categories visible at the top of the Bootstrap documentation.{{/i}}

                  + +

                  {{_i}}Docs sections{{/i}}

                  +

                  {{_i}}Scaffolding{{/i}}

                  +

                  {{_i}}Global styles for the body to reset type and background, link styles, grid system, and two simple layouts.{{/i}}

                  +

                  {{_i}}Base CSS{{/i}}

                  +

                  {{_i}}Styles for common HTML elements like typography, code, tables, forms, and buttons. Also includes Glyphicons, a great little icon set.{{/i}}

                  +

                  {{_i}}Components{{/i}}

                  +

                  {{_i}}Basic styles for common interface components like tabs and pills, navbar, alerts, page headers, and more.{{/i}}

                  +

                  {{_i}}JavaScript plugins{{/i}}

                  +

                  {{_i}}Similar to Components, these JavaScript plugins are interactive components for things like tooltips, popovers, modals, and more.{{/i}}

                  + +

                  {{_i}}List of components{{/i}}

                  +

                  {{_i}}Together, the Components and JavaScript plugins sections provide the following interface elements:{{/i}}

                  +
                    +
                  • {{_i}}Button groups{{/i}}
                  • +
                  • {{_i}}Button dropdowns{{/i}}
                  • +
                  • {{_i}}Navigational tabs, pills, and lists{{/i}}
                  • +
                  • {{_i}}Navbar{{/i}}
                  • +
                  • {{_i}}Labels{{/i}}
                  • +
                  • {{_i}}Badges{{/i}}
                  • +
                  • {{_i}}Page headers and hero unit{{/i}}
                  • +
                  • {{_i}}Thumbnails{{/i}}
                  • +
                  • {{_i}}Alerts{{/i}}
                  • +
                  • {{_i}}Progress bars{{/i}}
                  • +
                  • {{_i}}Modals{{/i}}
                  • +
                  • {{_i}}Dropdowns{{/i}}
                  • +
                  • {{_i}}Tooltips{{/i}}
                  • +
                  • {{_i}}Popovers{{/i}}
                  • +
                  • {{_i}}Accordion{{/i}}
                  • +
                  • {{_i}}Carousel{{/i}}
                  • +
                  • {{_i}}Typeahead{{/i}}
                  • +
                  +

                  {{_i}}In future guides, we may walk through these components individually in more detail. Until then, look for each of these in the documentation for information on how to utilize and customize them.{{/i}}

                  +
                  + + + + +
                  + +

                  {{_i}}With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the File structure.{{/i}}

                  +

                  {{_i}}Now, here's a look at a typical HTML file:{{/i}}

                  +
                  +<!DOCTYPE html>
                  +<html>
                  +  <head>
                  +    <title>Bootstrap 101 Template</title>
                  +    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  +  </head>
                  +  <body>
                  +    <h1>Hello, world!</h1>
                  +    <script src="http://code.jquery.com/jquery.js"></script>
                  +  </body>
                  +</html>
                  +
                  +

                  {{_i}}To make this a Bootstrapped template, just include the appropriate CSS and JS files:{{/i}}

                  +
                  +<!DOCTYPE html>
                  +<html>
                  +  <head>
                  +    <title>Bootstrap 101 Template</title>
                  +    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  +    <!-- Bootstrap -->
                  +    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
                  +  </head>
                  +  <body>
                  +    <h1>Hello, world!</h1>
                  +    <script src="http://code.jquery.com/jquery.js"></script>
                  +    <script src="js/bootstrap.min.js"></script>
                  +  </body>
                  +</html>
                  +
                  +

                  {{_i}}And you're set! With those two files added, you can begin to develop any site or application with Bootstrap.{{/i}}

                  +
                  + + + + +
                  + +

                  {{_i}}Move beyond the base template with a few example layouts. We encourage folks to iterate on these examples and not simply use them as an end result.{{/i}}

                  +
                    +
                  • + + + +

                    {{_i}}Starter template{{/i}}

                    +

                    {{_i}}A barebones HTML document with all the Bootstrap CSS and JavaScript included.{{/i}}

                    +
                  • +
                  • + + + +

                    {{_i}}Basic marketing site{{/i}}

                    +

                    {{_i}}Featuring a hero unit for a primary message and three supporting elements.{{/i}}

                    +
                  • +
                  • + + + +

                    {{_i}}Fluid layout{{/i}}

                    +

                    {{_i}}Uses our new responsive, fluid grid system to create a seamless liquid layout.{{/i}}

                    +
                  • + +
                  • + + + +

                    {{_i}}Narrow marketing{{/i}}

                    +

                    {{_i}}Slim, lightweight marketing template for small projects or teams.{{/i}}

                    +
                  • +
                  • + + + +

                    {{_i}}Justified nav{{/i}}

                    +

                    {{_i}}Marketing page with equal-width navigation links in a modified navbar.{{/i}}

                    +
                  • +
                  • + + + +

                    {{_i}}Sign in{{/i}}

                    +

                    {{_i}}Barebones sign in form with custom, larger form controls and a flexible layout.{{/i}}

                    +
                  • + +
                  • + + + +

                    {{_i}}Sticky footer{{/i}}

                    +

                    {{_i}}Pin a fixed-height footer to the bottom of the user's viewport.{{/i}}

                    +
                  • +
                  • + + + +

                    {{_i}}Carousel jumbotron{{/i}}

                    +

                    {{_i}}A more interactive riff on the basic marketing site featuring a prominent carousel.{{/i}}

                    +
                  • +
                  +
                  + + + + + +
                  + +

                  {{_i}}Head to the docs for information, examples, and code snippets, or take the next leap and customize Bootstrap for any upcoming project.{{/i}}

                  + {{_i}}Visit the Bootstrap docs{{/i}} + {{_i}}Customize Bootstrap{{/i}} +
                  + + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/index.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/index.mustache new file mode 100644 index 0000000..679236b --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/index.mustache @@ -0,0 +1,100 @@ +
                  +
                  +

                  {{_i}}Bootstrap{{/i}}

                  +

                  {{_i}}Sleek, intuitive, and powerful front-end framework for faster and easier web development.{{/i}}

                  +

                  + {{_i}}Download Bootstrap{{/i}} +

                  + +
                  +
                  + +
                  +
                  + +
                  +
                  + +
                  + +
                  + +

                  {{_i}}Introducing Bootstrap.{{/i}}

                  + + +
                  +
                  + +

                  {{_i}}By nerds, for nerds.{{/i}}

                  +

                  {{_i}}Built at Twitter by @mdo and @fat, Bootstrap utilizes LESS CSS, is compiled via Node, and is managed through GitHub to help nerds do awesome stuff on the web.{{/i}}

                  +
                  +
                  + +

                  {{_i}}Made for everyone.{{/i}}

                  +

                  {{_i}}Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via responsive CSS as well.{{/i}}

                  +
                  +
                  + +

                  {{_i}}Packed with features.{{/i}}

                  +

                  {{_i}}A 12-column responsive grid, dozens of components, JavaScript plugins, typography, form controls, and even a web-based Customizer to make Bootstrap your own.{{/i}}

                  +
                  +
                  + +
                  + +

                  {{_i}}Built with Bootstrap.{{/i}}

                  + +
                  + +
                  + +
                  {{! /.marketing }} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/javascript.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/javascript.mustache new file mode 100644 index 0000000..744988f --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/javascript.mustache @@ -0,0 +1,1660 @@ + +
                  +
                  +

                  {{_i}}JavaScript{{/i}}

                  +

                  {{_i}}Bring Bootstrap's components to life—now with 13 custom jQuery plugins.{{/i}} +

                  +
                  + +
                  + + +
                  + +
                  + + + +
                  + + +

                  {{_i}}Individual or compiled{{/i}}

                  +

                  {{_i}}Plugins can be included individually (though some have required dependencies), or all at once. Both bootstrap.js and bootstrap.min.js contain all plugins in a single file.{{/i}}

                  + +

                  {{_i}}Data attributes{{/i}}

                  +

                  {{_i}}You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.{{/i}}

                  + +

                  {{_i}}That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:{{/i}} +

                  $('body').off('.data-api')
                  + +

                  {{_i}}Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:{{/i}}

                  +
                  $('body').off('.alert.data-api')
                  + +

                  {{_i}}Programmatic API{{/i}}

                  +

                  {{_i}}We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.{{/i}}

                  +
                  $(".btn.danger").button("toggle").addClass("fat")
                  +

                  {{_i}}All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):{{/i}}

                  +
                  +$("#myModal").modal()                       // initialized with defaults
                  +$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
                  +$("#myModal").modal('show')                // initializes and invokes show immediately

                  +
                  +

                  {{_i}}Each plugin also exposes its raw constructor on a `Constructor` property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel=popover]').data('popover').{{/i}}

                  + +

                  {{_i}}No Conflict{{/i}}

                  +

                  {{_i}}Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.{{/i}}

                  + +
                  +var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
                  +$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
                  +
                  + +

                  {{_i}}Events{{/i}}

                  +

                  {{_i}}Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is trigger on the completion of an action.{{/i}}

                  +

                  {{_i}}All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.{{/i}}

                  +
                  +$('#myModal').on('show', function (e) {
                  +    if (!data) return e.preventDefault() // stops modal from being shown
                  +})
                  +
                  +
                  + + + + +
                  + +

                  {{_i}}About transitions{{/i}}

                  +

                  {{_i}}For simple transition effects, include bootstrap-transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.{{/i}}

                  +

                  {{_i}}Use cases{{/i}}

                  +

                  {{_i}}A few examples of the transition plugin:{{/i}}

                  +
                    +
                  • {{_i}}Sliding or fading in modals{{/i}}
                  • +
                  • {{_i}}Fading out tabs{{/i}}
                  • +
                  • {{_i}}Fading out alerts{{/i}}
                  • +
                  • {{_i}}Sliding carousel panes{{/i}}
                  • +
                  + + {{! Ideas: include docs for .fade.in, .slide.in, etc }} +
                  + + + + +
                  + + + +

                  {{_i}}Examples{{/i}}

                  +

                  {{_i}}Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.{{/i}}

                  + +

                  {{_i}}Static example{{/i}}

                  +

                  {{_i}}A rendered modal with header, body, and set of actions in the footer.{{/i}}

                  +
                  + +
                  {{! /example }} +
                  +<div class="modal hide fade">
                  +  <div class="modal-header">
                  +    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                  +    <h3>{{_i}}Modal header{{/i}}</h3>
                  +  </div>
                  +  <div class="modal-body">
                  +    <p>{{_i}}One fine body…{{/i}}</p>
                  +  </div>
                  +  <div class="modal-footer">
                  +    <a href="#" class="btn">{{_i}}Close{{/i}}</a>
                  +    <a href="#" class="btn btn-primary">{{_i}}Save changes{{/i}}</a>
                  +  </div>
                  +</div>
                  +
                  + +

                  {{_i}}Live demo{{/i}}

                  +

                  {{_i}}Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.{{/i}}

                  + + + {{! /example }} +
                  +<!-- Button to trigger modal -->
                  +<a href="#myModal" role="button" class="btn" data-toggle="modal">{{_i}}Launch demo modal{{/i}}</a>
                  +
                  +<!-- Modal -->
                  +<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                  +  <div class="modal-header">
                  +    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                  +    <h3 id="myModalLabel">Modal header</h3>
                  +  </div>
                  +  <div class="modal-body">
                  +    <p>{{_i}}One fine body…{{/i}}</p>
                  +  </div>
                  +  <div class="modal-footer">
                  +    <button class="btn" data-dismiss="modal" aria-hidden="true">{{_i}}Close{{/i}}</button>
                  +    <button class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
                  +  </div>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  + +

                  {{_i}}Via data attributes{{/i}}

                  +

                  {{_i}}Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.{{/i}}

                  +
                  <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
                  + +

                  {{_i}}Via JavaScript{{/i}}

                  +

                  {{_i}}Call a modal with id myModal with a single line of JavaScript:{{/i}}

                  +
                  $('#myModal').modal(options)
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}backdrop{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.{{/i}}
                  {{_i}}keyboard{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Closes the modal when escape key is pressed{{/i}}
                  {{_i}}show{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Shows the modal when initialized.{{/i}}
                  {{_i}}remote{{/i}}{{_i}}path{{/i}}{{_i}}false{{/i}}

                  {{_i}}If a remote url is provided, content will be loaded via jQuery's load method and injected into the .modal-body. If you're using the data api, you may alternatively use the href tag to specify the remote source. An example of this is shown below:{{/i}}

                  +
                  <a data-toggle="modal" href="remote.html" data-target="#modal">click me</a>
                  + + Methods{{/i}} +

                  .modal({{_i}}options{{/i}})

                  +

                  {{_i}}Activates your content as a modal. Accepts an optional options object.{{/i}}

                  +
                  +$('#myModal').modal({
                  +  keyboard: false
                  +})
                  +
                  +

                  .modal('toggle')

                  +

                  {{_i}}Manually toggles a modal.{{/i}}

                  +
                  $('#myModal').modal('toggle')
                  +

                  .modal('show')

                  +

                  {{_i}}Manually opens a modal.{{/i}}

                  +
                  $('#myModal').modal('show')
                  +

                  .modal('hide')

                  +

                  {{_i}}Manually hides a modal.{{/i}}

                  +
                  $('#myModal').modal('hide')
                  +

                  {{_i}}Events{{/i}}

                  +

                  {{_i}}Bootstrap's modal class exposes a few events for hooking into modal functionality.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Event{{/i}}{{_i}}Description{{/i}}
                  {{_i}}show{{/i}}{{_i}}This event fires immediately when the show instance method is called.{{/i}}
                  {{_i}}shown{{/i}}{{_i}}This event is fired when the modal has been made visible to the user (will wait for css transitions to complete).{{/i}}
                  {{_i}}hide{{/i}}{{_i}}This event is fired immediately when the hide instance method has been called.{{/i}}
                  {{_i}}hidden{{/i}}{{_i}}This event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).{{/i}}
                  +
                  +$('#myModal').on('hidden', function () {
                  +  // {{_i}}do something…{{/i}}
                  +})
                  +
                  +
                  + + + + + + + + + +
                  + + + +

                  {{_i}}Example in navbar{{/i}}

                  +

                  {{_i}}The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.{{/i}}

                  +
                  + +
                  +

                  @fat

                  +

                  Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

                  +

                  @mdo

                  +

                  Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

                  +

                  one

                  +

                  Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

                  +

                  two

                  +

                  In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

                  +

                  three

                  +

                  Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

                  +

                  Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. +

                  +
                  +
                  {{! /example }} + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  + +

                  {{_i}}Via data attributes{{/i}}

                  +

                  {{_i}}To easily add scrollspy behavior to your topbar navigation, just add data-spy="scroll" to the element you want to spy on (most typically this would be the body) and data-target=".navbar" to select which nav to use. You'll want to use scrollspy with a .nav component.{{/i}}

                  +
                  <body data-spy="scroll" data-target=".navbar">...</body>
                  + +

                  {{_i}}Via JavaScript{{/i}}

                  +

                  {{_i}}Call the scrollspy via JavaScript:{{/i}}

                  +
                  $('#navbar').scrollspy()
                  + +
                  + {{_i}}Heads up!{{/i}} + {{_i}}Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the dom like <div id="home"></div>.{{/i}} +
                  + +

                  {{_i}}Methods{{/i}}

                  +

                  .scrollspy('refresh')

                  +

                  {{_i}}When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:{{/i}}

                  +
                  +$('[data-spy="scroll"]').each(function () {
                  +  var $spy = $(this).scrollspy('refresh')
                  +});
                  +
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".{{/i}}

                  + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}offset{{/i}}{{_i}}number{{/i}}{{_i}}10{{/i}}{{_i}}Pixels to offset from top when calculating position of scroll.{{/i}}
                  + +

                  {{_i}}Events{{/i}}

                  + + + + + + + + + + + + + +
                  {{_i}}Event{{/i}}{{_i}}Description{{/i}}
                  {{_i}}activate{{/i}}{{_i}}This event fires whenever a new item becomes activated by the scrollspy.{{/i}}
                  +
                  + + + + +
                  + + + +

                  {{_i}}Example tabs{{/i}}

                  +

                  {{_i}}Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.{{/i}}

                  +
                  + +
                  +
                  +

                  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.

                  +
                  +
                  +

                  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.

                  +
                  + + +
                  +
                  {{! /example }} + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  +

                  {{_i}}Enable tabbable tabs via JavaScript (each tab needs to be activated individually):{{/i}}

                  +
                  +$('#myTab a').click(function (e) {
                  +  e.preventDefault();
                  +  $(this).tab('show');
                  +})
                  +

                  {{_i}}You can activate individual tabs in several ways:{{/i}}

                  +
                  +$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
                  +$('#myTab a:first').tab('show'); // Select first tab
                  +$('#myTab a:last').tab('show'); // Select last tab
                  +$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
                  +
                  + +

                  {{_i}}Markup{{/i}}

                  +

                  {{_i}}You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling.{{/i}}

                  +
                  +<ul class="nav nav-tabs">
                  +  <li><a href="#home" data-toggle="tab">{{_i}}Home{{/i}}</a></li>
                  +  <li><a href="#profile" data-toggle="tab">{{_i}}Profile{{/i}}</a></li>
                  +  <li><a href="#messages" data-toggle="tab">{{_i}}Messages{{/i}}</a></li>
                  +  <li><a href="#settings" data-toggle="tab">{{_i}}Settings{{/i}}</a></li>
                  +</ul>
                  + +

                  {{_i}}Methods{{/i}}

                  +

                  $().tab

                  +

                  + {{_i}}Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM.{{/i}} +

                  +
                  +<ul class="nav nav-tabs" id="myTab">
                  +  <li class="active"><a href="#home">{{_i}}Home{{/i}}</a></li>
                  +  <li><a href="#profile">{{_i}}Profile{{/i}}</a></li>
                  +  <li><a href="#messages">{{_i}}Messages{{/i}}</a></li>
                  +  <li><a href="#settings">{{_i}}Settings{{/i}}</a></li>
                  +</ul>
                  +
                  +<div class="tab-content">
                  +  <div class="tab-pane active" id="home">...</div>
                  +  <div class="tab-pane" id="profile">...</div>
                  +  <div class="tab-pane" id="messages">...</div>
                  +  <div class="tab-pane" id="settings">...</div>
                  +</div>
                  +
                  +<script>
                  +  $(function () {
                  +    $('#myTab a:last').tab('show');
                  +  })
                  +</script>
                  +
                  + +

                  {{_i}}Events{{/i}}

                  + + + + + + + + + + + + + + + + + +
                  {{_i}}Event{{/i}}{{_i}}Description{{/i}}
                  {{_i}}show{{/i}}{{_i}}This event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.{{/i}}
                  {{_i}}shown{{/i}}{{_i}}This event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.{{/i}}
                  +
                  +$('a[data-toggle="tab"]').on('shown', function (e) {
                  +  e.target // activated tab
                  +  e.relatedTarget // previous tab
                  +})
                  +
                  +
                  + + + +
                  + + + +

                  {{_i}}Examples{{/i}}

                  +

                  {{_i}}Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.{{/i}}

                  +

                  {{_i}}For performance reasons, the tooltip and popover data-apis are opt in, meaning you must initialize them yourself.{{/i}}

                  +

                  {{_i}}Hover over the links below to see tooltips:{{/i}}

                  +
                  +

                  {{_i}}Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.{{/i}} +

                  +
                  {{! /example }} + +

                  {{_i}}Four directions{{/i}}

                  + {{! /example }} + + +

                  {{_i}}Tooltips in input groups{{/i}}

                  +

                  {{_i}}When using tooltips and popovers with the Bootstrap input groups, you'll have to set the container (documented below) option to avoid unwanted side effects.{{/i}}

                  + +
                  + + +

                  {{_i}}Usage{{/i}}

                  +

                  {{_i}}Trigger the tooltip via JavaScript:{{/i}}

                  +
                  $('#example').tooltip({{_i}}options{{/i}})
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}animation{{/i}}{{_i}}boolean{{/i}}true{{_i}}apply a css fade transition to the tooltip{{/i}}
                  {{_i}}html{{/i}}{{_i}}boolean{{/i}}false{{_i}}Insert html into the tooltip. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}
                  {{_i}}placement{{/i}}{{_i}}string | function{{/i}}'top'{{_i}}how to position the tooltip{{/i}} - top | bottom | left | right
                  {{_i}}selector{{/i}}{{_i}}string{{/i}}false{{_i}}If a selector is provided, tooltip objects will be delegated to the specified targets.{{/i}}
                  {{_i}}title{{/i}}{{_i}}string | function{{/i}}''{{_i}}default title value if `title` tag isn't present{{/i}}
                  {{_i}}trigger{{/i}}{{_i}}string{{/i}}'hover focus'{{_i}}how tooltip is triggered{{/i}} - click | hover | focus | manual. {{_i}}Note you case pass trigger mutliple, space seperated, trigger types.{{/i}}
                  {{_i}}delay{{/i}}{{_i}}number | object{{/i}}0 +

                  {{_i}}delay showing and hiding the tooltip (ms) - does not apply to manual trigger type{{/i}}

                  +

                  {{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}

                  +

                  {{_i}}Object structure is: delay: { show: 500, hide: 100 }{{/i}}

                  +
                  {{_i}}container{{/i}}{{_i}}string | false{{/i}}{{_i}}false{{/i}} +

                  {{_i}}Appends the tooltip to a specific element container: 'body'{{/i}}

                  +
                  +
                  + {{_i}}Heads up!{{/i}} + {{_i}}Options for individual tooltips can alternatively be specified through the use of data attributes.{{/i}} +
                  + +

                  {{_i}}Markup{{/i}}

                  +
                  <a href="#" data-toggle="tooltip" title="{{_i}}first tooltip{{/i}}">{{_i}}hover over me{{/i}}</a>
                  + +

                  {{_i}}Methods{{/i}}

                  +

                  $().tooltip({{_i}}options{{/i}})

                  +

                  {{_i}}Attaches a tooltip handler to an element collection.{{/i}}

                  +

                  .tooltip('show')

                  +

                  {{_i}}Reveals an element's tooltip.{{/i}}

                  +
                  $('#element').tooltip('show')
                  +

                  .tooltip('hide')

                  +

                  {{_i}}Hides an element's tooltip.{{/i}}

                  +
                  $('#element').tooltip('hide')
                  +

                  .tooltip('toggle')

                  +

                  {{_i}}Toggles an element's tooltip.{{/i}}

                  +
                  $('#element').tooltip('toggle')
                  +

                  .tooltip('destroy')

                  +

                  {{_i}}Hides and destroys an element's tooltip.{{/i}}

                  +
                  $('#element').tooltip('destroy')
                  +
                  + + + + +
                  + + +

                  {{_i}}Examples{{/i}}

                  +

                  {{_i}}Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. Requires Tooltip to be included.{{/i}}

                  + +

                  {{_i}}Static popover{{/i}}

                  +

                  {{_i}}Four options are available: top, right, bottom, and left aligned.{{/i}}

                  +
                  +
                  +
                  +

                  Popover top

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover right

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover bottom

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  Popover left

                  +
                  +

                  Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

                  +
                  +
                  + +
                  +
                  +

                  {{_i}}No markup shown as popovers are generated from JavaScript and content within a data attribute.{{/i}}

                  + +

                  Live demo

                  + + +

                  {{_i}}Four directions{{/i}}

                  + {{! /example }} + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  +

                  {{_i}}Enable popovers via JavaScript:{{/i}}

                  +
                  $('#example').popover({{_i}}options{{/i}})
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}animation{{/i}}{{_i}}boolean{{/i}}true{{_i}}apply a css fade transition to the tooltip{{/i}}
                  {{_i}}html{{/i}}{{_i}}boolean{{/i}}false{{_i}}Insert html into the popover. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}
                  {{_i}}placement{{/i}}{{_i}}string | function{{/i}}'right'{{_i}}how to position the popover{{/i}} - top | bottom | left | right
                  {{_i}}selector{{/i}}{{_i}}string{{/i}}false{{_i}}if a selector is provided, tooltip objects will be delegated to the specified targets{{/i}}
                  {{_i}}trigger{{/i}}{{_i}}string{{/i}}'click'{{_i}}how popover is triggered{{/i}} - click | hover | focus | manual
                  {{_i}}title{{/i}}{{_i}}string | function{{/i}}''{{_i}}default title value if `title` attribute isn't present{{/i}}
                  {{_i}}content{{/i}}{{_i}}string | function{{/i}}''{{_i}}default content value if `data-content` attribute isn't present{{/i}}
                  {{_i}}delay{{/i}}{{_i}}number | object{{/i}}0 +

                  {{_i}}delay showing and hiding the popover (ms) - does not apply to manual trigger type{{/i}}

                  +

                  {{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}

                  +

                  {{_i}}Object structure is: delay: { show: 500, hide: 100 }{{/i}}

                  +
                  {{_i}}container{{/i}}{{_i}}string | false{{/i}}{{_i}}false{{/i}} +

                  {{_i}}Appends the popover to a specific element container: 'body'{{/i}}

                  +
                  +
                  + {{_i}}Heads up!{{/i}} + {{_i}}Options for individual popovers can alternatively be specified through the use of data attributes.{{/i}} +
                  + +

                  {{_i}}Markup{{/i}}

                  +

                  {{_i}}For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.{{/i}}

                  + +

                  {{_i}}Methods{{/i}}

                  +

                  $().popover({{_i}}options{{/i}})

                  +

                  {{_i}}Initializes popovers for an element collection.{{/i}}

                  +

                  .popover('show')

                  +

                  {{_i}}Reveals an elements popover.{{/i}}

                  +
                  $('#element').popover('show')
                  +

                  .popover('hide')

                  +

                  {{_i}}Hides an elements popover.{{/i}}

                  +
                  $('#element').popover('hide')
                  +

                  .popover('toggle')

                  +

                  {{_i}}Toggles an elements popover.{{/i}}

                  +
                  $('#element').popover('toggle')
                  +

                  .popover('destroy')

                  +

                  {{_i}}Hides and destroys an element's popover.{{/i}}

                  +
                  $('#element').popover('destroy')
                  +
                  + + + + +
                  + + + +

                  {{_i}}Example alerts{{/i}}

                  +

                  {{_i}}Add dismiss functionality to all alert messages with this plugin.{{/i}}

                  +
                  +
                  + + {{_i}}Holy guacamole!{{/i}} {{_i}}Best check yo self, you're not looking too good.{{/i}} +
                  +
                  {{! /example }} + +
                  +
                  + +

                  {{_i}}Oh snap! You got an error!{{/i}}

                  +

                  {{_i}}Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.{{/i}}

                  +

                  + {{_i}}Take this action{{/i}} {{_i}}Or do this{{/i}} +

                  +
                  +
                  {{! /example }} + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  +

                  {{_i}}Enable dismissal of an alert via JavaScript:{{/i}}

                  +
                  $(".alert").alert()
                  + +

                  {{_i}}Markup{{/i}}

                  +

                  {{_i}}Just add data-dismiss="alert" to your close button to automatically give an alert close functionality.{{/i}}

                  +
                  <a class="close" data-dismiss="alert" href="#">&times;</a>
                  + +

                  {{_i}}Methods{{/i}}

                  +

                  $().alert()

                  +

                  {{_i}}Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the .fade and .in class already applied to them.{{/i}}

                  +

                  .alert('close')

                  +

                  {{_i}}Closes an alert.{{/i}}

                  +
                  $(".alert").alert('close')
                  + + +

                  {{_i}}Events{{/i}}

                  +

                  {{_i}}Bootstrap's alert class exposes a few events for hooking into alert functionality.{{/i}}

                  + + + + + + + + + + + + + + + + + +
                  {{_i}}Event{{/i}}{{_i}}Description{{/i}}
                  {{_i}}close{{/i}}{{_i}}This event fires immediately when the close instance method is called.{{/i}}
                  {{_i}}closed{{/i}}{{_i}}This event is fired when the alert has been closed (will wait for css transitions to complete).{{/i}}
                  +
                  +$('#my-alert').bind('closed', function () {
                  +  // {{_i}}do something…{{/i}}
                  +})
                  +
                  +
                  + + + + +
                  + + +

                  {{_i}}Example uses{{/i}}

                  +

                  {{_i}}Do more with buttons. Control button states or create groups of buttons for more components like toolbars.{{/i}}

                  + +

                  {{_i}}Stateful{{/i}}

                  +

                  {{_i}}Add data-loading-text="Loading..." to use a loading state on a button.{{/i}}

                  +
                  + +
                  {{! /example }} +
                  <button type="button" class="btn btn-primary" data-loading-text="Loading...">Loading state</button>
                  + +

                  {{_i}}Single toggle{{/i}}

                  +

                  {{_i}}Add data-toggle="button" to activate toggling on a single button.{{/i}}

                  +
                  + +
                  {{! /example }} +
                  <button type="button" class="btn btn-primary" data-toggle="button">Single Toggle</button>
                  + +

                  {{_i}}Checkbox{{/i}}

                  +

                  {{_i}}Add data-toggle="buttons-checkbox" for checkbox style toggling on btn-group.{{/i}}

                  +
                  +
                  + + + +
                  +
                  {{! /example }} +
                  +<div class="btn-group" data-toggle="buttons-checkbox">
                  +  <button type="button" class="btn btn-primary">Left</button>
                  +  <button type="button" class="btn btn-primary">Middle</button>
                  +  <button type="button" class="btn btn-primary">Right</button>
                  +</div>
                  +
                  + +

                  {{_i}}Radio{{/i}}

                  +

                  {{_i}}Add data-toggle="buttons-radio" for radio style toggling on btn-group.{{/i}}

                  +
                  +
                  + + + +
                  +
                  {{! /example }} +
                  +<div class="btn-group" data-toggle="buttons-radio">
                  +  <button type="button" class="btn btn-primary">Left</button>
                  +  <button type="button" class="btn btn-primary">Middle</button>
                  +  <button type="button" class="btn btn-primary">Right</button>
                  +</div>
                  +
                  + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  +

                  {{_i}}Enable buttons via JavaScript:{{/i}}

                  +
                  $('.nav-tabs').button()
                  + +

                  {{_i}}Markup{{/i}}

                  +

                  {{_i}}Data attributes are integral to the button plugin. Check out the example code below for the various markup types.{{/i}}

                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}None{{/i}}

                  + +

                  {{_i}}Methods{{/i}}

                  +

                  $().button('toggle')

                  +

                  {{_i}}Toggles push state. Gives the button the appearance that it has been activated.{{/i}}

                  +
                  + {{_i}}Heads up!{{/i}} + {{_i}}You can enable auto toggling of a button by using the data-toggle attribute.{{/i}} +
                  +
                  <button type="button" class="btn" data-toggle="button" >…</button>
                  +

                  $().button('loading')

                  +

                  {{_i}}Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute data-loading-text.{{/i}} +

                  +
                  <button type="button" class="btn" data-loading-text="loading stuff..." >...</button>
                  +
                  + {{_i}}Heads up!{{/i}} + {{_i}}Firefox persists the disabled state across page loads. A workaround for this is to use autocomplete="off".{{/i}} +
                  +

                  $().button('reset')

                  +

                  {{_i}}Resets button state - swaps text to original text.{{/i}}

                  +

                  $().button(string)

                  +

                  {{_i}}Resets button state - swaps text to any data defined text state.{{/i}}

                  +
                  <button type="button" class="btn" data-complete-text="finished!" >...</button>
                  +<script>
                  +  $('.btn').button('complete')
                  +</script>
                  +
                  +
                  + + + + +
                  + + +

                  {{_i}}About{{/i}}

                  +

                  {{_i}}Get base styles and flexible support for collapsible components like accordions and navigation.{{/i}}

                  +

                  * {{_i}}Requires the Transitions plugin to be included.{{/i}}

                  + +

                  {{_i}}Example accordion{{/i}}

                  +

                  {{_i}}Using the collapse plugin, we built a simple accordion style widget:{{/i}}

                  + +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  + +
                  +
                  + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
                  +
                  +
                  +
                  +
                  {{! /example }} +
                  +<div class="accordion" id="accordion2">
                  +  <div class="accordion-group">
                  +    <div class="accordion-heading">
                  +      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
                  +        {{_i}}Collapsible Group Item #1{{/i}}
                  +      </a>
                  +    </div>
                  +    <div id="collapseOne" class="accordion-body collapse in">
                  +      <div class="accordion-inner">
                  +        Anim pariatur cliche...
                  +      </div>
                  +    </div>
                  +  </div>
                  +  <div class="accordion-group">
                  +    <div class="accordion-heading">
                  +      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
                  +        {{_i}}Collapsible Group Item #2{{/i}}
                  +      </a>
                  +    </div>
                  +    <div id="collapseTwo" class="accordion-body collapse">
                  +      <div class="accordion-inner">
                  +        Anim pariatur cliche...
                  +      </div>
                  +    </div>
                  +  </div>
                  +</div>
                  +...
                  +
                  +

                  {{_i}}You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.{{/i}}

                  +
                  +<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
                  +  {{_i}}simple collapsible{{/i}}
                  +</button>
                  +
                  +<div id="demo" class="collapse in"> … </div>
                  +
                  + + +
                  + + +

                  {{_i}}Usage{{/i}}

                  + +

                  {{_i}}Via data attributes{{/i}}

                  +

                  {{_i}}Just add data-toggle="collapse" and a data-target to element to automatically assign control of a collapsible element. The data-target attribute accepts a css selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.{{/i}}

                  +

                  {{_i}}To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.{{/i}}

                  + +

                  {{_i}}Via JavaScript{{/i}}

                  +

                  {{_i}}Enable manually with:{{/i}}

                  +
                  $(".collapse").collapse()
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}parent{{/i}}{{_i}}selector{{/i}}false{{_i}}If selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior){{/i}}
                  {{_i}}toggle{{/i}}{{_i}}boolean{{/i}}true{{_i}}Toggles the collapsible element on invocation{{/i}}
                  + + +

                  {{_i}}Methods{{/i}}

                  +

                  .collapse({{_i}}options{{/i}})

                  +

                  {{_i}}Activates your content as a collapsible element. Accepts an optional options object.{{/i}} +

                  +$('#myCollapsible').collapse({
                  +  toggle: false
                  +})
                  +
                  +

                  .collapse('toggle')

                  +

                  {{_i}}Toggles a collapsible element to shown or hidden.{{/i}}

                  +

                  .collapse('show')

                  +

                  {{_i}}Shows a collapsible element.{{/i}}

                  +

                  .collapse('hide')

                  +

                  {{_i}}Hides a collapsible element.{{/i}}

                  + +

                  {{_i}}Events{{/i}}

                  +

                  {{_i}}Bootstrap's collapse class exposes a few events for hooking into collapse functionality.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Event{{/i}}{{_i}}Description{{/i}}
                  {{_i}}show{{/i}}{{_i}}This event fires immediately when the show instance method is called.{{/i}}
                  {{_i}}shown{{/i}}{{_i}}This event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).{{/i}}
                  {{_i}}hide{{/i}} + {{_i}}This event is fired immediately when the hide method has been called.{{/i}} +
                  {{_i}}hidden{{/i}}{{_i}}This event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).{{/i}}
                  +
                  +$('#myCollapsible').on('hidden', function () {
                  +  // {{_i}}do something…{{/i}}
                  +})
                  +
                  + + + + + + + + + +
                  + + + +

                  {{_i}}Example{{/i}}

                  +

                  {{_i}}A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.{{/i}}

                  +
                  + +
                  {{! /example }} +
                  <input type="text" data-provide="typeahead">
                  +

                  You'll want to set autocomplete="off" to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.

                  + +
                  + + +

                  {{_i}}Usage{{/i}}

                  + +

                  {{_i}}Via data attributes{{/i}}

                  +

                  {{_i}}Add data attributes to register an element with typeahead functionality as shown in the example above.{{/i}}

                  + +

                  {{_i}}Via JavaScript{{/i}}

                  +

                  {{_i}}Call the typeahead manually with:{{/i}}

                  +
                  $('.typeahead').typeahead()
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-source="".{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}source{{/i}}{{_i}}array, function{{/i}}[ ]{{_i}}The data source to query against. May be an array of strings or a function. The function is passed two arguments, the query value in the input field and the process callback. The function may be used synchronously by returning the data source directly or asynchronously via the process callback's single argument.{{/i}}
                  {{_i}}items{{/i}}{{_i}}number{{/i}}8{{_i}}The max number of items to display in the dropdown.{{/i}}
                  {{_i}}minLength{{/i}}{{_i}}number{{/i}}{{_i}}1{{/i}}{{_i}}The minimum character length needed before triggering autocomplete suggestions{{/i}}
                  {{_i}}matcher{{/i}}{{_i}}function{{/i}}{{_i}}case insensitive{{/i}}{{_i}}The method used to determine if a query matches an item. Accepts a single argument, the item against which to test the query. Access the current query with this.query. Return a boolean true if query is a match.{{/i}}
                  {{_i}}sorter{{/i}}{{_i}}function{{/i}}{{_i}}exact match,
                  case sensitive,
                  case insensitive{{/i}}
                  {{_i}}Method used to sort autocomplete results. Accepts a single argument items and has the scope of the typeahead instance. Reference the current query with this.query.{{/i}}
                  {{_i}}updater{{/i}}{{_i}}function{{/i}}{{_i}}returns selected item{{/i}}{{_i}}The method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance.{{/i}}
                  {{_i}}highlighter{{/i}}{{_i}}function{{/i}}{{_i}}highlights all default matches{{/i}}{{_i}}Method used to highlight autocomplete results. Accepts a single argument item and has the scope of the typeahead instance. Should return html.{{/i}}
                  + +

                  {{_i}}Methods{{/i}}

                  +

                  .typeahead({{_i}}options{{/i}})

                  +

                  {{_i}}Initializes an input with a typeahead.{{/i}}

                  +
                  + + + + +
                  + + +

                  {{_i}}Example{{/i}}

                  +

                  {{_i}}The subnavigation on the left is a live demo of the affix plugin.{{/i}}

                  + +
                  + +

                  {{_i}}Usage{{/i}}

                  + +

                  {{_i}}Via data attributes{{/i}}

                  +

                  {{_i}}To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.{{/i}}

                  + +
                  <div data-spy="affix" data-offset-top="200">...</div>
                  + +
                  + {{_i}}Heads up!{{/i}} + {{_i}}You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by affix, affix-top, and affix-bottom. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page.{{/i}} +
                  + +

                  {{_i}}Via JavaScript{{/i}}

                  +

                  {{_i}}Call the affix plugin via JavaScript:{{/i}}

                  +
                  $('#navbar').affix()
                  + +

                  {{_i}}Options{{/i}}

                  +

                  {{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset-top="200".{{/i}}

                  + + + + + + + + + + + + + + + + + +
                  {{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
                  {{_i}}offset{{/i}}{{_i}}number | function | object{{/i}}{{_i}}10{{/i}}{{_i}}Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object offset: { x: 10 }. Use a function when you need to dynamically provide an offset (useful for some responsive designs).{{/i}}
                  +
                  + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/scaffolding.mustache b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/scaffolding.mustache new file mode 100644 index 0000000..a6f2f9d --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/docs/templates/pages/scaffolding.mustache @@ -0,0 +1,485 @@ + +
                  +
                  +

                  {{_i}}Scaffolding{{/i}}

                  +

                  {{_i}}Bootstrap is built on responsive 12-column grids, layouts, and components.{{/i}}

                  +
                  +
                  + +
                  + + +
                  + +
                  + + + + +
                  + + +

                  {{_i}}Requires HTML5 doctype{{/i}}

                  +

                  {{_i}}Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.{{/i}}

                  +
                  +<!DOCTYPE html>
                  +<html lang="en">
                  +  ...
                  +</html>
                  +
                  + +

                  {{_i}}Typography and links{{/i}}

                  +

                  {{_i}}Bootstrap sets basic global display, typography, and link styles. Specifically, we:{{/i}}

                  +
                    +
                  • {{_i}}Remove margin on the body{{/i}}
                  • +
                  • {{_i}}Set background-color: white; on the body{{/i}}
                  • +
                  • {{_i}}Use the @baseFontFamily, @baseFontSize, and @baseLineHeight attributes as our typographic base{{/i}}
                  • +
                  • {{_i}}Set the global link color via @linkColor and apply link underlines only on :hover{{/i}}
                  • +
                  +

                  {{_i}}These styles can be found within scaffolding.less.{{/i}}

                  + +

                  {{_i}}Reset via Normalize{{/i}}

                  +

                  {{_i}}With Bootstrap 2, the old reset block has been dropped in favor of Normalize.css, a project by Nicolas Gallagher and Jonathan Neal that also powers the HTML5 Boilerplate. While we use much of Normalize within our reset.less, we have removed some elements specifically for Bootstrap.{{/i}}

                  + +
                  + + + + + +
                  + + +

                  {{_i}}Live grid example{{/i}}

                  +

                  {{_i}}The default Bootstrap grid system utilizes 12 columns, making for a 940px wide container without responsive features enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.{{/i}}

                  +
                  +
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  +
                  +
                  2
                  +
                  3
                  +
                  4
                  +
                  +
                  +
                  4
                  +
                  5
                  +
                  +
                  +
                  9
                  +
                  +
                  + +

                  {{_i}}Basic grid HTML{{/i}}

                  +

                  {{_i}}For a simple two column layout, create a .row and add the appropriate number of .span* columns. As this is a 12-column grid, each .span* spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).{{/i}}

                  +
                  +<div class="row">
                  +  <div class="span4">...</div>
                  +  <div class="span8">...</div>
                  +</div>
                  +
                  +

                  {{_i}}Given this example, we have .span4 and .span8, making for 12 total columns and a complete row.{{/i}}

                  + +

                  {{_i}}Offsetting columns{{/i}}

                  +

                  {{_i}}Move columns to the right using .offset* classes. Each class increases the left margin of a column by a whole column. For example, .offset4 moves .span4 over four columns.{{/i}}

                  +
                  +
                  +
                  4
                  +
                  3 offset 2
                  +
                  +
                  +
                  3 offset 1
                  +
                  3 offset 2
                  +
                  +
                  +
                  6 offset 3
                  +
                  +
                  +
                  +<div class="row">
                  +  <div class="span4">...</div>
                  +  <div class="span3 offset2">...</div>
                  +</div>
                  +
                  + +

                  {{_i}}Nesting columns{{/i}}

                  +

                  {{_i}}To nest your content with the default grid, add a new .row and set of .span* columns within an existing .span* column. Nested rows should include a set of columns that add up to the number of columns of its parent.{{/i}}

                  +
                  +
                  + {{_i}}Level 1 column{{/i}} +
                  +
                  + {{_i}}Level 2{{/i}} +
                  +
                  + {{_i}}Level 2{{/i}} +
                  +
                  +
                  +
                  +
                  +<div class="row">
                  +  <div class="span9">
                  +    {{_i}}Level 1 column{{/i}}
                  +    <div class="row">
                  +      <div class="span6">{{_i}}Level 2{{/i}}</div>
                  +      <div class="span3">{{_i}}Level 2{{/i}}</div>
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  +
                  + + + + +
                  + + +

                  {{_i}}Live fluid grid example{{/i}}

                  +

                  {{_i}}The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.{{/i}}

                  +
                  +
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  1
                  +
                  +
                  +
                  4
                  +
                  4
                  +
                  4
                  +
                  +
                  +
                  4
                  +
                  8
                  +
                  +
                  +
                  6
                  +
                  6
                  +
                  +
                  +
                  12
                  +
                  +
                  + +

                  {{_i}}Basic fluid grid HTML{{/i}}

                  +

                  {{_i}}Make any row "fluid" by changing .row to .row-fluid. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.{{/i}}

                  +
                  +<div class="row-fluid">
                  +  <div class="span4">...</div>
                  +  <div class="span8">...</div>
                  +</div>
                  +
                  + +

                  {{_i}}Fluid offsetting{{/i}}

                  +

                  {{_i}}Operates the same way as the fixed grid system offsetting: add .offset* to any column to offset by that many columns.{{/i}}

                  +
                  +
                  +
                  4
                  +
                  4 offset 4
                  +
                  +
                  +
                  3 offset 3
                  +
                  3 offset 3
                  +
                  +
                  +
                  6 offset 6
                  +
                  +
                  +
                  +<div class="row-fluid">
                  +  <div class="span4">...</div>
                  +  <div class="span4 offset2">...</div>
                  +</div>
                  +
                  + +

                  {{_i}}Fluid nesting{{/i}}

                  +

                  {{_i}}Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.{{/i}}

                  +
                  +
                  + {{_i}}Fluid 12{{/i}} +
                  +
                  + {{_i}}Fluid 6{{/i}} +
                  +
                  + {{_i}}Fluid 6{{/i}} +
                  +
                  + {{_i}}Fluid 6{{/i}} +
                  +
                  +
                  +
                  + {{_i}}Fluid 6{{/i}} +
                  +
                  +
                  +
                  +
                  +<div class="row-fluid">
                  +  <div class="span12">
                  +    {{_i}}Fluid 12{{/i}}
                  +    <div class="row-fluid">
                  +      <div class="span6">
                  +        {{_i}}Fluid 6{{/i}}
                  +        <div class="row-fluid">
                  +          <div class="span6">{{_i}}Fluid 6{{/i}}</div>
                  +          <div class="span6">{{_i}}Fluid 6{{/i}}</div>
                  +        </div>
                  +      </div>
                  +      <div class="span6">{{_i}}Fluid 6{{/i}}</div>
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  + +
                  + + + + + +
                  + + +

                  {{_i}}Fixed layout{{/i}}

                  +

                  {{_i}}Provides a common fixed-width (and optionally responsive) layout with only <div class="container"> required.{{/i}}

                  +
                  +
                  +
                  +
                  +<body>
                  +  <div class="container">
                  +    ...
                  +  </div>
                  +</body>
                  +
                  + +

                  {{_i}}Fluid layout{{/i}}

                  +

                  {{_i}}Create a fluid, two-column page with <div class="container-fluid">—great for applications and docs.{{/i}}

                  +
                  +
                  +
                  +
                  +
                  +<div class="container-fluid">
                  +  <div class="row-fluid">
                  +    <div class="span2">
                  +      <!--{{_i}}Sidebar content{{/i}}-->
                  +    </div>
                  +    <div class="span10">
                  +      <!--{{_i}}Body content{{/i}}-->
                  +    </div>
                  +  </div>
                  +</div>
                  +
                  +
                  + + + + + +
                  + + + {{! Enabling }} +

                  {{_i}}Enabling responsive features{{/i}}

                  +

                  {{_i}}Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <head> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.{{/i}}

                  +
                  +<meta name="viewport" content="width=device-width, initial-scale=1.0">
                  +<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
                  +
                  +

                  {{_i}}Heads up!{{/i}} {{_i}} Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.{{/i}}

                  + + {{! About }} +

                  {{_i}}About responsive Bootstrap{{/i}}

                  + Responsive devices +

                  {{_i}}Media queries allow for custom CSS based on a number of conditions—ratios, widths, display type, etc—but usually focuses around min-width and max-width.{{/i}}

                  +
                    +
                  • {{_i}}Modify the width of column in our grid{{/i}}
                  • +
                  • {{_i}}Stack elements instead of float wherever necessary{{/i}}
                  • +
                  • {{_i}}Resize headings and text to be more appropriate for devices{{/i}}
                  • +
                  +

                  {{_i}}Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.{{/i}}

                  + + {{! Supported }} +

                  {{_i}}Supported devices{{/i}}

                  +

                  {{_i}}Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Label{{/i}}{{_i}}Layout width{{/i}}{{_i}}Column width{{/i}}{{_i}}Gutter width{{/i}}
                  {{_i}}Large display{{/i}}1200px and up70px30px
                  {{_i}}Default{{/i}}980px and up60px20px
                  {{_i}}Portrait tablets{{/i}}768px and above42px20px
                  {{_i}}Phones to tablets{{/i}}767px and below{{_i}}Fluid columns, no fixed widths{{/i}}
                  {{_i}}Phones{{/i}}480px and below{{_i}}Fluid columns, no fixed widths{{/i}}
                  +
                  +/* {{_i}}Large desktop{{/i}} */
                  +@media (min-width: 1200px) { ... }
                  +
                  +/* {{_i}}Portrait tablet to landscape and desktop{{/i}} */
                  +@media (min-width: 768px) and (max-width: 979px) { ... }
                  +
                  +/* {{_i}}Landscape phone to portrait tablet{{/i}} */
                  +@media (max-width: 767px) { ... }
                  +
                  +/* {{_i}}Landscape phones and down{{/i}} */
                  +@media (max-width: 480px) { ... }
                  +
                  + + + {{! Responsive utility classes }} +

                  {{_i}}Responsive utility classes{{/i}}

                  +

                  {{_i}}For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in responsive.less.{{/i}}

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  {{_i}}Class{{/i}}{{_i}}Phones 767px and below{{/i}}{{_i}}Tablets 979px to 768px{{/i}}{{_i}}Desktops Default{{/i}}
                  .visible-phone{{_i}}Visible{{/i}}
                  .visible-tablet{{_i}}Visible{{/i}}
                  .visible-desktop{{_i}}Visible{{/i}}
                  .hidden-phone{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
                  .hidden-tablet{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
                  .hidden-desktop{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
                  + +

                  {{_i}}When to use{{/i}}

                  +

                  {{_i}}Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.{{/i}}

                  + +

                  {{_i}}Responsive utilities test case{{/i}}

                  +

                  {{_i}}Resize your browser or load on different devices to test the above classes.{{/i}}

                  +

                  {{_i}}Visible on...{{/i}}

                  +

                  {{_i}}Green checkmarks indicate that class is visible in your current viewport.{{/i}}

                  +
                    +
                  • {{_i}}Phone{{/i}}✔ {{_i}}Phone{{/i}}
                  • +
                  • {{_i}}Tablet{{/i}}✔ {{_i}}Tablet{{/i}}
                  • +
                  • {{_i}}Desktop{{/i}}✔ {{_i}}Desktop{{/i}}
                  • +
                  +

                  {{_i}}Hidden on...{{/i}}

                  +

                  {{_i}}Here, green checkmarks indicate that class is hidden in your current viewport.{{/i}}

                  +
                    +
                  • {{_i}}Phone{{/i}}✔ {{_i}}Phone{{/i}}
                  • +
                  • {{_i}}Tablet{{/i}}✔ {{_i}}Tablet{{/i}}
                  • +
                  • {{_i}}Desktop{{/i}}✔ {{_i}}Desktop{{/i}}
                  • +
                  + +
                  + + + +
                  {{! /span9 }} +
                  {{! row}} + +
                  {{! /.container }} diff --git a/src/main/webapp/static/bootstrap/2.3.1/font/FontAwesome.otf b/src/main/webapp/static/bootstrap/2.3.1/font/FontAwesome.otf new file mode 100644 index 0000000..7012545 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/font/FontAwesome.otf differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.eot b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.eot new file mode 100644 index 0000000..0662cb9 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.eot differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.svg b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.svg new file mode 100644 index 0000000..2edb4ec --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.svg @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.ttf b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.ttf new file mode 100644 index 0000000..d365924 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.ttf differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.woff b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.woff new file mode 100644 index 0000000..b9bd17e Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/font/fontawesome-webfont.woff differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings-white.png b/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings-white.png new file mode 100644 index 0000000..3bf6484 Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings-white.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings.png b/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings.png new file mode 100644 index 0000000..fc76a2c Binary files /dev/null and b/src/main/webapp/static/bootstrap/2.3.1/img/glyphicons-halflings.png differ diff --git a/src/main/webapp/static/bootstrap/2.3.1/js/bootstrap.js b/src/main/webapp/static/bootstrap/2.3.1/js/bootstrap.js new file mode 100644 index 0000000..c298ee4 --- /dev/null +++ b/src/main/webapp/static/bootstrap/2.3.1/js/bootstrap.js @@ -0,0 +1,2276 @@ +/* =================================================== + * bootstrap-transition.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) { + if (e.which == 27) $parent.find(toggle).focus() + return $this.click() + } + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = selector && $(selector) + + if (!$parent || !$parent.length) $parent = $this.parent() + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api', clearMenus) + .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown-menu', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery); +/* ========================================================= + * bootstrap-modal.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element.show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.removeBackdrop() + that.$element.trigger('hidden') + }) + } + + , removeBackdrop: function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('' ); + return html.join( '' ); + }; + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + }, + + /** + * A single checkbox with a label on the right. + * @constructor + * @extends CKEDITOR.ui.dialog.uiElement + * @example + * @param {CKEDITOR.dialog} dialog + * Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + *
                    + *
                  • checked (Optional) Whether the checkbox is checked + * on instantiation. Defaults to false.
                  • + *
                  • validate (Optional) The validation function.
                  • + *
                  • label (Optional) The checkbox label.
                  • + *
                  + * @param {Array} htmlList + * List of HTML code to output to. + */ + checkbox : function( dialog, elementDefinition, htmlList ) + { + if ( arguments.length < 3 ) + return; + + var _ = initPrivateObject.call( this, elementDefinition, { 'default' : !!elementDefinition[ 'default' ] } ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + /** @ignore */ + var innerHTML = function() + { + var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, + { + id : elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' + }, true ), + html = []; + + var labelId = CKEDITOR.tools.getNextId() + '_label'; + var attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox', 'aria-labelledby' : labelId }; + cleanInnerDefinition( myDefinition ); + if ( elementDefinition[ 'default' ] ) + attributes.checked = 'checked'; + + if ( typeof myDefinition.inputStyle != 'undefined' ) + myDefinition.style = myDefinition.inputStyle; + + _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes ); + html.push( ' ' ); + return html.join( '' ); + }; + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML ); + }, + + /** + * A group of radio buttons. + * @constructor + * @example + * @extends CKEDITOR.ui.dialog.labeledElement + * @param {CKEDITOR.dialog} dialog + * Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + *
                    + *
                  • default (Required) The default value.
                  • + *
                  • validate (Optional) The validation function.
                  • + *
                  • items (Required) An array of options. Each option + * is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value' + * is missing, then the value would be assumed to be the same as the + * description.
                  • + *
                  + * @param {Array} htmlList + * List of HTML code to output to. + */ + radio : function( dialog, elementDefinition, htmlList ) + { + if ( arguments.length < 3) + return; + + initPrivateObject.call( this, elementDefinition ); + if ( !this._['default'] ) + this._['default'] = this._.initValue = elementDefinition.items[0][1]; + if ( elementDefinition.validate ) + this.validate = elementDefinition.valdiate; + var children = [], me = this; + + /** @ignore */ + var innerHTML = function() + { + var inputHtmlList = [], html = [], + commonAttributes = { 'class' : 'cke_dialog_ui_radio_item', 'aria-labelledby' : this._.labelId }, + commonName = elementDefinition.id ? elementDefinition.id + '_radio' : CKEDITOR.tools.getNextId() + '_radio'; + for ( var i = 0 ; i < elementDefinition.items.length ; i++ ) + { + var item = elementDefinition.items[i], + title = item[2] !== undefined ? item[2] : item[0], + value = item[1] !== undefined ? item[1] : item[0], + inputId = CKEDITOR.tools.getNextId() + '_radio_input', + labelId = inputId + '_label', + inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition, + { + id : inputId, + title : null, + type : null + }, true ), + labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition, + { + title : title + }, true ), + inputAttributes = + { + type : 'radio', + 'class' : 'cke_dialog_ui_radio_input', + name : commonName, + value : value, + 'aria-labelledby' : labelId + }, + inputHtml = []; + if ( me._['default'] == value ) + inputAttributes.checked = 'checked'; + cleanInnerDefinition( inputDefinition ); + cleanInnerDefinition( labelDefinition ); + + if ( typeof inputDefinition.inputStyle != 'undefined' ) + inputDefinition.style = inputDefinition.inputStyle; + + children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); + inputHtml.push( ' ' ); + new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { id : labelId, 'for' : inputAttributes.id }, + item[0] ); + inputHtmlList.push( inputHtml.join( '' ) ); + } + new CKEDITOR.ui.dialog.hbox( dialog, children, inputHtmlList, html ); + return html.join( '' ); + }; + + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + this._.children = children; + }, + + /** + * A button with a label inside. + * @constructor + * @example + * @extends CKEDITOR.ui.dialog.uiElement + * @param {CKEDITOR.dialog} dialog + * Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + *
                    + *
                  • label (Required) The button label.
                  • + *
                  • disabled (Optional) Set to true if you want the + * button to appear in disabled state.
                  • + *
                  + * @param {Array} htmlList + * List of HTML code to output to. + */ + button : function( dialog, elementDefinition, htmlList ) + { + if ( !arguments.length ) + return; + + if ( typeof elementDefinition == 'function' ) + elementDefinition = elementDefinition( dialog.getParentEditor() ); + + initPrivateObject.call( this, elementDefinition, { disabled : elementDefinition.disabled || false } ); + + // Add OnClick event to this input. + CKEDITOR.event.implementOn( this ); + + var me = this; + + // Register an event handler for processing button clicks. + dialog.on( 'load', function( eventInfo ) + { + var element = this.getElement(); + + (function() + { + element.on( 'click', function( evt ) + { + me.fire( 'click', { dialog : me.getDialog() } ); + evt.data.preventDefault(); + } ); + + element.on( 'keydown', function( evt ) + { + if ( evt.data.getKeystroke() in { 32:1 } ) + { + me.click(); + evt.data.preventDefault(); + } + } ); + })(); + + element.unselectable(); + }, this ); + + var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); + delete outerDefinition.style; + + var labelId = CKEDITOR.tools.getNextId() + '_label'; + CKEDITOR.ui.dialog.uiElement.call( + this, + dialog, + outerDefinition, + htmlList, + 'a', + null, + { + style : elementDefinition.style, + href : 'javascript:void(0)', + title : elementDefinition.label, + hidefocus : 'true', + 'class' : elementDefinition['class'], + role : 'button', + 'aria-labelledby' : labelId + }, + '' + + CKEDITOR.tools.htmlEncode( elementDefinition.label ) + + '' ); + }, + + /** + * A select box. + * @extends CKEDITOR.ui.dialog.uiElement + * @example + * @constructor + * @param {CKEDITOR.dialog} dialog + * Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + *
                    + *
                  • default (Required) The default value.
                  • + *
                  • validate (Optional) The validation function.
                  • + *
                  • items (Required) An array of options. Each option + * is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value' + * is missing, then the value would be assumed to be the same as the + * description.
                  • + *
                  • multiple (Optional) Set this to true if you'd like + * to have a multiple-choice select box.
                  • + *
                  • size (Optional) The number of items to display in + * the select box.
                  • + *
                  + * @param {Array} htmlList + * List of HTML code to output to. + */ + select : function( dialog, elementDefinition, htmlList ) + { + if ( arguments.length < 3 ) + return; + + var _ = initPrivateObject.call( this, elementDefinition ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + _.inputId = CKEDITOR.tools.getNextId() + '_select'; + /** @ignore */ + var innerHTML = function() + { + var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, + { + id : elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' + }, true ), + html = [], + innerHTML = [], + attributes = { 'id' : _.inputId, 'class' : 'cke_dialog_ui_input_select', 'aria-labelledby' : this._.labelId }; + + // Add multiple and size attributes from element definition. + if ( elementDefinition.size != undefined ) + attributes.size = elementDefinition.size; + if ( elementDefinition.multiple != undefined ) + attributes.multiple = elementDefinition.multiple; + + cleanInnerDefinition( myDefinition ); + for ( var i = 0, item ; i < elementDefinition.items.length && ( item = elementDefinition.items[i] ) ; i++ ) + { + innerHTML.push( '